Skip to main content

Events

Monitor specific event and activity data from your assets in near real-time using event streams. Streaming network data includes event data for the following events:

  • BGP State Events - When configuring BGP and performing actions such as disable, enable, or reset on the portal, BGP events related to FCR connections will be generated. These events include BGP IPV4/IPv6 Idle, Connected, or Established states.

  • Route Quota Usage Events - FCR and FCR-related connections can learn IPV4/IPv6 routes up to 90% or 100% of the FCR Package Type. These routes are typically learned based on the IPV4/IPv6 addresses configured in BGP.

  • Port and Connection Up/Down Events - If an Equinix Port goes down, a Port and Connection Down Event is triggered. Once the Equinix Port recovers, a Port and Connection Up Event is sent.

  • Fabric, Network Edge Asset, Network Edge, Equinix Precision Time, and Equinix Internet Access Lifecycle Provisioning Events – Track the service provisioning of your assets, such as ports, connections, FCRs, Virtual Devices, Equinix Precision Time, Equinix Internet Access, etc. Any status change to your asset, including provisioning, deprovisioning, and failures, results in an event being sent.

  • Organization Events - These events are from access manager and resource manager to inform organization administrators of the change events happening within the organization such as adding or removing roles for users.

Event Format

Our Events use the CloudEvents specification to format for all of our event data. All of our event data schemas and data types are published in the /equinix/equinix-cloudevents GitHub repository.

Viewing Events

You can view events for an individual port, virtual connection, or Fabric Cloud Router asset in the Customer Portal.

  1. Sign in to the Customer Portal > Fabric Dashboard.

  2. Navigate to your Port Inventory, your Connections Inventory, or your Fabric Cloud Router Inventory.

  3. Select the port, virtual connection, or Fabric Cloud Router whose events you want to view.

  4. From the asset's detail page, click Observability.

Viewing Events from the API

You can retrieve events for individual assets from the Equinix API. In order for the event data to be available in the API, you have to first create a stream and attach assets to that stream.

note

Each of the call requires read permissions for the asset. Currently, the supported asset types for cloud event calls are for asset types ports, connections, and routers.

The current pagination limit is set to 100 for GET /fabric/v4/{asset}/{assetId}/cloudevents and POST /fabric/v4/cloudevents/search.

Additionally, the POST /fabric/v4/cloudevents/search endpoint requires the subject to have a mandatory first level resource UUID.

Get Events

To get the Cloud Events for an asset, send a GET request to the /fabric/v4/{asset}/{assetId}/cloudevents endpoint. Specify the asset type and ID in the path. Use the optional fromDateTime and toDateTime query parameters to narrow your results to a specific time period.

Sample cURL Request:

curl -X GET 'https://api.equinix.com/fabric/v4/routers/<routerId>/cloudevents?fromDateTime=2025-04-15T17:31:00.000Z&toDateTime=2025-05-15T17:31:00.000Z' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>'

Sample Response:

{
"pagination": {
"offset": 0,
"limit": 20,
"total": 4,
"next": null,
"previous": null
},
"data": [
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "7e5c0bbe-98e7-4486-b760-fdc39807da5e",
"time": "2025-04-30T01:43:13Z",
"type": "equinix.fabric.router.state.deprovisioned",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "system",
"authid": "equinix",
"data": {
"message": "router named FCR-NAME state changed to deprovisioned",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "DEPROVISIONED"
},
"auth": {
"type": "system",
"id": "equinix"
}
}
},
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "a6dc56f2-af4e-40c0-9910-4850459f8559",
"time": "2025-04-30T01:43:11Z",
"type": "equinix.fabric.router.state.deprovisioning",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "user",
"authid": "12345",
"data": {
"message": "router named FCR-NAME state changed to deprovisioning",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "DEPROVISIONING"
},
"auth": {
"type": "user",
"id": "12345",
"name": "user1 user1",
"email": "user1@test.com"
}
}
},
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "1e4b57d5-97e4-4370-b675-625cd0ed0a4e",
"time": "2025-04-30T01:43:06Z",
"type": "equinix.fabric.router.state.provisioned",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "system",
"authid": "equinix",
"data": {
"message": "Router named FCR-NAME successfully provisioned",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "PROVISIONED"
},
"auth": {
"type": "system",
"id": "equinix"
}
}
},
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "1aa36503-c8f8-4c9c-a52c-06ed67f92a2d",
"time": "2025-04-30T01:43:05Z",
"type": "equinix.fabric.router.state.provisioning",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "user",
"authid": "12345",
"data": {
"message": "router named FCR-NAME state changed to provisioning",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "PROVISIONING"
},
"auth": {
"type": "user",
"id": "12345",
"name": "user1 user1",
"email": "user1@test.com"
}
}
}
]
}

Search Events

To search the Cloud Events for an asset, send a POST request to the /fabric/v4/cloudevents/search endpoint. Specify your search criteria in the body of the request.

Sample cURL Request:

