{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/PresenceMessage",
  "title": "PresenceMessage",
  "type": "object",
  "properties": {
    "id": {
      "description": "Unique ID assigned by Ably to this presence update.",
      "type": "string",
      "readOnly": true
    },
    "action": {
      "description": "The event signified by a PresenceMessage.",
      "type": "string",
      "enum": [
        "ABSENT",
        "PRESENT",
        "ENTER",
        "LEAVE",
        "UPDATE"
      ],
      "readOnly": true
    },
    "data": {
      "description": "The presence update payload, if provided.",
      "type": "string"
    },
    "clientId": {
      "description": "The client ID of the publisher of this presence update.",
      "type": "string"
    },
    "connectionId": {
      "description": "The connection ID of the publisher of this presence update.",
      "type": "string"
    },
    "timestamp": {
      "description": "Timestamp when the presence update was received by Ably, as milliseconds since the epoch.",
      "type": "integer",
      "format": "int64",
      "readOnly": true
    },
    "encoding": {
      "description": "This will typically be empty as all presence updates received from Ably are automatically decoded client-side using this value. However, if the message encoding cannot be processed, this attribute will contain the remaining transformations not applied to the data payload.",
      "type": "string"
    },
    "extras": {
      "$ref": "#/components/schemas/Extras"
    }
  }
}