{ "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" } }