basePath: / definitions: ginresp.apiError: properties: errhighlight: type: integer error: type: integer errorObj: type: string message: type: string success: type: boolean traceObj: type: string type: object ginresp.compatAPIError: properties: errid: type: integer message: type: string success: type: boolean type: object handler.Ack.response: properties: message: type: string new_ack: type: integer prev_ack: type: integer success: type: boolean type: object handler.AddClient.body: properties: agent_model: type: string agent_version: type: string client_type: type: string fcm_token: type: string required: - agent_model - agent_version - client_type - fcm_token type: object handler.CreateSubscription.body: properties: channel: type: string channelOwnerUserID: type: integer required: - channel - channelOwnerUserID type: object handler.CreateUser.body: properties: agent_model: type: string agent_version: type: string client_type: type: string fcm_token: type: string pro_token: type: string username: type: string required: - agent_model - agent_version - client_type - fcm_token type: object handler.DatabaseTest.response: properties: libVersion: type: string libVersionNumber: type: integer sourceID: type: string success: type: boolean type: object handler.Expand.response: properties: data: $ref: '#/definitions/models.CompatMessage' message: type: string success: type: boolean type: object handler.Health.response: properties: status: type: string type: object handler.Info.response: properties: fcm_token_set: type: boolean is_pro: type: integer message: type: string quota: type: integer quota_max: type: integer success: type: boolean unack_count: type: integer user_id: type: integer user_key: type: string type: object handler.ListChannelMessages.response: properties: messages: items: $ref: '#/definitions/models.MessageJSON' type: array next_page_token: type: string page_size: type: integer type: object handler.ListChannelSubscriptions.response: properties: subscriptions: items: $ref: '#/definitions/models.SubscriptionJSON' type: array type: object handler.ListChannels.response: properties: channels: items: $ref: '#/definitions/models.ChannelJSON' type: array type: object handler.ListClients.response: properties: clients: items: $ref: '#/definitions/models.ClientJSON' type: array type: object handler.ListMessages.response: properties: messages: items: $ref: '#/definitions/models.MessageJSON' type: array next_page_token: type: string page_size: type: integer type: object handler.ListUserSubscriptions.response: properties: subscriptions: items: $ref: '#/definitions/models.SubscriptionJSON' type: array type: object handler.Register.response: properties: is_pro: type: integer message: type: string quota: type: integer quota_max: type: integer success: type: boolean user_id: type: integer user_key: type: string type: object handler.Requery.response: properties: count: type: integer data: items: $ref: '#/definitions/models.CompatMessage' type: array message: type: string success: type: boolean type: object handler.SendMessage.body: properties: chan_key: type: string channel: type: string content: type: string msg_id: type: string priority: type: integer timestamp: type: number title: type: string user_id: type: integer user_key: type: string type: object handler.Update.response: properties: is_pro: type: integer message: type: string quota: type: integer quota_max: type: integer success: type: boolean user_id: type: integer user_key: type: string type: object handler.Upgrade.response: properties: is_pro: type: boolean message: type: string quota: type: integer quota_max: type: integer success: type: boolean user_id: type: integer type: object handler.pingResponse: properties: info: $ref: '#/definitions/handler.pingResponseInfo' message: type: string type: object handler.pingResponseInfo: properties: addr: type: string headers: additionalProperties: items: type: string type: array type: object method: type: string request: type: string uri: type: string type: object handler.sendMessageInternal.response: properties: errhighlight: type: integer error: type: integer is_pro: type: boolean message: type: string messagecount: type: integer quota: type: integer quota_max: type: integer scn_msg_id: type: integer success: type: boolean suppress_send: type: boolean type: object models.ChannelJSON: properties: channel_id: type: integer messages_sent: type: integer name: type: string owner_user_id: type: integer send_key: description: can be nil, depending on endpoint type: string subscribe_key: description: can be nil, depending on endpoint type: string timestamp_created: type: string timestamp_last_sent: type: string type: object models.ClientJSON: properties: agent_model: type: string agent_version: type: string client_id: type: integer fcm_token: type: string timestamp_created: type: string type: type: string user_id: type: integer type: object models.CompatMessage: properties: body: type: string priority: type: integer scn_msg_id: type: integer timestamp: type: integer title: type: string trimmed: type: boolean usr_msg_id: type: string type: object models.MessageJSON: properties: body: type: string channel_id: type: integer channel_name: type: string owner_user_id: type: integer priority: type: integer scn_message_id: type: integer sender_user_id: type: integer timestamp: type: string title: type: string trimmed: type: boolean usr_message_id: type: string type: object models.SubscriptionJSON: properties: channel_id: type: integer channel_name: type: string channel_owner_user_id: type: integer confirmed: type: boolean subscriber_user_id: type: integer subscription_id: type: integer timestamp_created: type: string type: object models.UserJSON: properties: admin_key: type: string default_channel: type: string is_pro: type: boolean messages_sent: type: integer quota_used: type: integer quota_used_day: type: string read_key: type: string send_key: type: string timestamp_created: type: string timestamp_last_read: type: string timestamp_last_sent: type: string user_id: type: integer username: type: string type: object host: scn.blackforestbytes.com info: contact: {} description: API for SCN title: SimpleCloudNotifier API version: "2.0" paths: /: post: description: All parameter can be set via query-parameter or the json body. Only UserID, UserKey and Title are required parameters: - in: query name: chanKey type: string - in: query name: channel type: string - in: query name: content type: string - in: query name: priority type: integer - in: query name: sendTimestamp type: number - in: query name: title type: string - in: query name: userID type: integer - in: query name: userKey type: string - in: query name: userMessageID type: string - description: ' ' in: body name: post_body schema: $ref: '#/definitions/handler.SendMessage.body' - in: formData name: chan_key type: string - in: formData name: channel type: string - in: formData name: content type: string - in: formData name: msg_id type: string - in: formData name: priority type: integer - in: formData name: timestamp type: number - in: formData name: title type: string - in: formData name: user_id type: integer - in: formData name: user_key type: string responses: "200": description: OK schema: $ref: '#/definitions/handler.sendMessageInternal.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: The user_id was not found or the user_key is wrong schema: $ref: '#/definitions/ginresp.apiError' "403": description: The user has exceeded its daily quota - wait 24 hours or upgrade your account schema: $ref: '#/definitions/ginresp.apiError' "500": description: An internal server error occurred - try again later schema: $ref: '#/definitions/ginresp.apiError' summary: Send a new message tags: - External /api/ack.php: get: deprecated: true operationId: compat-ack parameters: - description: the user_id in: query name: user_id required: true type: string - description: the user_key in: query name: user_key required: true type: string - description: the message id in: query name: scn_msg_id required: true type: string - description: the user_id in: formData name: user_id required: true type: string - description: the user_key in: formData name: user_key required: true type: string - description: the message id in: formData name: scn_msg_id required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Acknowledge that a message was received tags: - API-v1 /api/db-test: get: operationId: api-common-dbtest responses: "200": description: OK schema: $ref: '#/definitions/handler.DatabaseTest.response' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Check for a wroking database connection tags: - Common /api/expand.php: get: deprecated: true operationId: compat-expand parameters: - description: The user_id in: query name: user_id required: true type: string - description: The user_key in: query name: user_key required: true type: string - description: The message-id in: query name: scn_msg_id required: true type: string - description: The user_id in: formData name: user_id required: true type: string - description: The user_key in: formData name: user_key required: true type: string - description: The message-id in: formData name: scn_msg_id required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Get a whole (potentially truncated) message tags: - API-v1 /api/health: get: operationId: api-common-health responses: "200": description: OK schema: $ref: '#/definitions/handler.Health.response' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Server Health-checks tags: - Common /api/info.php: get: deprecated: true operationId: compat-info parameters: - description: the user_id in: query name: user_id required: true type: string - description: the user_key in: query name: user_key required: true type: string - description: the user_id in: formData name: user_id required: true type: string - description: the user_key in: formData name: user_key required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Get information about the current user tags: - API-v1 /api/messages: get: description: |- The next_page_token is an opaque token, the special value "@start" (or empty-string) is the beginning and "@end" is the end Simply start the pagination without a next_page_token and get the next page by calling this endpoint with the returned next_page_token of the last query If there are no more entries the token "@end" will be returned By default we return long messages with a trimmed body, if trimmed=false is supplied we return full messages (this reduces the max page_size) operationId: api-messages-list parameters: - in: query name: filter type: string - in: query name: nextPageToken type: string - in: query name: pageSize type: integer - in: query name: trimmed type: boolean responses: "200": description: OK schema: $ref: '#/definitions/handler.ListMessages.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List all (subscribed) messages tags: - API-v2 post: description: |- This is similar to the main route `POST -> https://scn.blackfrestbytes.com/` But this route can change in the future, for long-living scripts etc. it's better to use the normal POST route operationId: api-messages-create parameters: - in: query name: chan_key type: string - in: query name: channel type: string - in: query name: content type: string - in: query name: msg_id type: string - in: query name: priority type: integer - in: query name: timestamp type: number - in: query name: title type: string responses: "200": description: OK schema: $ref: '#/definitions/models.MessageJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Create a new message tags: - API-v2 /api/messages/{mid}: patch: description: The user must own the message and request the resource with the ADMIN Key operationId: api-messages-delete parameters: - description: SCNMessageID in: path name: mid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.MessageJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Delete a single message tags: - API-v2 /api/ping: delete: operationId: api-common-ping responses: "200": description: OK schema: $ref: '#/definitions/handler.pingResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Simple endpoint to test connection (any http method) tags: - Common get: operationId: api-common-ping responses: "200": description: OK schema: $ref: '#/definitions/handler.pingResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Simple endpoint to test connection (any http method) tags: - Common patch: operationId: api-common-ping responses: "200": description: OK schema: $ref: '#/definitions/handler.pingResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Simple endpoint to test connection (any http method) tags: - Common post: operationId: api-common-ping responses: "200": description: OK schema: $ref: '#/definitions/handler.pingResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Simple endpoint to test connection (any http method) tags: - Common put: operationId: api-common-ping responses: "200": description: OK schema: $ref: '#/definitions/handler.pingResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Simple endpoint to test connection (any http method) tags: - Common /api/register.php: get: deprecated: true operationId: compat-register parameters: - description: the (android) fcm token in: query name: fcm_token required: true type: string - description: if the user is a paid account enum: - "true" - "false" in: query name: pro required: true type: string - description: the (android) IAP token in: query name: pro_token required: true type: string - description: the (android) fcm token in: formData name: fcm_token required: true type: string - description: if the user is a paid account enum: - "true" - "false" in: formData name: pro required: true type: string - description: the (android) IAP token in: formData name: pro_token required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Register a new account tags: - API-v1 /api/requery.php: get: deprecated: true operationId: compat-requery parameters: - description: the user_id in: query name: user_id required: true type: string - description: the user_key in: query name: user_key required: true type: string - description: the user_id in: formData name: user_id required: true type: string - description: the user_key in: formData name: user_key required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Return all not-acknowledged messages tags: - API-v1 /api/update.php: get: deprecated: true operationId: compat-update parameters: - description: the user_id in: query name: user_id required: true type: string - description: the user_key in: query name: user_key required: true type: string - description: the (android) fcm token in: query name: fcm_token required: true type: string - description: the user_id in: formData name: user_id required: true type: string - description: the user_key in: formData name: user_key required: true type: string - description: the (android) fcm token in: formData name: fcm_token required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Set the fcm-token (android) tags: - API-v1 /api/upgrade.php: get: deprecated: true operationId: compat-upgrade parameters: - description: the user_id in: query name: user_id required: true type: string - description: the user_key in: query name: user_key required: true type: string - description: if the user is a paid account enum: - "true" - "false" in: query name: pro required: true type: string - description: the (android) IAP token in: query name: pro_token required: true type: string - description: the user_id in: formData name: user_id required: true type: string - description: the user_key in: formData name: user_key required: true type: string - description: if the user is a paid account enum: - "true" - "false" in: formData name: pro required: true type: string - description: the (android) IAP token in: formData name: pro_token required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/ginresp.compatAPIError' summary: Upgrade a free account to a paid account tags: - API-v1 /api/users/: post: operationId: api-user-create parameters: - description: ' ' in: body name: post_body schema: $ref: '#/definitions/handler.CreateUser.body' responses: "200": description: OK schema: $ref: '#/definitions/handler.sendMessageInternal.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Create a new user tags: - API-v2 /api/users/{uid}: get: operationId: api-user-get parameters: - description: UserID in: path name: uid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.UserJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Get a user tags: - API-v2 patch: description: The body-values are optional, only send the ones you want to update operationId: api-user-update parameters: - description: UserID in: path name: uid required: true type: integer - description: Change the username (send an empty string to clear it) in: body name: username schema: type: string - description: Send a verification of permium purchase in: body name: pro_token schema: type: string - description: Send `true` to create a new read_key in: body name: read_key schema: type: string - description: Send `true` to create a new send_key in: body name: send_key schema: type: string - description: Send `true` to create a new admin_key in: body name: admin_key schema: type: string responses: "200": description: OK schema: $ref: '#/definitions/models.UserJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: (Partially) update a user tags: - API-v2 /api/users/{uid}/channels: get: description: |- The possible values for 'selector' are: - "owned" Return all channels of the user - "subscribed" Return all channels that the user is subscribing to - "all" Return channels that the user owns or is subscribing - "subscribed_any" Return all channels that the user is subscribing to (even unconfirmed) - "all_any" Return channels that the user owns or is subscribing (even unconfirmed) operationId: api-channels-list parameters: - description: UserID in: path name: uid required: true type: integer - description: 'Filter channels (default: owned)' enum: - owned - subscribed - all - subscribed_any - all_any in: query name: selector required: true type: string responses: "200": description: OK schema: $ref: '#/definitions/handler.ListChannels.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List channels of a user (subscribed/owned) tags: - API-v2 /api/users/{uid}/channels/{cid}: get: operationId: api-channels-get parameters: - description: UserID in: path name: uid required: true type: integer - description: ChannelID in: path name: cid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.ChannelJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List all channels of a user tags: - API-v2 patch: operationId: api-channels-update parameters: - description: UserID in: path name: uid required: true type: integer - description: ChannelID in: path name: cid required: true type: integer - description: Send `true` to create a new subscribe_key in: body name: subscribe_key schema: type: string - description: Send `true` to create a new send_key in: body name: send_key schema: type: string responses: "200": description: OK schema: $ref: '#/definitions/models.ChannelJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: (Partially) update a channel tags: - API-v2 /api/users/{uid}/channels/{cid}/messages: get: description: |- The next_page_token is an opaque token, the special value "@start" (or empty-string) is the beginning and "@end" is the end Simply start the pagination without a next_page_token and get the next page by calling this endpoint with the returned next_page_token of the last query If there are no more entries the token "@end" will be returned By default we return long messages with a trimmed body, if trimmed=false is supplied we return full messages (this reduces the max page_size) operationId: api-channel-messages parameters: - in: query name: filter type: string - in: query name: nextPageToken type: string - in: query name: pageSize type: integer - in: query name: trimmed type: boolean responses: "200": description: OK schema: $ref: '#/definitions/handler.ListChannelMessages.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List messages of a channel tags: - API-v2 /api/users/{uid}/channels/{cid}/subscriptions: get: operationId: api-chan-subscriptions-list parameters: - description: UserID in: path name: uid required: true type: integer - description: ChannelID in: path name: cid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/handler.ListChannelSubscriptions.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List all subscriptions of a channel tags: - API-v2 /api/users/{uid}/clients: get: operationId: api-clients-list parameters: - description: UserID in: path name: uid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/handler.ListClients.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List all clients tags: - API-v2 post: operationId: api-clients-delete parameters: - description: UserID in: path name: uid required: true type: integer - description: ClientID in: path name: cid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.ClientJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Delete a client tags: - API-v2 /api/users/{uid}/clients/{cid}: get: operationId: api-clients-get parameters: - description: UserID in: path name: uid required: true type: integer - description: ClientID in: path name: cid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.ClientJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Get a single clients tags: - API-v2 /api/users/{uid}/subscriptions: get: operationId: api-user-subscriptions-list parameters: - description: UserID in: path name: uid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/handler.ListUserSubscriptions.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: List all channels of a user tags: - API-v2 post: operationId: api-subscriptions-create parameters: - description: UserID in: path name: uid required: true type: integer - in: query name: chanSubscribeKey type: string - description: ' ' in: body name: post_data schema: $ref: '#/definitions/handler.CreateSubscription.body' responses: "200": description: OK schema: $ref: '#/definitions/models.SubscriptionJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Creare/Request a subscription tags: - API-v2 /api/users/{uid}/subscriptions/{sid}: delete: operationId: api-subscriptions-delete parameters: - description: UserID in: path name: uid required: true type: integer - description: SubscriptionID in: path name: sid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.SubscriptionJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Cancel (delete) subscription tags: - API-v2 get: operationId: api-subscriptions-get parameters: - description: UserID in: path name: uid required: true type: integer - description: SubscriptionID in: path name: sid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.SubscriptionJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Get a single subscription tags: - API-v2 patch: operationId: api-subscriptions-update parameters: - description: UserID in: path name: uid required: true type: integer - description: SubscriptionID in: path name: sid required: true type: integer responses: "200": description: OK schema: $ref: '#/definitions/models.SubscriptionJSON' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "404": description: Not Found schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Update a subscription (e.g. confirm) tags: - API-v2 /send: post: description: All parameter can be set via query-parameter or the json body. Only UserID, UserKey and Title are required parameters: - in: query name: chanKey type: string - in: query name: channel type: string - in: query name: content type: string - in: query name: priority type: integer - in: query name: sendTimestamp type: number - in: query name: title type: string - in: query name: userID type: integer - in: query name: userKey type: string - in: query name: userMessageID type: string - description: ' ' in: body name: post_body schema: $ref: '#/definitions/handler.SendMessage.body' - in: formData name: chan_key type: string - in: formData name: channel type: string - in: formData name: content type: string - in: formData name: msg_id type: string - in: formData name: priority type: integer - in: formData name: timestamp type: number - in: formData name: title type: string - in: formData name: user_id type: integer - in: formData name: user_key type: string responses: "200": description: OK schema: $ref: '#/definitions/handler.sendMessageInternal.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: The user_id was not found or the user_key is wrong schema: $ref: '#/definitions/ginresp.apiError' "403": description: The user has exceeded its daily quota - wait 24 hours or upgrade your account schema: $ref: '#/definitions/ginresp.apiError' "500": description: An internal server error occurred - try again later schema: $ref: '#/definitions/ginresp.apiError' summary: Send a new message tags: - External /send.php: post: deprecated: true description: All parameter can be set via query-parameter or form-data body. Only UserID, UserKey and Title are required parameters: - in: query name: content type: string - in: query name: priority type: integer - in: query name: sendTimestamp type: number - in: query name: title type: string - in: query name: userID type: integer - in: query name: userKey type: string - in: query name: userMessageID type: string - in: formData name: content type: string - in: formData name: priority type: integer - in: formData name: sendTimestamp type: number - in: formData name: title type: string - in: formData name: userID type: integer - in: formData name: userKey type: string - in: formData name: userMessageID type: string responses: "200": description: OK schema: $ref: '#/definitions/handler.sendMessageInternal.response' "400": description: Bad Request schema: $ref: '#/definitions/ginresp.apiError' "401": description: Unauthorized schema: $ref: '#/definitions/ginresp.apiError' "403": description: Forbidden schema: $ref: '#/definitions/ginresp.apiError' "500": description: Internal Server Error schema: $ref: '#/definitions/ginresp.apiError' summary: Send a new message (compatibility) tags: - External swagger: "2.0" tags: - name: Common - name: External - name: API-v1 - name: API-v2