---
title: "Subscribe to events"
method: POST
path: "/api/v1/ws/events"
tags: ["Resource Events"]
---

# Subscribe to events

`POST /api/v1/ws/events`

Open a websocket stream and receive events from devices. The contents of filters in the SubscribeToEvents message determine which events will be sent to the stream.
Subscription doesn't guarantee that all events will be sent to the client. The client is responsible for synchronizing events.

## Request body

- SubscribeToEvents
  - `createSubscription` SubscribeToEventsCreateSubscription — If you want to subscribe to all events, leave the filter unset. Use the eventFilter in conjunction with other filters to filter events by type. If eventFilter is set, only events with the specified type will be received. To filter devices, use the deviceIdFilter. It follows the format {deviceID[0]+\"/&#42;\", deviceID[1]+\"/&#42;\", ...}. To filter resources, use the hrefFilter. It follows the format {\"&#42;\"+href[0], \"&#42;\"+href[1], ...}. When both deviceIdFilter and hrefFilter are set, the hrefFilter is applied to each device. {deviceID[0]href[0], ..., deviceID[1]href[0], ...}. To filter resources of specific devices, use the resourceIdFilter. You can use either deviceIdFilter or resourceIdFilter or both. In this case, the result is the union of both filters. Certain filters perform a logical \"or\" operation among the elements of the filter.
    - `eventFilter` SubscribeToEventsCreateSubscriptionEvent[]
    - `deviceIdFilter` string[]
    - `hrefFilter` string[]
    - `resourceIdFilter` string[]
  - `cancelSubscription` SubscribeToEventsCancelSubscription
    - `subscriptionId` string
  - `correlationId` string

## Response `200`

Stream of events

- object
  - `data` Event
    - `subscriptionId` string
    - `correlationId` string
    - `deviceRegistered` EventDeviceRegistered
      - `deviceIds` string[]
    - `deviceUnregistered` EventDeviceUnregistered
      - `deviceIds` string[]
    - `resourcePublished` ResourceLinksPublished
      - `resources` ResourceLink[]
        - `href` string
        - `deviceId` string
        - `resourceTypes` string[]
        - `interfaces` string[]
        - `anchor` string
        - `title` string
        - `supportedContentTypes` string[]
        - `validUntil` string, int64
        - `policy` object
          - `bitFlags` integer
        - `endpointInformations` object[]
          - `endpoint` string
          - `priority` string, int64
      - `deviceId` string
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceUnpublished` ResourceLinksUnpublished
      - `hrefs` string[]
      - `deviceId` string
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceChanged` ResourceChanged
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
      - `status` 'UNKNOWN' | 'OK' | 'BAD_REQUEST' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'UNAVAILABLE' | 'NOT_IMPLEMENTED' | 'ACCEPTED' | 'ERROR' | 'METHOD_NOT_ALLOWED' | 'CREATED' | 'NOT_MODIFIED'
    - `operationProcessed` EventOperationProcessed
      - `errorStatus` OperationProcessedErrorStatus
        - `code` 'OK' | 'ERROR' | 'NOT_FOUND'
        - `message` string
    - `subscriptionCanceled` EventSubscriptionCanceled
      - `reason` string
    - `resourceUpdatePending` ResourceUpdatePending
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `resourceInterface` string
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceUpdated` ResourceUpdated
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `status` 'UNKNOWN' | 'OK' | 'BAD_REQUEST' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'UNAVAILABLE' | 'NOT_IMPLEMENTED' | 'ACCEPTED' | 'ERROR' | 'METHOD_NOT_ALLOWED' | 'CREATED' | 'NOT_MODIFIED'
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceRetrievePending` ResourceRetrievePending
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `resourceInterface` string
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceRetrieved` ResourceRetrieved
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `status` 'UNKNOWN' | 'OK' | 'BAD_REQUEST' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'UNAVAILABLE' | 'NOT_IMPLEMENTED' | 'ACCEPTED' | 'ERROR' | 'METHOD_NOT_ALLOWED' | 'CREATED' | 'NOT_MODIFIED'
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceDeletePending` ResourceDeletePending
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceDeleted` ResourceDeleted
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `status` 'UNKNOWN' | 'OK' | 'BAD_REQUEST' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'UNAVAILABLE' | 'NOT_IMPLEMENTED' | 'ACCEPTED' | 'ERROR' | 'METHOD_NOT_ALLOWED' | 'CREATED' | 'NOT_MODIFIED'
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceCreatePending` ResourceCreatePending
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `resourceCreated` ResourceCreated
      - `resourceId` ResourceId
        - `deviceId` string, uuid
        - `href` string, url
      - `status` 'UNKNOWN' | 'OK' | 'BAD_REQUEST' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'UNAVAILABLE' | 'NOT_IMPLEMENTED' | 'ACCEPTED' | 'ERROR' | 'METHOD_NOT_ALLOWED' | 'CREATED' | 'NOT_MODIFIED'
      - `content` Content
        - `data` string, byte
        - `contentType` string
        - `coapContentFormat` integer
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `deviceMetadataUpdatePending` DeviceMetadataUpdatePending
      - `deviceId` string
      - `twinEnabled` boolean
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64
    - `deviceMetadataUpdated` DeviceMetadataUpdated
      - `deviceId` string
      - `status` 'OFFLINE' | 'ONLINE'
      - `twinEnabled` boolean
      - `twinSynchronization` TwinSynchronization
        - `state` 'OUT_OF_SYNC' | 'DISABLED' | 'SYNCING' | 'IN_SYNC' — OUT_OF_SYNC - As soon as it connects after it was offline or when it goes errorless offline or when twin enabled has been changed to true. DISABLED - As soon as twin enabled is set to false. SYNCING - As soon as device connects, successfully signs in and batch observe is called on device from the cloud. IN_SYNC - As soon as current device resources values are received and applied to twin database. Twin was successfully reconciled after device reconnect and is kept up to date using an active subscription to device resource changes.
        - `syncingAt` string, int64
        - `inSyncAt` string, int64
        - `commandMetadata` CommandMetadata
          - `connectionId` string
          - `sequence` string, uint64
      - `auditContext` AuditContext
        - `userId` string
        - `correlationId` string
      - `eventMetadata` EventMetadata
        - `version` string, uint64
        - `timestamp` string, int64
        - `connectionId` string
        - `sequence` string, uint64

## Other responses

- `400` — Bad Request
- `401` — Not authorized
- `403` — Forbidden
- `404` — Entity was not found.

---

[API](https://skmtc.net/plgd-dev/apis/plgd-http-gateway.md) · [All operations](https://skmtc.net/plgd-dev/apis/plgd-http-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plgd-dev/plgd-http-gateway/versions/bbfd9fa43407/schema)
