Managing Subscriptions
Use the Subscription Management APIs to manage the delivery of telemetry data to your data collector.
Prerequisites
-
Before calling the Subscription Management APIs, refer to Data Collector Setup to set up a sink type of your choice.
-
To create subscriptions, you must have the
Fabric Stream Subscription Manager(STREAM_SUBSCRIPTION PERMISSION CREATE AND READ) role. Contact your Company Administrator or IAM Administrator to manage access and roles. -
If you're using the API, submit your user credentials, Client ID, and Client Secret for OAuth2 authentication. Refer to API Authentication for more information on how to authenticate your requests to the Equinix API.
Creating a Subscription
- Portal
- API
The portal supports creating and managing subscriptions to Splunk, Datadog, Microsoft Teams, and PagerDuty.
-
Log in to the Customer Portal > Fabric Dashboard.
-
From the Observability menu, select Data Streams.

-
From the Actions drop-down menu, select Add Subscriptions.

-
Select the data collector for your Subscription from the drop-down menu. Refer to the examples below for the supported data collectors.
To create a subscription, send a POST request to the /fabric/v4/streams/<streamId>/subscriptions endpoint. Specify the Stream ID in the stream object and your data collector's settings and authentication information in the sink object in the body of the request.
Refer to the examples below to create a stream subscription for the supported data collectors.
The Subscription API URI/host values only support HTTPS and do not support self-signed certificates.
Datadog
- Portal
- API
- Event
- Metric
On the Add Subscription page, enter your Datadog information, including:
- a Subscription Name
- your Datadog Host URL
- your Datadog API key
- your Datadog Application key
- and provide a description (optional)