curl -X GET 'https://api.equinix.com/fabric/v4/cloudevents/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"filter": {
"and": [
{
"property": "/type",
"operator": "IN",
"values": [
"equinix.fabric.router.*"
]
},
{
"property": "/subject",
"operator": "IN",
"values": [
"/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d*"
]
},
{
"property": "/time",
"operator": "BETWEEN",
"values": [
"2025-04-15T17:31:00.000Z",
"2025-05-15T17:31:00.000Z"
]
}
]
},
"pagination": {
"offset": 0,
"limit": 20
}
}'

A complete list of searchable parameters is available in the API Reference.

Sample Response:

{
"pagination": {
"offset": 0,
"limit": 20,
"total": 4,
"next": null,
"previous": null
},
"data": [
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "7e5c0bbe-98e7-4486-b760-fdc39807da5e",
"time": "2025-04-30T01:43:13Z",
"type": "equinix.fabric.router.state.deprovisioned",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "system",
"authid": "equinix",
"data": {
"message": "router named FCR-NAME state changed to deprovisioned",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "DEPROVISIONED"
},
"auth": {
"type": "system",
"id": "equinix"
}
}
},
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "a6dc56f2-af4e-40c0-9910-4850459f8559",
"time": "2025-04-30T01:43:11Z",
"type": "equinix.fabric.router.state.deprovisioning",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "user",
"authid": "12345",
"data": {
"message": "router named FCR-NAME state changed to deprovisioning",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "DEPROVISIONING"
},
"auth": {
"type": "user",
"id": "12345",
"name": "user1 user1",
"email": "user1@test.com"
}
}
},
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "1e4b57d5-97e4-4370-b675-625cd0ed0a4e",
"time": "2025-04-30T01:43:06Z",
"type": "equinix.fabric.router.state.provisioned",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "system",
"authid": "equinix",
"data": {
"message": "Router named FCR-NAME successfully provisioned",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "PROVISIONED"
},
"auth": {
"type": "system",
"id": "equinix"
}
}
},
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "1aa36503-c8f8-4c9c-a52c-06ed67f92a2d",
"time": "2025-04-30T01:43:05Z",
"type": "equinix.fabric.router.state.provisioning",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "user",
"authid": "12345",
"data": {
"message": "router named FCR-NAME state changed to provisioning",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "PROVISIONING"
},
"auth": {
"type": "user",
"id": "12345",
"name": "user1 user1",
"email": "user1@test.com"
}
}
}
]
}

Get Event Details

To get the details of a specified Cloud Event, send a GET request to the /fabric/v4/cloudevents/<cloudEventId> endpoint.

Sample cURL Request:

curl -X GET 'https://api.equinix.com/fabric/v4/cloudevents/<cloudEventId>' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>'

Sample Response:

{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/events",
"id": "a6dc56f2-af4e-40c0-9910-4850459f8559",
"time": "2025-04-30T01:43:11Z",
"type": "equinix.fabric.router.state.deprovisioning",
"subject": "/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "<projectId>",
"authtype": "user",
"authid": "12345",
"data": {
"message": "router named FCR-NAME state changed to deprovisioning",
"resource": {
"href": "https://api.equinix.com/fabric/v4/routers/89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"uuid": "89b6af8b-21b9-4e20-ab88-2e6e89b68e1d",
"type": "XF_ROUTER",
"name": "FCR-NAME",
"state": "DEPROVISIONING"
},
"auth": {
"type": "user",
"id": "12345",
"name": "user1 user1",
"email": "user1@test.com"
}
}
}

Receiving Events in a Sink Integration

Once you have created a stream, and added assets to that stream, you can create a subscription to have events sent to your third-party data collector of choice by subscribing to the stream.

Once you create a subscription, your sink receives Events whenever they occur.

For example, if you attached a project to your stream you can view asset lifecycle events whenever you create or delete an asset. So if you sign in to the Customer Portal and create a Port, Connection, Service Token, Network, etc., your sink receives an event:

{ [-]
_source: https://api.equinix.com/fabric/v4/cloudevents
data: { [-]
message: Router named router-name state changed to provisioning
resource:[+]
}
}
equinixproject: 377533000114703
id: d2bb7d5d-3e7b-4638-9023-acdb08cc38a4
severitynumber: 9
severitytext: INFO
subject: /fabric/v4/routers/3cbd8a7f-6878-4492-88a9-1a8be65cc461
time: 2025-02-04T01:43:45Z
type: equinix.fabric.router.state.provisioning

Show as raw text
host = http-inputs-<host>.splunkcloud.com
source = Equinix
source = https://api.equinix.com/fabric/v4/cloudevents

Another example, for your FCR to Port Connection configured with Direct and BGP routing protocol and you enable or disable BGP, your sink receives an event.

Once your subscriptions are active, you can go to your data collector and search using index="<name_of_splunk_hec>". This search should return the relevant Event data collected by Splunk.

{ [-]  
   _source: https://api.equinix.com/fabric/v4/cloudevents
   equinixmessage: Virtual port status changed to UP
   id: 5345e011-4478-484b-beb4-38c940ff2f9e
   severitynumber: 9
   severitytext: INFO
   subject: /fabric/v4/ports/c4d85dbe-f965-9659-f7e0-306a5c00af26
   time: 2024-07-26T12:31:53.975Z
   type: equinix.fabric.port.status.up
}
Show as raw text
host = http-inputs-equinix-digin.splunkcloud.com
source = Equinix
sourcetype = _json