Files
upstream-centrifugo/internal/apiproto/swagger/api.swagger.json
upstream-mirror b352a9a30d
Some checks failed
test / Lint (push) Failing after 3s
test / Test with Go 1.26.8 (push) Failing after 2s
snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:17:21 +05:00

4196 lines
98 KiB
JSON

{
"swagger": "2.0",
"info": {
"title": "Centrifugo server HTTP API",
"version": "6.0"
},
"tags": [
{
"name": "publication"
},
{
"name": "connection management"
},
{
"name": "history"
},
{
"name": "presence"
},
{
"name": "stats"
},
{
"name": "user status"
},
{
"name": "user block"
},
{
"name": "token"
},
{
"name": "push notification"
},
{
"name": "batch"
},
{
"name": "rpc"
},
{
"name": "map"
},
{
"name": "shared poll"
}
],
"basePath": "/api",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/batch": {
"post": {
"summary": "Batch request (send many commands in one request)",
"operationId": "CentrifugoApi_Batch",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/BatchResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/BatchRequest"
}
}
],
"tags": [
"batch"
]
}
},
"/block_user": {
"post": {
"summary": "Block user request",
"operationId": "CentrifugoApi_BlockUser",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/BlockUserResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/BlockUserRequest"
}
}
],
"tags": [
"user block"
]
}
},
"/broadcast": {
"post": {
"summary": "Broadcast allows publishing same data into many channels",
"operationId": "CentrifugoApi_Broadcast",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/BroadcastResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/BroadcastRequest"
}
}
],
"tags": [
"publication"
]
}
},
"/cancel_push": {
"post": {
"summary": "Cancel delayed push notification",
"operationId": "CentrifugoApi_CancelPush",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/CancelPushResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/CancelPushRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/channels": {
"post": {
"summary": "Channels request",
"operationId": "CentrifugoApi_Channels",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/ChannelsResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ChannelsRequest"
}
}
],
"tags": [
"stats"
]
}
},
"/connections": {
"post": {
"summary": "Connections request",
"operationId": "CentrifugoApi_Connections",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/ConnectionsResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ConnectionsRequest"
}
}
],
"tags": [
"stats"
]
}
},
"/delete_user_status": {
"post": {
"summary": "Delete user status request",
"operationId": "CentrifugoApi_DeleteUserStatus",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeleteUserStatusResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeleteUserStatusRequest"
}
}
],
"tags": [
"user status"
]
}
},
"/device_list": {
"post": {
"summary": "List devices",
"operationId": "CentrifugoApi_DeviceList",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeviceListResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeviceListRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/device_register": {
"post": {
"summary": "Device register request",
"operationId": "CentrifugoApi_DeviceRegister",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeviceRegisterResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeviceRegisterRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/device_remove": {
"post": {
"summary": "Device remove request",
"operationId": "CentrifugoApi_DeviceRemove",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeviceRemoveResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeviceRemoveRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/device_topic_list": {
"post": {
"summary": "List device topics",
"operationId": "CentrifugoApi_DeviceTopicList",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeviceTopicListResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeviceTopicListRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/device_topic_update": {
"post": {
"summary": "Update device topic model",
"operationId": "CentrifugoApi_DeviceTopicUpdate",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeviceTopicUpdateResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeviceTopicUpdateRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/device_update": {
"post": {
"summary": "Device update request",
"operationId": "CentrifugoApi_DeviceUpdate",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DeviceUpdateResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeviceUpdateRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/disconnect": {
"post": {
"summary": "Disconnect client(s) from server",
"operationId": "CentrifugoApi_Disconnect",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/DisconnectResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DisconnectRequest"
}
}
],
"tags": [
"connection management"
]
}
},
"/get_user_status": {
"post": {
"summary": "Get user status request",
"operationId": "CentrifugoApi_GetUserStatus",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/GetUserStatusResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/GetUserStatusRequest"
}
}
],
"tags": [
"user status"
]
}
},
"/history": {
"post": {
"summary": "History for a channel",
"operationId": "CentrifugoApi_History",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/HistoryResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HistoryRequest"
}
}
],
"tags": [
"history"
]
}
},
"/history_remove": {
"post": {
"summary": "Remove history for a channel",
"operationId": "CentrifugoApi_HistoryRemove",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/HistoryRemoveResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HistoryRemoveRequest"
}
}
],
"tags": [
"history"
]
}
},
"/info": {
"post": {
"summary": "Info shows details about server nodes",
"operationId": "CentrifugoApi_Info",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/InfoResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/InfoRequest"
}
}
],
"tags": [
"stats"
]
}
},
"/invalidate_user_tokens": {
"post": {
"summary": "Invalidate user tokens request",
"operationId": "CentrifugoApi_InvalidateUserTokens",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/InvalidateUserTokensResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/InvalidateUserTokensRequest"
}
}
],
"tags": [
"token"
]
}
},
"/map_clear": {
"post": {
"summary": "Clear a map channel",
"operationId": "CentrifugoApi_MapClear",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/MapClearResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/MapClearRequest"
}
}
],
"tags": [
"map"
]
}
},
"/map_publish": {
"post": {
"summary": "Publish a key into a map channel",
"operationId": "CentrifugoApi_MapPublish",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/MapPublishResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/MapPublishRequest"
}
}
],
"tags": [
"map"
]
}
},
"/map_read_state": {
"post": {
"summary": "Read current state of a map channel",
"operationId": "CentrifugoApi_MapReadState",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/MapReadStateResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/MapReadStateRequest"
}
}
],
"tags": [
"map"
]
}
},
"/map_read_stream": {
"post": {
"summary": "Read the stream of a map channel",
"operationId": "CentrifugoApi_MapReadStream",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/MapReadStreamResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/MapReadStreamRequest"
}
}
],
"tags": [
"map"
]
}
},
"/map_remove": {
"post": {
"summary": "Remove a key from a map channel",
"operationId": "CentrifugoApi_MapRemove",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/MapRemoveResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/MapRemoveRequest"
}
}
],
"tags": [
"map"
]
}
},
"/map_stats": {
"post": {
"summary": "Stats for a map channel",
"operationId": "CentrifugoApi_MapStats",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/MapStatsResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/MapStatsRequest"
}
}
],
"tags": [
"map"
]
}
},
"/presence": {
"post": {
"summary": "Presence information for a channel",
"operationId": "CentrifugoApi_Presence",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/PresenceResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PresenceRequest"
}
}
],
"tags": [
"presence"
]
}
},
"/presence_stats": {
"post": {
"summary": "Presence stats information for a channel",
"operationId": "CentrifugoApi_PresenceStats",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/PresenceStatsResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PresenceStatsRequest"
}
}
],
"tags": [
"presence"
]
}
},
"/publish": {
"post": {
"summary": "Publish data into channel",
"operationId": "CentrifugoApi_Publish",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/PublishResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PublishRequest"
}
}
],
"tags": [
"publication"
]
}
},
"/refresh": {
"post": {
"summary": "Refresh connection(s) by server-side call",
"operationId": "CentrifugoApi_Refresh",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/RefreshResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RefreshRequest"
}
}
],
"tags": [
"connection management"
]
}
},
"/revoke_token": {
"post": {
"summary": "Revoke token request",
"operationId": "CentrifugoApi_RevokeToken",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/RevokeTokenResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RevokeTokenRequest"
}
}
],
"tags": [
"token"
]
}
},
"/rpc": {
"post": {
"summary": "Execute RPC",
"operationId": "CentrifugoApi_RPC",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/RPCResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RPCRequest"
}
}
],
"tags": [
"rpc"
]
}
},
"/send_push_notification": {
"post": {
"summary": "Send push notification",
"operationId": "CentrifugoApi_SendPushNotification",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/SendPushNotificationResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/SendPushNotificationRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/shared_poll_publish": {
"post": {
"summary": "Publish into a shared poll channel",
"operationId": "CentrifugoApi_SharedPollPublish",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/SharedPollPublishResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/SharedPollPublishRequest"
}
}
],
"tags": [
"shared poll"
]
}
},
"/subscribe": {
"post": {
"summary": "Subscribe connection(s) to a channel",
"operationId": "CentrifugoApi_Subscribe",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/SubscribeResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/SubscribeRequest"
}
}
],
"tags": [
"connection management"
]
}
},
"/unblock_user": {
"post": {
"summary": "Unblock user request",
"operationId": "CentrifugoApi_UnblockUser",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/UnblockUserResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UnblockUserRequest"
}
}
],
"tags": [
"user block"
]
}
},
"/unsubscribe": {
"post": {
"summary": "Unsubscribe connection(s) from channel",
"operationId": "CentrifugoApi_Unsubscribe",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/UnsubscribeResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UnsubscribeRequest"
}
}
],
"tags": [
"connection management"
]
}
},
"/update_push_status": {
"post": {
"summary": "Update push notification status",
"operationId": "CentrifugoApi_UpdatePushStatus",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/UpdatePushStatusResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UpdatePushStatusRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/update_user_status": {
"post": {
"summary": "Updated user status request",
"operationId": "CentrifugoApi_UpdateUserStatus",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/UpdateUserStatusResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UpdateUserStatusRequest"
}
}
],
"tags": [
"user status"
]
}
},
"/user_topic_list": {
"post": {
"summary": "List user topics",
"operationId": "CentrifugoApi_UserTopicList",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/UserTopicListResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UserTopicListRequest"
}
}
],
"tags": [
"push notification"
]
}
},
"/user_topic_update": {
"post": {
"summary": "Update user topic model",
"operationId": "CentrifugoApi_UserTopicUpdate",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/UserTopicUpdateResponse"
}
},
"400": {
"description": "Returned in case of invalid request.",
"schema": {}
},
"401": {
"description": "Returned in case of missing auth.",
"schema": {}
},
"500": {
"description": "Returned in case of internal server error.",
"schema": {}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UserTopicUpdateRequest"
}
}
],
"tags": [
"push notification"
]
}
}
},
"definitions": {
"ApnsPushNotification": {
"type": "object",
"properties": {
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"payload": {
"type": "object"
}
}
},
"BatchRequest": {
"type": "object",
"properties": {
"commands": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/Command"
}
},
"parallel": {
"type": "boolean"
}
}
},
"BatchResponse": {
"type": "object",
"properties": {
"replies": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/Reply"
}
}
}
},
"BlockUserRequest": {
"type": "object",
"properties": {
"expire_at": {
"type": "integer"
},
"user": {
"type": "string"
}
}
},
"BlockUserResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/BlockUserResult"
}
}
},
"BlockUserResult": {
"type": "object"
},
"BoolValue": {
"type": "object",
"properties": {
"value": {
"type": "boolean"
}
}
},
"BroadcastRequest": {
"type": "object",
"properties": {
"channels": {
"type": "array",
"items": {
"type": "string"
}
},
"data": {
"type": "object"
},
"b64data": {
"type": "string"
},
"skip_history": {
"type": "boolean"
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"idempotency_key": {
"type": "string"
},
"delta": {
"type": "boolean"
},
"version": {
"type": "integer"
},
"version_epoch": {
"type": "string"
}
}
},
"BroadcastResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/BroadcastResult"
}
}
},
"BroadcastResult": {
"type": "object",
"properties": {
"responses": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/PublishResponse"
}
}
}
},
"CancelPushRequest": {
"type": "object",
"properties": {
"uid": {
"type": "string"
}
}
},
"CancelPushResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/CancelPushResult"
}
}
},
"CancelPushResult": {
"type": "object"
},
"ChannelContext": {
"type": "object",
"properties": {
"source": {
"type": "integer",
"format": "int64"
}
}
},
"ChannelInfo": {
"type": "object",
"properties": {
"num_clients": {
"type": "integer",
"format": "int64"
}
}
},
"ChannelsRequest": {
"type": "object",
"properties": {
"pattern": {
"type": "string"
}
}
},
"ChannelsResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/ChannelsResult"
}
}
},
"ChannelsResult": {
"type": "object",
"properties": {
"channels": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ChannelInfo"
}
}
}
},
"ClientInfo": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"client": {
"type": "string"
},
"conn_info": {
"type": "object"
},
"chan_info": {
"type": "object"
}
}
},
"Command": {
"type": "object",
"properties": {
"publish": {
"$ref": "#/definitions/PublishRequest"
},
"broadcast": {
"$ref": "#/definitions/BroadcastRequest"
},
"subscribe": {
"$ref": "#/definitions/SubscribeRequest"
},
"unsubscribe": {
"$ref": "#/definitions/UnsubscribeRequest"
},
"disconnect": {
"$ref": "#/definitions/DisconnectRequest"
},
"presence": {
"$ref": "#/definitions/PresenceRequest"
},
"presence_stats": {
"$ref": "#/definitions/PresenceStatsRequest"
},
"history": {
"$ref": "#/definitions/HistoryRequest"
},
"history_remove": {
"$ref": "#/definitions/HistoryRemoveRequest"
},
"info": {
"$ref": "#/definitions/InfoRequest"
},
"rpc": {
"$ref": "#/definitions/RPCRequest"
},
"refresh": {
"$ref": "#/definitions/RefreshRequest"
},
"channels": {
"$ref": "#/definitions/ChannelsRequest"
},
"connections": {
"$ref": "#/definitions/ConnectionsRequest"
},
"update_user_status": {
"$ref": "#/definitions/UpdateUserStatusRequest"
},
"get_user_status": {
"$ref": "#/definitions/GetUserStatusRequest"
},
"delete_user_status": {
"$ref": "#/definitions/DeleteUserStatusRequest"
},
"block_user": {
"$ref": "#/definitions/BlockUserRequest"
},
"unblock_user": {
"$ref": "#/definitions/UnblockUserRequest"
},
"revoke_token": {
"$ref": "#/definitions/RevokeTokenRequest"
},
"invalidate_user_tokens": {
"$ref": "#/definitions/InvalidateUserTokensRequest"
},
"device_register": {
"$ref": "#/definitions/DeviceRegisterRequest"
},
"device_update": {
"$ref": "#/definitions/DeviceUpdateRequest"
},
"device_remove": {
"$ref": "#/definitions/DeviceRemoveRequest"
},
"device_list": {
"$ref": "#/definitions/DeviceListRequest"
},
"device_topic_list": {
"$ref": "#/definitions/DeviceTopicListRequest"
},
"device_topic_update": {
"$ref": "#/definitions/DeviceTopicUpdateRequest"
},
"user_topic_list": {
"$ref": "#/definitions/UserTopicListRequest"
},
"user_topic_update": {
"$ref": "#/definitions/UserTopicUpdateRequest"
},
"send_push_notification": {
"$ref": "#/definitions/SendPushNotificationRequest"
},
"update_push_status": {
"$ref": "#/definitions/UpdatePushStatusRequest"
},
"cancel_push": {
"$ref": "#/definitions/CancelPushRequest"
},
"map_publish": {
"$ref": "#/definitions/MapPublishRequest"
},
"map_remove": {
"$ref": "#/definitions/MapRemoveRequest"
},
"map_read_state": {
"$ref": "#/definitions/MapReadStateRequest"
},
"map_read_stream": {
"$ref": "#/definitions/MapReadStreamRequest"
},
"map_stats": {
"$ref": "#/definitions/MapStatsRequest"
},
"map_clear": {
"$ref": "#/definitions/MapClearRequest"
},
"shared_poll_publish": {
"$ref": "#/definitions/SharedPollPublishRequest"
}
}
},
"ConnectionInfo": {
"type": "object",
"properties": {
"app_name": {
"type": "string"
},
"app_version": {
"type": "string"
},
"transport": {
"type": "string"
},
"protocol": {
"type": "string"
},
"user": {
"type": "string"
},
"state": {
"$ref": "#/definitions/ConnectionState"
},
"connected_at_ms": {
"type": "integer"
},
"ping_pong_latency_ms": {
"type": "integer",
"description": "can be -1 if not available."
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "PRO only — client labels attached to the centrifuge.Client by Centrifugo PRO."
}
}
},
"ConnectionState": {
"type": "object",
"properties": {
"channels": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ChannelContext"
}
},
"connection_token": {
"$ref": "#/definitions/ConnectionTokenInfo"
},
"subscription_tokens": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/SubscriptionTokenInfo"
}
},
"meta": {
"type": "object"
}
}
},
"ConnectionTokenInfo": {
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"issued_at": {
"type": "integer"
}
}
},
"ConnectionsRequest": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"expression": {
"type": "string"
},
"label_filter": {
"$ref": "#/definitions/FilterNode",
"description": "PRO only — restrict the listing to clients whose labels match this filter."
}
}
},
"ConnectionsResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/ConnectionsResult"
}
}
},
"ConnectionsResult": {
"type": "object",
"properties": {
"connections": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ConnectionInfo"
}
}
}
},
"DeleteUserStatusRequest": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"DeleteUserStatusResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeleteUserStatusResult"
}
}
},
"DeleteUserStatusResult": {
"type": "object"
},
"Device": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"platform": {
"type": "string"
},
"provider": {
"type": "string"
},
"token": {
"type": "string"
},
"user": {
"type": "string"
},
"created_at": {
"type": "integer"
},
"updated_at": {
"type": "integer"
},
"meta": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"timezone": {
"type": "string"
},
"locale": {
"type": "string"
},
"webpush_keys": {
"type": "string"
}
}
},
"DeviceFilter": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"users": {
"type": "array",
"items": {
"type": "string"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"providers": {
"type": "array",
"items": {
"type": "string"
}
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"DeviceListRequest": {
"type": "object",
"properties": {
"filter": {
"$ref": "#/definitions/DeviceFilter"
},
"include_total_count": {
"type": "boolean"
},
"include_meta": {
"type": "boolean"
},
"include_topics": {
"type": "boolean"
},
"include_webpush_keys": {
"type": "boolean"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"format": "int32"
}
}
},
"DeviceListResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeviceListResult"
}
}
},
"DeviceListResult": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/Device"
}
},
"next_cursor": {
"type": "string"
},
"total_count": {
"type": "integer"
}
}
},
"DeviceLocaleUpdate": {
"type": "object",
"properties": {
"locale": {
"type": "string"
}
}
},
"DeviceMetaUpdate": {
"type": "object",
"properties": {
"meta": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"DeviceRegisterRequest": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"token": {
"type": "string"
},
"platform": {
"type": "string"
},
"user": {
"type": "string"
},
"meta": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"timezone": {
"type": "string"
},
"locale": {
"type": "string"
}
}
},
"DeviceRegisterResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeviceRegisterResult"
}
}
},
"DeviceRegisterResult": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
},
"DeviceRemoveRequest": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"users": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"DeviceRemoveResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeviceRemoveResult"
}
}
},
"DeviceRemoveResult": {
"type": "object"
},
"DeviceTimezoneUpdate": {
"type": "object",
"properties": {
"timezone": {
"type": "string"
}
}
},
"DeviceTopic": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"topic": {
"type": "string"
},
"device": {
"$ref": "#/definitions/Device"
}
}
},
"DeviceTopicFilter": {
"type": "object",
"properties": {
"device_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"device_providers": {
"type": "array",
"items": {
"type": "string"
}
},
"device_platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"device_users": {
"type": "array",
"items": {
"type": "string"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"topic_prefix": {
"type": "string"
}
}
},
"DeviceTopicListRequest": {
"type": "object",
"properties": {
"filter": {
"$ref": "#/definitions/DeviceTopicFilter"
},
"include_total_count": {
"type": "boolean"
},
"include_device": {
"type": "boolean"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"format": "int32"
}
}
},
"DeviceTopicListResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeviceTopicListResult"
}
}
},
"DeviceTopicListResult": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/DeviceTopic"
}
},
"next_cursor": {
"type": "string"
},
"total_count": {
"type": "integer"
}
}
},
"DeviceTopicUpdateRequest": {
"type": "object",
"properties": {
"device_id": {
"type": "string"
},
"op": {
"type": "string",
"title": "add | remove | set"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"user": {
"type": "string",
"title": "optional ownership guard: apply only if the device currently belongs to this user"
}
}
},
"DeviceTopicUpdateResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeviceTopicUpdateResult"
}
}
},
"DeviceTopicUpdateResult": {
"type": "object"
},
"DeviceTopicsUpdate": {
"type": "object",
"properties": {
"op": {
"type": "string",
"title": "add | remove | set"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"DeviceUpdateRequest": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
},
"users": {
"type": "array",
"items": {
"type": "string"
}
},
"user_update": {
"$ref": "#/definitions/DeviceUserUpdate"
},
"meta_update": {
"$ref": "#/definitions/DeviceMetaUpdate"
},
"topics_update": {
"$ref": "#/definitions/DeviceTopicsUpdate"
},
"timezone_update": {
"$ref": "#/definitions/DeviceTimezoneUpdate"
},
"locale_update": {
"$ref": "#/definitions/DeviceLocaleUpdate"
}
}
},
"DeviceUpdateResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DeviceUpdateResult"
}
}
},
"DeviceUpdateResult": {
"type": "object"
},
"DeviceUserUpdate": {
"type": "object",
"properties": {
"user": {
"type": "string"
}
}
},
"DisconnectRequest": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"disconnect": {
"$ref": "#/definitions/api.Disconnect"
},
"client": {
"type": "string"
},
"whitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"session": {
"type": "string"
},
"label_filter": {
"$ref": "#/definitions/FilterNode",
"description": "PRO only — restrict the call to clients whose labels match this filter."
},
"all_users": {
"type": "boolean",
"description": "PRO only — see SubscribeRequest.all_users."
}
}
},
"DisconnectResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/DisconnectResult"
}
}
},
"DisconnectResult": {
"type": "object"
},
"Error": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int64"
},
"message": {
"type": "string"
}
}
},
"FcmPushNotification": {
"type": "object",
"properties": {
"message": {
"type": "object"
}
}
},
"FilterNode": {
"type": "object",
"properties": {
"op": {
"type": "string"
},
"key": {
"type": "string"
},
"cmp": {
"type": "string"
},
"val": {
"type": "string"
},
"vals": {
"type": "array",
"items": {
"type": "string"
}
},
"nodes": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/FilterNode"
}
}
},
"description": "FilterNode is a tree describing a label predicate.\nUsed as label_filter on Subscribe/Unsubscribe/Disconnect/Refresh/Connections requests.\nPRO only — defined in OSS api.proto for protocol-surface consistency; OSS handlers parse but do not act on it."
},
"GetUserStatusRequest": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"GetUserStatusResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/GetUserStatusResult"
}
}
},
"GetUserStatusResult": {
"type": "object",
"properties": {
"statuses": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/UserStatus"
}
}
}
},
"HistoryRemoveRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
}
},
"HistoryRemoveResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/HistoryRemoveResult"
}
}
},
"HistoryRemoveResult": {
"type": "object"
},
"HistoryRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"limit": {
"type": "integer",
"format": "int32"
},
"since": {
"$ref": "#/definitions/StreamPosition"
},
"reverse": {
"type": "boolean"
}
}
},
"HistoryResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/HistoryResult"
}
}
},
"HistoryResult": {
"type": "object",
"properties": {
"publications": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/Publication"
}
},
"epoch": {
"type": "string"
},
"offset": {
"type": "integer"
}
}
},
"HmsPushNotification": {
"type": "object",
"properties": {
"message": {
"type": "object"
}
}
},
"InfoRequest": {
"type": "object"
},
"InfoResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/InfoResult"
}
}
},
"InfoResult": {
"type": "object",
"properties": {
"nodes": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/NodeResult"
}
}
}
},
"InvalidateUserTokensRequest": {
"type": "object",
"properties": {
"expire_at": {
"type": "integer"
},
"user": {
"type": "string"
},
"issued_before": {
"type": "integer"
},
"channel": {
"type": "string"
}
}
},
"InvalidateUserTokensResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/InvalidateUserTokensResult"
}
}
},
"InvalidateUserTokensResult": {
"type": "object"
},
"MapClearRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
}
},
"MapClearResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/MapClearResult"
}
}
},
"MapClearResult": {
"type": "object"
},
"MapEntry": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"data": {
"type": "object"
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"offset": {
"type": "integer"
},
"score": {
"type": "integer"
},
"removed": {
"type": "boolean"
},
"time": {
"type": "integer"
}
}
},
"MapPublishRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"key": {
"type": "string"
},
"data": {
"type": "object"
},
"b64data": {
"type": "string"
},
"stream_data": {
"type": "object"
},
"b64stream_data": {
"type": "string"
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"idempotency_key": {
"type": "string"
},
"delta": {
"type": "boolean"
},
"version": {
"type": "integer"
},
"version_epoch": {
"type": "string"
},
"score": {
"type": "integer"
},
"key_mode": {
"type": "string"
}
}
},
"MapPublishResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/MapPublishResult"
}
}
},
"MapPublishResult": {
"type": "object",
"properties": {
"offset": {
"type": "integer"
},
"epoch": {
"type": "string"
},
"suppressed": {
"type": "boolean"
},
"suppress_reason": {
"type": "string"
}
}
},
"MapReadStateRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"format": "int32"
},
"key": {
"type": "string"
},
"asc": {
"type": "boolean"
},
"revision_offset": {
"type": "integer"
},
"revision_epoch": {
"type": "string"
}
}
},
"MapReadStateResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/MapReadStateResult"
}
}
},
"MapReadStateResult": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/MapEntry"
}
},
"offset": {
"type": "integer"
},
"epoch": {
"type": "string"
},
"cursor": {
"type": "string"
}
}
},
"MapReadStreamRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"since_offset": {
"type": "integer"
},
"since_epoch": {
"type": "string"
},
"limit": {
"type": "integer",
"format": "int32"
},
"reverse": {
"type": "boolean"
}
}
},
"MapReadStreamResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/MapReadStreamResult"
}
}
},
"MapReadStreamResult": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/MapEntry"
}
},
"offset": {
"type": "integer"
},
"epoch": {
"type": "string"
}
}
},
"MapRemoveRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"key": {
"type": "string"
},
"idempotency_key": {
"type": "string"
}
}
},
"MapRemoveResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/MapRemoveResult"
}
}
},
"MapRemoveResult": {
"type": "object",
"properties": {
"offset": {
"type": "integer"
},
"epoch": {
"type": "string"
},
"suppressed": {
"type": "boolean"
},
"suppress_reason": {
"type": "string"
}
}
},
"MapStatsRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
}
},
"MapStatsResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/MapStatsResult"
}
}
},
"MapStatsResult": {
"type": "object",
"properties": {
"num_keys": {
"type": "integer",
"format": "int32"
}
}
},
"Metrics": {
"type": "object",
"properties": {
"interval": {
"type": "number",
"format": "double"
},
"items": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
}
}
},
"NodeResult": {
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"num_clients": {
"type": "integer",
"format": "int64"
},
"num_users": {
"type": "integer",
"format": "int64"
},
"num_channels": {
"type": "integer",
"format": "int64"
},
"uptime": {
"type": "integer",
"format": "int64"
},
"metrics": {
"$ref": "#/definitions/Metrics"
},
"process": {
"$ref": "#/definitions/Process"
},
"num_subs": {
"type": "integer",
"format": "int64"
}
}
},
"PresenceRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
}
},
"PresenceResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/PresenceResult"
}
}
},
"PresenceResult": {
"type": "object",
"properties": {
"presence": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ClientInfo"
}
}
}
},
"PresenceStatsRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
}
},
"PresenceStatsResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/PresenceStatsResult"
}
}
},
"PresenceStatsResult": {
"type": "object",
"properties": {
"num_clients": {
"type": "integer",
"format": "int64"
},
"num_users": {
"type": "integer",
"format": "int64"
}
}
},
"Process": {
"type": "object",
"properties": {
"cpu": {
"type": "number",
"format": "double"
},
"rss": {
"type": "integer"
}
}
},
"Publication": {
"type": "object",
"properties": {
"data": {
"type": "object",
"title": "Removed: string uid = 1;"
},
"info": {
"$ref": "#/definitions/ClientInfo"
},
"offset": {
"type": "integer"
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"PublishRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"data": {
"type": "object"
},
"b64data": {
"type": "string"
},
"skip_history": {
"type": "boolean"
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"idempotency_key": {
"type": "string"
},
"delta": {
"type": "boolean"
},
"version": {
"type": "integer"
},
"version_epoch": {
"type": "string"
}
}
},
"PublishResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/PublishResult"
}
}
},
"PublishResult": {
"type": "object",
"properties": {
"offset": {
"type": "integer"
},
"epoch": {
"type": "string"
}
}
},
"PushLimitStrategy": {
"type": "object",
"properties": {
"rate_limit": {
"$ref": "#/definitions/PushRateLimitStrategy"
},
"time_limit": {
"$ref": "#/definitions/PushTimeLimitStrategy"
}
}
},
"PushLocalization": {
"type": "object",
"properties": {
"translations": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "variable name to value for the specific language/locale."
}
}
},
"PushNotification": {
"type": "object",
"properties": {
"fcm": {
"$ref": "#/definitions/FcmPushNotification"
},
"hms": {
"$ref": "#/definitions/HmsPushNotification"
},
"apns": {
"$ref": "#/definitions/ApnsPushNotification"
},
"webpush": {
"$ref": "#/definitions/WebPushPushNotification"
},
"expire_at": {
"type": "integer",
"description": "timestamp in the future when Centrifugo should stop trying to send push notification."
}
}
},
"PushRateLimitStrategy": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "optional key for rate limit policy, supports variables."
},
"policies": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/RateLimitPolicy"
}
},
"drop_if_rate_limited": {
"type": "boolean"
}
}
},
"PushRecipient": {
"type": "object",
"properties": {
"filter": {
"$ref": "#/definitions/DeviceFilter"
},
"fcm_tokens": {
"type": "array",
"items": {
"type": "string"
}
},
"fcm_topic": {
"type": "string"
},
"fcm_condition": {
"type": "string"
},
"hms_tokens": {
"type": "array",
"items": {
"type": "string"
}
},
"hms_topic": {
"type": "string"
},
"hms_condition": {
"type": "string"
},
"apns_tokens": {
"type": "array",
"items": {
"type": "string"
}
},
"webpush_tokens": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"PushTimeLimitStrategy": {
"type": "object",
"properties": {
"send_after_time": {
"type": "string",
"title": "HH:MM:SS"
},
"send_before_time": {
"type": "string",
"title": "HH:MM:SS"
},
"no_tz_send_now": {
"type": "boolean",
"description": "If device timezone is not set - send push now, by default will be dropped."
}
}
},
"RPCRequest": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"params": {
"type": "object"
}
}
},
"RPCResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/RPCResult"
}
}
},
"RPCResult": {
"type": "object",
"properties": {
"data": {
"type": "object"
}
}
},
"RateLimitPolicy": {
"type": "object",
"properties": {
"rate": {
"type": "integer"
},
"interval_ms": {
"type": "integer",
"format": "int32"
}
}
},
"RefreshRequest": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"client": {
"type": "string"
},
"expired": {
"type": "boolean"
},
"expire_at": {
"type": "integer"
},
"info": {
"type": "object"
},
"session": {
"type": "string"
},
"label_filter": {
"$ref": "#/definitions/FilterNode",
"description": "PRO only — restrict the call to clients whose labels match this filter."
},
"all_users": {
"type": "boolean",
"description": "PRO only — see SubscribeRequest.all_users."
}
}
},
"RefreshResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/RefreshResult"
}
}
},
"RefreshResult": {
"type": "object"
},
"Reply": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"publish": {
"$ref": "#/definitions/PublishResult"
},
"broadcast": {
"$ref": "#/definitions/BroadcastResult"
},
"subscribe": {
"$ref": "#/definitions/SubscribeResult"
},
"unsubscribe": {
"$ref": "#/definitions/UnsubscribeResult"
},
"disconnect": {
"$ref": "#/definitions/DisconnectResult"
},
"presence": {
"$ref": "#/definitions/PresenceResult"
},
"presence_stats": {
"$ref": "#/definitions/PresenceStatsResult"
},
"history": {
"$ref": "#/definitions/HistoryResult"
},
"history_remove": {
"$ref": "#/definitions/HistoryRemoveResult"
},
"info": {
"$ref": "#/definitions/InfoResult"
},
"rpc": {
"$ref": "#/definitions/RPCResult"
},
"refresh": {
"$ref": "#/definitions/RefreshResult"
},
"channels": {
"$ref": "#/definitions/ChannelsResult"
},
"connections": {
"$ref": "#/definitions/ConnectionsResult"
},
"update_user_status": {
"$ref": "#/definitions/UpdateUserStatusResult"
},
"get_user_status": {
"$ref": "#/definitions/GetUserStatusResult"
},
"delete_user_status": {
"$ref": "#/definitions/DeleteUserStatusResult"
},
"block_user": {
"$ref": "#/definitions/BlockUserResult"
},
"unblock_user": {
"$ref": "#/definitions/UnblockUserResult"
},
"revoke_token": {
"$ref": "#/definitions/RevokeTokenResult"
},
"invalidate_user_tokens": {
"$ref": "#/definitions/InvalidateUserTokensResult"
},
"device_register": {
"$ref": "#/definitions/DeviceRegisterResult"
},
"device_update": {
"$ref": "#/definitions/DeviceUpdateResult"
},
"device_remove": {
"$ref": "#/definitions/DeviceRemoveResult"
},
"device_list": {
"$ref": "#/definitions/DeviceListResult"
},
"device_topic_list": {
"$ref": "#/definitions/DeviceTopicListResult"
},
"device_topic_update": {
"$ref": "#/definitions/DeviceTopicUpdateResult"
},
"user_topic_list": {
"$ref": "#/definitions/UserTopicListResult"
},
"user_topic_update": {
"$ref": "#/definitions/UserTopicUpdateResult"
},
"send_push_notification": {
"$ref": "#/definitions/SendPushNotificationResult"
},
"update_push_status": {
"$ref": "#/definitions/UpdatePushStatusResult"
},
"cancel_push": {
"$ref": "#/definitions/CancelPushResult"
},
"map_publish": {
"$ref": "#/definitions/MapPublishResult"
},
"map_remove": {
"$ref": "#/definitions/MapRemoveResult"
},
"map_read_state": {
"$ref": "#/definitions/MapReadStateResult"
},
"map_read_stream": {
"$ref": "#/definitions/MapReadStreamResult"
},
"map_stats": {
"$ref": "#/definitions/MapStatsResult"
},
"map_clear": {
"$ref": "#/definitions/MapClearResult"
},
"shared_poll_publish": {
"$ref": "#/definitions/SharedPollPublishResult"
}
}
},
"RevokeTokenRequest": {
"type": "object",
"properties": {
"expire_at": {
"type": "integer"
},
"uid": {
"type": "string"
}
}
},
"RevokeTokenResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/RevokeTokenResult"
}
}
},
"RevokeTokenResult": {
"type": "object"
},
"SendPushNotificationRequest": {
"type": "object",
"properties": {
"recipient": {
"$ref": "#/definitions/PushRecipient"
},
"notification": {
"$ref": "#/definitions/PushNotification"
},
"uid": {
"type": "string",
"description": "unique identifier for each push notification request, can be used to cancel push."
},
"send_at": {
"type": "integer",
"description": "Unix seconds, if set - push will be sent at this time, if not set - immediately."
},
"optimize_for_reliability": {
"type": "boolean",
"description": "makes processing heavier, but tolerates edge cases, like not losing inflight pushes due to temporary queue unavailability."
},
"limit_strategy": {
"$ref": "#/definitions/PushLimitStrategy",
"description": "strategy for sending push notifications. Applicable only for pushes with filter recipient. When using this field Centrifugo processes devices one by one."
},
"analytics_uid": {
"type": "string",
"description": "uid for push notification analytics, if not set - Centrifugo will use uid field."
},
"localizations": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/PushLocalization"
},
"description": "optional per language/locale localizations for push notification."
},
"use_templating": {
"type": "boolean",
"description": "if set - Centrifugo will use templating for push notification. Note that setting localizations enables templating automatically."
},
"use_meta": {
"type": "boolean",
"description": "if set - Centrifugo will additionally load device meta during push sending, this meta becomes available in templating."
}
}
},
"SendPushNotificationResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/SendPushNotificationResult"
}
}
},
"SendPushNotificationResult": {
"type": "object",
"properties": {
"uid": {
"type": "string",
"description": "Unique identifier of notification send request (it's not a FCM message id)."
}
}
},
"SharedPollPublishRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"key": {
"type": "string"
},
"data": {
"type": "object"
},
"b64data": {
"type": "string"
},
"version": {
"type": "integer"
},
"epoch": {
"type": "string"
}
}
},
"SharedPollPublishResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/SharedPollPublishResult"
}
}
},
"SharedPollPublishResult": {
"type": "object"
},
"StreamPosition": {
"type": "object",
"properties": {
"offset": {
"type": "integer"
},
"epoch": {
"type": "string"
}
}
},
"SubscribeOptionOverride": {
"type": "object",
"properties": {
"presence": {
"$ref": "#/definitions/BoolValue"
},
"join_leave": {
"$ref": "#/definitions/BoolValue"
},
"force_recovery": {
"$ref": "#/definitions/BoolValue"
},
"force_positioning": {
"$ref": "#/definitions/BoolValue"
},
"force_push_join_leave": {
"$ref": "#/definitions/BoolValue"
}
}
},
"SubscribeRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"user": {
"type": "string"
},
"expire_at": {
"type": "integer"
},
"info": {
"type": "object"
},
"b64info": {
"type": "string"
},
"client": {
"type": "string"
},
"data": {
"type": "object"
},
"b64data": {
"type": "string"
},
"recover_since": {
"$ref": "#/definitions/StreamPosition"
},
"override": {
"$ref": "#/definitions/SubscribeOptionOverride"
},
"session": {
"type": "string"
},
"label_filter": {
"$ref": "#/definitions/FilterNode",
"description": "PRO only — restrict the call to clients whose labels match this filter."
},
"all_users": {
"type": "boolean",
"description": "PRO only — when `user` is empty, target every connection on every node\ninstead of the anonymous-only bucket. No effect when `user` is non-empty."
}
}
},
"SubscribeResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/SubscribeResult"
}
}
},
"SubscribeResult": {
"type": "object"
},
"SubscriptionTokenInfo": {
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"issued_at": {
"type": "integer"
}
}
},
"UnblockUserRequest": {
"type": "object",
"properties": {
"user": {
"type": "string"
}
}
},
"UnblockUserResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/UnblockUserResult"
}
}
},
"UnblockUserResult": {
"type": "object"
},
"UnsubscribeRequest": {
"type": "object",
"properties": {
"channel": {
"type": "string"
},
"user": {
"type": "string"
},
"client": {
"type": "string"
},
"session": {
"type": "string"
},
"label_filter": {
"$ref": "#/definitions/FilterNode",
"description": "PRO only — restrict the call to clients whose labels match this filter."
},
"all_users": {
"type": "boolean",
"description": "PRO only — see SubscribeRequest.all_users."
}
}
},
"UnsubscribeResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/UnsubscribeResult"
}
}
},
"UnsubscribeResult": {
"type": "object"
},
"UpdatePushStatusRequest": {
"type": "object",
"properties": {
"analytics_uid": {
"type": "string",
"title": "analytics uid of push notification (should match SendPushNotificationRequest.analytics_uid)"
},
"status": {
"type": "string",
"title": "delivered | interacted"
},
"device_id": {
"type": "string",
"description": "Centrifugo device id."
},
"msg_id": {
"type": "string",
"description": "Provider issued message id."
}
}
},
"UpdatePushStatusResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/UpdatePushStatusResult"
}
}
},
"UpdatePushStatusResult": {
"type": "object"
},
"UpdateUserStatusRequest": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "string"
}
},
"state": {
"type": "string"
}
}
},
"UpdateUserStatusResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/UpdateUserStatusResult"
}
}
},
"UpdateUserStatusResult": {
"type": "object"
},
"UserStatus": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"active": {
"type": "integer"
},
"online": {
"type": "integer"
},
"state": {
"type": "string"
}
}
},
"UserTopic": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"user": {
"type": "string"
},
"topic": {
"type": "string"
}
}
},
"UserTopicFilter": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "string"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"topic_prefix": {
"type": "string"
}
}
},
"UserTopicListRequest": {
"type": "object",
"properties": {
"filter": {
"$ref": "#/definitions/UserTopicFilter"
},
"include_total_count": {
"type": "boolean"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"format": "int32"
}
}
},
"UserTopicListResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/UserTopicListResult"
}
}
},
"UserTopicListResult": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/UserTopic"
}
},
"next_cursor": {
"type": "string"
},
"total_count": {
"type": "integer"
}
}
},
"UserTopicUpdateRequest": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"op": {
"type": "string",
"title": "add | remove | set"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"UserTopicUpdateResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/definitions/Error"
},
"result": {
"$ref": "#/definitions/UserTopicUpdateResult"
}
}
},
"UserTopicUpdateResult": {
"type": "object"
},
"WebPushPushNotification": {
"type": "object",
"properties": {
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"payload": {
"type": "object"
}
}
},
"api.Disconnect": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int64"
},
"reason": {
"type": "string"
}
}
}
},
"securityDefinitions": {
"ApiKeyAuth": {
"type": "apiKey",
"name": "X-API-Key",
"in": "header"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"externalDocs": {
"description": "More about Centrifugo HTTP API",
"url": "https://centrifugal.dev/docs/server/server_api"
}
}