Use the Datadog site reference table to find your site parameter for the sink.host parameter.
Sample cURL Request:
curl -X 'POST' 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<datadog_subscription_name>",
"description": "<datadog_subscription_desc>",
"sink": {
"host": "https://<datadog_site_parameter>",
"type": "DATADOG",
"credential": {
"type": "API_KEY",
"apiKey": "<datadog_api_key>"
},
"settings": {
"applicationKey": "<datadog_application_key>"
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/1a39648d-c407-4470-b08b-454965f31bf4",
"uuid": "1a39648d-c407-4470-b08b-454965f31bf4",
"type": "STREAM_SUBSCRIPTION",
"name": "datadog_subscription",
"description": "datadog_subscription_desc",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"host": "https://<datadog_site_parameter>",
"type": "DATADOG",
"credential": {
"type": "API_KEY",
"apiKey": "<encrypted_datadog_api_key>"
},
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5,
"settings": {
"metricUri": "https://<datadog_site_parameter>/api/v2/series",
"eventUri": "https://<datadog_site_parameter>/api/v1/events"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-10-07T06:48:45.861755Z",
"updatedDateTime": "2024-10-07T06:48:51.514474Z"
}
}
---
date_happened: 1719864741 # in seconds
source_type_name: Equinix
aggregation_key: NCAB543WC4lrLpET8nLX4Vd8
title: 'Virtual port status changed to Up'
status: info # INFO->info, WARN -> warn, ERROR->error, CRITICAL->warn, FATAL->error, default: info
text: "{\"cloudevent\":{\"specversion\":\"1.0\",\"source\":\"https://api.equinix.com/fabric/v4/cloudevents\",\"id\":\"6c573287-9914-4202-8b6d-2d15e7da04b8\",\"type\":\"equinix.fabric.port.status.up\",\"subject\":\"/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688\",\"time\":\"2024-07-01T20:12:21.306Z\",\"severitynumber\":9,\"severitytext\":\"INFO\",\"equinixalert\":\"clear/NCAB543WC4lrLpET8nLX4Vd8\",\"equinixproject\":\"123\",\"data\":{\"message\":\"Virtual port status changed to Up\",\"resource\":{}}}}"
---
series:
- type: 3 # 0(unspecified), 1(count), 2(rate), 3(gauge)
metric: equinix.fabric.port.bandwidth_rx.usage
resources:
- type: subject
name: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
- type: equinixproject
name: 123
unit: bit/s
points:
- timestamp: 1719889941
value: 440023
- type: 1
metric: equinix.fabric.port.packets_erred_tx.count
resources:
- type: subject
name: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
- type: equinixproject
name: 123
unit: packet
interval: 300 # in seconds
points:
- timestamp: 1719889941
value: 10
Google PubSub
- Portal
- API
On the Add Subscription page, enter your Google Cloud PubSub information, including:
- A Subscription Name
- The Google Cloud PubSub Access Token
- The Google Cloud PubSub Subscription URI
- And provide a description (optional)

curl -X POST 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<gcp_pubsub_subscription_name>",
"description": "<gcp_pubsub_subscription_desc>",
"sink": {
"uri": "https://pubsub.googleapis.com/v1/projects/<gcp_project_name>/topics/<gcp_topic_name>:publish",
"type": "GOOGLE_PUBSUB",
"credential": {
"type": "ACCESS_TOKEN",
"accessToken": "<encoded_base64_service_account_json>"
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/12190e7d-a486-4a77-ba56-fecdab616837",
"uuid": "12190e7d-a486-4a77-ba56-fecdab616837",
"type": "STREAM_SUBSCRIPTION",
"name": "<gcp_pubsub_subscription_name>",
"description": "<gcp_pubsub_subscription_desc>",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"uri": "https://pubsub.googleapis.com/v1/projects/<gcp_project_name>/topics/<gcp_topic_name>:publish",
"type": "GOOGLE_PUBSUB",
"credential": {
"type": "ACCESS_TOKEN"
},
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2025-04-28T21:23:02.006057019Z"
}
}
Grafana Webhook
- Portal
- API
- CloudEvent
- CloudEvents Metric
- OpenTelemetry Log
- OpenTelemetry Metric
On the Add Subscription page, enter your Grafana information, including:
- A Subscription name.
- The Grafana Metrics URI.
- The Grafana Events URI.
- Your Grafana API Key.
- An optional description.

Sample cURL Request:
curl -X POST 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<webhook_subscription_name>",
"description": "<webhook_subscription_desc>",
"enabled": true,
"sink": {
"type": "WEBHOOK"
"settings": {
"eventUri": "https://<grafana_oltp_endpoint>/otlp/v1/logs",
"metricUri": "https://<grafana_oltp_endpoint>/otlp/v1/metrics",
"format": "OPENTELEMETRY"
},
"credential": {
"type": "API_KEY",
"apiKey": "<granfana_instance_id>:<grafana_api_key>",
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/1a39648d-c407-4470-b08b-454965f31bf4",
"uuid": "1a39648d-c407-4470-b08b-454965f31bf4",
"type": "STREAM_SUBSCRIPTION",
"name": "datadog_subscription",
"description": "datadog_subscription_desc",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"host": "https://<datadog_site_parameter>",
"type": "DATADOG",
"credential": {
"type": "API_KEY",
"apiKey": "<encrypted_datadog_api_key>"
},
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5,
"settings": {
"metricUri": "https://<datadog_site_parameter>/api/v2/series",
"eventUri": "https://<datadog_site_parameter>/api/v1/events"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-10-07T06:48:45.861755Z",
"updatedDateTime": "2024-10-07T06:48:51.514474Z"
}
}
---
specversion: '1.0'
source: https://api.equinix.com/fabric/v4/cloudevents
id: 6c573287-9914-4202-8b6d-2d15e7da04b8
type: equinix.fabric.metric
subject: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
time: '2024-07-01T20:12:21.306Z'
severitynumber: 9
severitytext: INFO
equinixproject: 123
dataschema: https://github.com/Fabric/.../ApiConfigEventData.json
datacontenttype: application/json
data:
message: New metrics collected
resource:
href: https://api.equinix.com/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
uuid: 956a86fb-d03d-436c-8d5d-30d1f51f7688
name: my-test-port
description: port description
metrics:
- type: GAUGE
name: equinix.fabric.port.bandwidth_rx.usage
description: Port inbound bandwidth utilization
unit: bit/s
datapoints:
- endDateTime: '2024-07-01T20:12:21.000Z'
value: 440023
- type: SUM
name: equinix.fabric.port.packets_erred_tx.count
description: Port error packets
interval: PT5M
unit: packet
datapoints:
- endDateTime: '2024-07-01T20:12:21.000Z'
value: 10
{
"specversion": "1.0",
"source": "https://api.equinix.com/fabric/v4/cloudevents",
"id": "16c7e20a-d147-40c4-81ad-f60d25548aad",
"time": "2026-06-24T20:20:59.000Z",
"type": "equinix.fabric.metric",
"subject": "/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688",
"dataschema": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/MetricEvent.json",
"datacontenttype": "application/json",
"severitynumber": "9",
"severitytext": "INFO",
"equinixproject": "123",
"data": {
"message": "Metrics collected",
"resource": {
"href": "https://api.equinix.com/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688",
"uuid": "956a86fb-d03d-436c-8d5d-30d1f51f7688",
"type": "XF_PORT",
"state": "PROVISIONED"
},
"metrics": [
{
"type": "GAUGE",
"name": "equinix.fabric.port.bandwidth_rx.usage",
"unit": "bit/s",
"datapoints": [
{
"endDateTime": "2026-06-24T20:20:59.000Z",
"value": 179
}
]
},
{
"type": "GAUGE",
"name": "equinix.fabric.port.bandwidth_tx.usage",
"unit": "bit/s",
"datapoints": [
{
"endDateTime": "2026-06-24T20:20:59.000Z",
"value": 1711
}
]
}
]
}
}
---
resourceLogs:
- resource:
attributes:
- key: service.name
value:
stringValue: Equinix
- key: equinix.event.specversion
value:
stringValue: '1.0'
- key: equinix.event.source
value:
stringValue: https://api.equinix.com/fabric/v4/cloudevents
- key: equinix.event.subject
value:
stringValue: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
- key: equinix.event.equinixproject
value:
stringValue: 123
scopeLogs:
- scope:
logRecords:
- timeUnixNano: '1719889941306000000'
severityNumber: 9
severityText: Information
body:
stringValue: '{"message":"Virtual port status changed to Up","resource":{"href":"https://api.equinix.com/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688","uuid":"956a86fb-d03d-436c-8d5d-30d1f51f7688","name":"my-test-port","description":"port description"}}'
attributes:
- key: equinix.event.id
value:
stringValue: 6c573287-9914-4202-8b6d-2d15e7da04b8
- key: equinix.event.type
value:
stringValue: equinix.fabric.port.status.up
---
resourceMetrics:
- resource:
attributes:
- key: service.name
value:
stringValue: Equinix
- key: equinix.event.specversion
value:
stringValue: '1.0'
- key: equinix.event.source
value:
stringValue: https://api.equinix.com/fabric/v4/cloudevents
- key: equinix.event.subject
value:
stringValue: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
- key: equinix.event.equinixproject
value:
stringValue: 123
scopeMetrics:
- scope:
metrics:
- name: equinix.fabric.port.bandwidth_rx.usage
description: Port inbound bandwidth utilization
unit: 'bit/s'
gauge:
dataPoints:
- attributes:
- key: service.name
value:
stringValue: Equinix
- key: equinix.event.source
value:
stringValue: https://api.equinix.com/fabric/v4/cloudevents
- key: equinix.event.subject
value:
stringValue: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
- key: equinix.event.equinixproject
value:
stringValue: 123
- key: equinix.event.resource.name
value:
stringValue: 'my-port-name'
timeUnixNano: '1719889941306000000'
asInt: 566
- name: equinix.fabric.port.packets_erred_tx.count
description: Port error packets
unit: packet
sum:
aggregationTemporality: 2 # required for sum https://github.com/open-telemetry/opentelemetry-proto/blob/v0.9.0/opentelemetry/proto/metrics/v1/metrics.proto#L230
dataPoints:
- attributes:
- key: service.name
value:
stringValue: Equinix
- key: equinix.event.source
value:
stringValue: https://api.equinix.com/fabric/v4/cloudevents
- key: equinix.event.subject
value:
stringValue: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
- key: equinix.event.equinixproject
value:
stringValue: 123
- key: equinix.event.resource.name
value:
stringValue: 'my-port-name'
startTimeUnixNano: '1719889641306000000' # optional
timeUnixNano: '1719889941306000000'
asInt: 10
Microsoft Teams
- Portal
- API
On the Add Subscription page, enter your Microsoft Teams information, including:
- a Subscription Name
- your Microsoft Workflow Webhook URI
- and provide a description (optional)

Sample cURL Request:
curl -X 'POST' 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<ms_teams_subscription>",
"description": "<ms_teams_subscription_desc>",
"sink": {
"uri": "<teams_webhook_uri>",
"type": "TEAMS"
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/12190e7d-a486-4a77-ba56-fecdab616837",
"uuid": "12190e7d-a486-4a77-ba56-fecdab616837",
"type": "STREAM_SUBSCRIPTION",
"name": "ms_teams_subscription",
"description": "ms_teams_subscription_desc",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"uri": "****",
"type": "TEAMS",
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-10-04T13:20:40.127727Z"
}
}
PagerDuty
- Portal
- API
- Event
On the Add Subscription page, enter your PagerDuty information, including:
- a Subscription Name
- your PagerDuty Host Url
- your PagerDuty Integration Key
- and provide a description (optional)

Sample cURL Request:
curl -X 'POST' 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<pagerduty_subscription_name>",
"description": "<pagerduty_subscription_desc>",
"sink": {
"host": "https://events.pagerduty.com",
"type": "PAGERDUTY",
"credential": {
"type": "INTEGRATION_KEY",
"integrationKey": "<pagerduty_integration_key>"
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/dae0726a-87f0-4c5f-8662-ccbcf44a0de2",
"uuid": "dae0726a-87f0-4c5f-8662-ccbcf44a0de2",
"type": "STREAM_SUBSCRIPTION",
"name": "pagerduty-subscription",
"description": "pagerduty-subscription-desc",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"host": "https://events.pagerduty.com",
"type": "PAGERDUTY",
"credential": {
"type": "INTEGRATION_KEY",
"integrationKey": "<encrypted_integration_key>"
},
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5,
"settings": {
"source": "equinix",
"changeUri": "https://events.pagerduty.com/v2/change/enqueue",
"alertUri": "https://events.pagerduty.com/v2/enqueue"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-09-18T22:04:58.664523Z"
}
}
---
routing_key: routingKey
dedup_key: NCAB543WC4lrLpET8nLX4Vd8
event_action: trigger # or resolve
payload:
source: Equinix
timestamp: '2024-07-01T20:12:21.306Z'
severity: critical
summary: Virtual port status changed to Down
custom_details:
equinixsource: https://api.equinix.com/fabric/v4/cloudevents
specversion: '1.0'
id: 6c573287-9914-4202-8b6d-2d15e7da04b8
type: equinix.fabric.port.status.down
subject: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
time: '2024-07-01T20:12:21.306Z'
severitynumber: 21
severitytext: FATAL # or INFO
equinixalert: raise/NCAB543WC4lrLpET8nLX4Vd8
equinixproject: 123
ServiceNow
- Portal
- API
- Event
- Metric
On the Add Subscription page, enter your ServiceNow information, including:
- A Subscription name.
- The ServiceNow Host URL.
- Your ServiceNow username.
- Your ServiceNow password.
- An optional description.

Sample cURL Request:
curl -X 'POST' 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<servicenow_subscription_name>",
"description": "<servicenow_subscription_desc>",
"sink": {
"host": "https://<host>.service-now.com",
"type": "SERVICENOW",
"settings": {
"source": "<source_name>"
},
"credential": {
"type": "USERNAME_PASSWORD",
"username": "<servicenow-username>",
"password": "<servicenow-password>"
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/9b503760-b30f-4eb8-a681-aab1cfa9db1f",
"uuid": "9b503760-b30f-4eb8-a681-aab1cfa9db1f",
"type": "STREAM_SUBSCRIPTION",
"name": "servnow_subscription",
"description": "servnow_subscription_desc",
"state": "PROVISIONING",
"enabled": true,
"sink": {
"host": "https://<host>.service-now.com",
"type": "SERVICENOW",
"credential": {
"type": "USERNAME_PASSWORD"
},
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5,
"settings": {
"source": "source_name",
"metricUri": "https://<host>.service-now.com/api/mid/sa/metrics",
"eventUri": "https://<host>.service-now.com/api/global/em/jsonv2"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2025-01-22T18:09:20.894582046Z"
}
}
---
source: Equinix
time_of_event: '2024-07-01T20:12:21.306Z'
description: Virtual port status changed to Down
severity: 1 # 1 for clear and 0 for clear
resolution_state: New # or Closing
message_key: NCAB543WC4lrLpET8nLX4Vd8
resource: fabric.port
node: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
type: equinix.fabric.port.status.down
additional_info: '{"cloudevent":{"specversion":"1.0","source":"https://api.equinix.com/fabric/v4/cloudevents","id":"6c573287-9914-4202-8b6d-2d15e7da04b8","type":"equinix.fabric.port.status.down","subject":"/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7681","time":"2024-07-01T20:12:21.306Z","severitynumber":13,"severitytext":"CRITICAL","equinixalert":"raise/NCAB543WC4lrLpET8nLX4Vd8","equinixproject":"123","data":{"message":"Virtual port named \'Test-port\' status changed to Down","resource":{}}}}'
---
- timestamp: 1719889941306000. #mili sec
source: Equinix
resource_path: "/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7681"
metric_type: equinix.fabric.port.bandwidth_rx.utilization
value: 70.5
ci2metric_id:
type: GAUGE
subject: "/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7681"
equinixproject: 123
unit: "%"
- timestamp: 1719889941306000 #mili sec
source: Equinix
resource_path: "/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7681"
metric_type: equinix.fabric.port.packets_erred_tx.count
value: 70.5
ci2metric_id:
type: GAUGE
interval: PT5M
subject: "/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7681"
equinixproject: 123
unit: "%"
Slack
- Portal
- API
- CloudEvent
- CloudEvent Metric
On the Add Subscription page, enter your Slack information, including:
- Subscription name
- Subscription URI
- Description (optional)

Sample cURL Request:
curl -X 'POST' 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<slack_subscription_name>",
"description": "<slack_subscription_desc>",
"sink": {
"uri": "<slack_webhook_uri>",
"type": "SLACK"
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/12190e7d-a486-4a77-ba56-fecdab616837",
"uuid": "12190e7d-a486-4a77-ba56-fecdab616837",
"type": "STREAM_SUBSCRIPTION",
"name": "slack_subscription",
"description": "slack_subscription_desc",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"uri": "****",
"type": "SLACK",
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-10-04T13:20:40.127727Z"
}
}
---
cloudevent:
source: https://api.equinix.com/fabric/v4/cloudevents
specversion: '1.0'
id: 6c573287-9914-4202-8b6d-2d15e7da04b8
type: equinix.fabric.port.status.up
subject: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
time: '2024-07-01T20:12:21.306Z'
severitynumber: 9
severitytext: INFO
equinixalert: clear/NCAB543WC4lrLpET8nLX4Vd8
equinixproject: 123
data:
message: Virtual port status changed to Up
resource:
href: https://api.equinix.com/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
uuid: 956a86fb-d03d-436c-8d5d-30d1f51f7688
name: my-test-port
description: port description
---
specversion: '1.0'
source: https://api.equinix.com/fabric/v4/cloudevents
id: 6c573287-9914-4202-8b6d-2d15e7da04b8
type: equinix.fabric.metric
subject: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
time: '2024-07-01T20:12:21.306Z'
severitynumber: 9
severitytext: INFO
equinixproject: 123
dataschema: https://github.com/equinixapis/.../ApiConfigEventData.json
datacontenttype: application/json
data:
message: New metrics collected
resource:
href: https://api.equinix.com/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
uuid: 956a86fb-d03d-436c-8d5d-30d1f51f7688
name: my-test-port
description: port description
metrics:
- type: GAUGE
name: equinix.fabric.port.bandwidth_rx.usage
description: Port inbound bandwidth utilization
unit: bit/s
datapoints:
- endDateTime: '2024-07-01T20:12:21.000Z'
value: 440023
- type: SUM
name: equinix.fabric.port.packets_erred_tx.count
description: Port error packets
interval: PT5M
unit: packet
datapoints:
- endDateTime: '2024-07-01T20:12:21.000Z'
value: 10
Splunk
- Portal
- API
- Event
- Metric
On the Add Subscription page, enter your Splunk information, including:
- a Subscription Name
- your Splunk HTTP Event Collector URI
- your Splunk Access Token
- your Splunk Event Index (required)
- your Splunk Metrics Index, if you plan to ingest metrics into Splunk
- and provide a description (optional)

Sample cURL Request:
curl -X 'POST' 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<splunk_subscription_name>",
"description": "<splunk_subscription_desc>",
"sink": {
"uri": "https://http-inputs-<host>.splunkcloud.com:<port>/services/collector/event"
"type": "SPLUNK_HEC",
"settings": {
"eventIndex": "<name_of_eventIndex>",
"metricIndex": "<name_of_metricIndex>",
"source": "<name_of_splunk_hec>"
},
"credential": {
"type": "ACCESS_TOKEN",
"accessToken": "Splunk <Splunk AccessToken>"
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/958a9854-dc49-4ded-87bd-be4d0099355e",
"uuid": "958a9854-dc49-4ded-87bd-be4d0099355e",
"type": "STREAM_SUBSCRIPTION",
"name": "eq-splunk ",
"description": "subscription1",
"state": "PROVISIONING",
"enabled": true,
"sink": {
"uri": "https://http-inputs-<host>.splunkcloud.com:<port>/services/collector/event",
"type": "SPLUNK_HEC",
"credential": {
"type": "ACCESS_TOKEN"
},
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5,
"settings": {
"eventIndex": "<name_of_eventIndex>",
"metricIndex": "<name_of_metricIndex>",
"source": "<name_of_splunk_hec>"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-08-12T21:49:21.761029359Z"
}
}
---
sourcetype: _json
index: test-event-index
source: equinix # optional
event:
equinixsource: https://api.equinix.com/fabric/v4/cloudevents
specversion: '1.0'
id: 6c573287-9914-4202-8b6d-2d15e7da04b8
type: equinix.fabric.port.status.up
subject: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
time: '2024-07-01T20:12:21.306Z'
severitynumber: 9
severitytext: INFO
equinixalert: clear/NCAB543WC4lrLpET8nLX4Vd8
equinixproject: 123
data:
message: Virtual port status changed to Up
resource:
href: https://api.equinix.com/fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
uuid: 956a86fb-d03d-436c-8d5d-30d1f51f7688
name: my-test-port
description: port description
---
time: 1719889941.306
event: metric
index: test-index-metric
source: Equinix # Optional
fields:
subject: /fabric/v4/ports/956a86fb-d03d-436c-8d5d-30d1f51f7688
equinixproject: 123
"metric_name:equinix.fabric.port.bandwidth_rx.usage": 440023
"metric_name:equinix.fabric.port.packets_erred_tx.count": 10
Generic Webhook
Create a subscription to any generic webhook service for events and metrics. Specify the sink type as a webhook. You must include either an Event URI or a Metric URI. To stream both events and metrics, you must provide both an Event URI and a Metric URI. If you provide only one of these fields, then only the corresponding data type (events or metrics) is sent to the destination platform.
- Portal
- API
On the Add Subscription page, enter your Webhook information, including:
- A Subscription Name
- Select either CloudEvent format or Open Telemetry format for your streaming data.
- The Event URI
- The Metric URI
- Select an Authentication Type from No Auth, Username/Password, Access Token, or API Key options. Enter the relevant information into the provided fields.
- And provide a description (optional).

Sample cURL Request:
curl -X POST 'https://api.equinix.com/fabric/v4/streams/<streamId>/subscriptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>' \
-d '{
"type": "STREAM_SUBSCRIPTION",
"name": "<webhook_subscription_name>",
"description": "<webhook_subscription_desc>",
"enabled": true,
"sink": {
"type": "WEBHOOK",
"settings": {
"eventUri": "<webhook_uri>",
"metricUri": "<webhook_uri>",
"format": "<format>"
}
}
}'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/12190e7d-a486-4a77-ba56-fecdab616837",
"uuid": "12190e7d-a486-4a77-ba56-fecdab616837",
"type": "STREAM_SUBSCRIPTION",
"name": "<webhook_subscription_name>",
"description": "<webhook_subscription_desc>",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"type": "WEBHOOK",
"batchEnabled": false,
"batchSizeMax": 50,
"batchWaitTimeMax": 5,
"settings": {
"eventUri": "<webhook_uri>",
"format": "CLOUDEVENT"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2025-04-30T15:31:34.528915714Z"
}
}
Viewing a Subscription
- Portal
- API
-
From the Observability menu, click Data Streams.
-
Select a Stream from the Stream Inventory.

-
On the Stream Details page, click Subscriptions.

To retrieve a subscription's details, send a GET request to the /fabric/v4/streams/{streamId}/subscriptions/{subscriptionId} endpoint.
Sample cURL Request:
curl -X 'GET' 'https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/557400f8-d360-11e9-bb65-2a2ae2dbcce4' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/958a9854-dc49-4ded-87bd-be4d0099355e",
"uuid": "958a9854-dc49-4ded-87bd-be4d0099355e",
"type": "STREAM_SUBSCRIPTION",
"name": "eq-splunk",
"description": "subscription1",
"state": "PROVISIONED",
"enabled": true,
"sink": {
"uri": "https://http-inputs-<host>.splunkcloud.com:<port>/<endpoint>",
"type": "SPLUNK_HEC",
"credential": {
"type": "ACCESS_TOKEN"
},
"settings": {
"eventIndex": "<name_of_eventIndex>",
"metricIndex": "<name_of_metricIndex>",
"source": "<name_of_splunk_hec>"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-08-12T21:49:21.761029Z"
}
}
Deleting a Subscription
- Portal
- API
-
From the Observability menu, click Data Streams.
-
Select a Stream from the Stream Inventory.

-
On the Stream Details page, click Subscriptions.

-
In the Subscription Details, click the options menu
..., and Delete Subscription.
To delete a subscription, send a DELETE request to the /fabric/v4/streams/{streamId}/subscriptions/{subscriptionId} endpoint.
Sample cURL Request:
curl -X 'DELETE' 'https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/557400f8-d360-11e9-bb65-2a2ae2dbcce4' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Bearer Token>'
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/streams/241372e9-79c9-4ef8-b77a-8b8176c228b4/subscriptions/958a9854-dc49-4ded-87bd-be4d0099355e",
"uuid": "958a9854-dc49-4ded-87bd-be4d0099355e",
"type": "STREAM_SUBSCRIPTION",
"name": "eq-splunk",
"description": "subscription1",
"state": "DEPROVISIONING",
"enabled": true,
"sink": {
"uri": "<protocol>://http-inputs-<host>.splunkcloud.com:<port>/<endpoint>",
"type": "SPLUNK_HEC",
"credential": {
"type": "ACCESS_TOKEN"
},
"settings": {
"eventIndex": "<name_of_eventIndex>",
"metricIndex": "<name_of_metricIndex>",
"source": "<name_of_splunk_hec>"
}
},
"changeLog": {
"createdBy": "user1",
"createdDateTime": "2024-08-12T21:49:21.761029Z"
}
}