SimpleCloudNotifier/server/swagger/swagger.json

3039 lines
104 KiB
JSON
Raw Normal View History

2022-11-13 19:17:07 +01:00
{
"swagger": "2.0",
"info": {
"description": "API for SCN",
"title": "SimpleCloudNotifier API",
"contact": {},
"version": "2.0"
},
"host": "scn.blackforestbytes.com",
2022-11-18 21:25:40 +01:00
"basePath": "/",
2022-11-13 19:17:07 +01:00
"paths": {
2022-11-19 15:13:47 +01:00
"/": {
"post": {
2022-11-20 00:19:41 +01:00
"description": "All parameter can be set via query-parameter or the json body. Only UserID, UserKey and Title are required",
2022-11-23 19:32:23 +01:00
"tags": [
"External"
],
2022-11-19 15:13:47 +01:00
"summary": "Send a new message",
"parameters": [
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "qhnUbKcLgp6tg",
"name": "chan_key",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "test",
2022-11-20 00:19:41 +01:00
"name": "channel",
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "This is a message",
2022-11-20 00:19:41 +01:00
"name": "content",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "db8b0e6a-a08c-4646",
"name": "msg_id",
"in": "query"
},
2022-11-19 15:13:47 +01:00
{
2022-11-30 17:58:04 +01:00
"enum": [
0,
1,
2
],
2022-11-19 15:13:47 +01:00
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 1,
2022-11-19 15:13:47 +01:00
"name": "priority",
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "example-server",
"name": "sender_name",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "number",
2022-11-30 17:58:04 +01:00
"example": 1669824037,
"name": "timestamp",
"in": "query"
},
2022-11-19 15:13:47 +01:00
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "Hello World",
2022-11-20 00:19:41 +01:00
"name": "title",
"in": "query"
},
{
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 7725,
"name": "user_id",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "P3TNH8mvv14fm",
"name": "user_key",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"description": " ",
"name": "post_body",
"in": "body",
"schema": {
2022-11-30 17:58:04 +01:00
"$ref": "#/definitions/handler.SendMessage.combined"
2022-11-19 15:13:47 +01:00
}
2022-11-20 21:15:06 +01:00
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "qhnUbKcLgp6tg",
2022-11-20 21:15:06 +01:00
"name": "chan_key",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "test",
2022-11-20 21:15:06 +01:00
"name": "channel",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "This is a message",
2022-11-20 21:15:06 +01:00
"name": "content",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "db8b0e6a-a08c-4646",
2022-11-20 21:15:06 +01:00
"name": "msg_id",
"in": "formData"
},
{
2022-11-30 17:58:04 +01:00
"enum": [
0,
1,
2
],
2022-11-20 21:15:06 +01:00
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 1,
2022-11-20 21:15:06 +01:00
"name": "priority",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "example-server",
"name": "sender_name",
"in": "formData"
},
2022-11-20 21:15:06 +01:00
{
"type": "number",
2022-11-30 17:58:04 +01:00
"example": 1669824037,
2022-11-20 21:15:06 +01:00
"name": "timestamp",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "Hello World",
2022-11-20 21:15:06 +01:00
"name": "title",
"in": "formData"
},
{
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 7725,
2022-11-20 21:15:06 +01:00
"name": "user_id",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "P3TNH8mvv14fm",
2022-11-20 21:15:06 +01:00
"name": "user_key",
"in": "formData"
2022-11-19 15:13:47 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-20 03:06:08 +01:00
"$ref": "#/definitions/handler.sendMessageInternal.response"
2022-11-20 00:19:41 +01:00
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"401": {
2022-11-21 22:52:44 +01:00
"description": "The user_id was not found or the user_key is wrong",
2022-11-20 00:19:41 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"403": {
2022-11-21 22:52:44 +01:00
"description": "The user has exceeded its daily quota - wait 24 hours or upgrade your account",
2022-11-20 00:19:41 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"500": {
2022-11-21 22:52:44 +01:00
"description": "An internal server error occurred - try again later",
2022-11-20 00:19:41 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/ack.php": {
"get": {
"tags": [
"API-v1"
],
"summary": "Acknowledge that a message was received",
"operationId": "compat-ack",
"deprecated": true,
"parameters": [
{
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the message id",
"name": "scn_msg_id",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the message id",
"name": "scn_msg_id",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ginresp.compatAPIError"
}
}
}
}
},
"/api/db-test": {
"post": {
2022-11-23 19:32:23 +01:00
"tags": [
"Common"
],
"summary": "Check for a wroking database connection",
"operationId": "api-common-dbtest",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.DatabaseTest.response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
"/api/expand.php": {
"get": {
"tags": [
"API-v1"
],
"summary": "Get a whole (potentially truncated) message",
"operationId": "compat-expand",
"deprecated": true,
"parameters": [
{
"type": "string",
"description": "The user_id",
"name": "user_id",
"in": "query",
"required": true
},
{
"type": "string",
"description": "The user_key",
"name": "user_key",
"in": "query",
"required": true
},
{
"type": "string",
"description": "The message-id",
"name": "scn_msg_id",
"in": "query",
"required": true
},
{
"type": "string",
"description": "The user_id",
"name": "user_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "The user_key",
"name": "user_key",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "The message-id",
"name": "scn_msg_id",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ginresp.compatAPIError"
}
}
}
}
},
"/api/health": {
"get": {
"tags": [
"Common"
],
"summary": "Server Health-checks",
"operationId": "api-common-health",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.Health.response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
"/api/info.php": {
"get": {
"tags": [
"API-v1"
],
"summary": "Get information about the current user",
"operationId": "compat-info",
"deprecated": true,
"parameters": [
{
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ginresp.compatAPIError"
}
}
}
}
},
"/api/messages": {
2022-11-20 00:19:41 +01:00
"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\nSimply 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\nIf there are no more entries the token \"@end\" will be returned\nBy default we return long messages with a trimmed body, if trimmed=false is supplied we return full messages (this reduces the max page_size)",
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
2022-11-20 00:19:41 +01:00
"summary": "List all (subscribed) messages",
"operationId": "api-messages-list",
"parameters": [
{
"type": "string",
"name": "filter",
"in": "query"
},
{
"type": "string",
"name": "next_page_token",
2022-11-20 00:19:41 +01:00
"in": "query"
},
{
"type": "integer",
"name": "page_size",
2022-11-20 00:19:41 +01:00
"in": "query"
},
{
"type": "boolean",
"description": "TODO more filter (sender-name, channel, timestamps, prio, )",
2022-11-20 00:19:41 +01:00
"name": "trimmed",
"in": "query"
}
],
"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"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/messages/{mid}": {
2022-11-23 22:12:47 +01:00
"delete": {
2022-11-20 00:19:41 +01:00
"description": "The user must own the message and request the resource with the ADMIN Key",
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
2022-11-20 00:19:41 +01:00
"summary": "Delete a single message",
"operationId": "api-messages-delete",
"parameters": [
{
"type": "integer",
"description": "SCNMessageID",
"name": "mid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.MessageJSON"
2022-11-19 15:13:47 +01:00
}
},
"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"
}
}
}
2022-11-23 22:12:47 +01:00
},
"patch": {
"description": "The user must either own the message and request the resource with the READ or ADMIN Key\nOr the user must subscribe to the corresponding channel (and be confirmed) and request the resource with the READ or ADMIN Key\nThe returned message is never trimmed",
"tags": [
"API-v2"
],
"summary": "Get a single message (untrimmed)",
"operationId": "api-messages-get",
"parameters": [
{
"type": "integer",
"description": "SCNMessageID",
"name": "mid",
"in": "path",
"required": true
}
],
"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"
}
}
}
2022-11-19 15:13:47 +01:00
}
},
2022-11-23 19:32:23 +01:00
"/api/ping": {
"get": {
"tags": [
"Common"
2022-11-20 00:19:41 +01:00
],
2022-11-23 19:32:23 +01:00
"summary": "Simple endpoint to test connection (any http method)",
2022-11-20 00:19:41 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.pingResponse"
2022-11-20 00:19:41 +01:00
}
},
2022-11-23 19:32:23 +01:00
"500": {
"description": "Internal Server Error",
2022-11-20 00:19:41 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
2022-11-23 19:32:23 +01:00
}
}
},
"put": {
"tags": [
"Common"
],
"summary": "Simple endpoint to test connection (any http method)",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.pingResponse"
}
2022-11-20 00:19:41 +01:00
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
2022-11-23 19:32:23 +01:00
},
"post": {
"tags": [
"Common"
2022-11-20 00:19:41 +01:00
],
2022-11-23 19:32:23 +01:00
"summary": "Simple endpoint to test connection (any http method)",
2022-11-20 00:19:41 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.pingResponse"
2022-11-20 00:19:41 +01:00
}
},
2022-11-23 19:32:23 +01:00
"500": {
"description": "Internal Server Error",
2022-11-20 00:19:41 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
2022-11-23 19:32:23 +01:00
}
}
},
"delete": {
"tags": [
"Common"
],
"summary": "Simple endpoint to test connection (any http method)",
"responses": {
"200": {
"description": "OK",
2022-11-20 00:19:41 +01:00
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.pingResponse"
2022-11-20 00:19:41 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
},
"patch": {
2022-11-23 19:32:23 +01:00
"tags": [
"Common"
2022-11-20 00:19:41 +01:00
],
2022-11-23 19:32:23 +01:00
"summary": "Simple endpoint to test connection (any http method)",
2022-11-20 00:19:41 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.pingResponse"
2022-11-20 00:19:41 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/register.php": {
2022-11-20 00:19:41 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v1"
],
"summary": "Register a new account",
"operationId": "compat-register",
"deprecated": true,
2022-11-20 00:19:41 +01:00
"parameters": [
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the (android) fcm token",
"name": "fcm_token",
"in": "query",
2022-11-20 00:19:41 +01:00
"required": true
2022-11-20 21:15:06 +01:00
},
{
"enum": [
2022-11-23 19:32:23 +01:00
"true",
"false"
2022-11-20 21:15:06 +01:00
],
"type": "string",
2022-11-23 19:32:23 +01:00
"description": "if the user is a paid account",
"name": "pro",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the (android) IAP token",
"name": "pro_token",
2022-11-20 21:15:06 +01:00
"in": "query",
"required": true
2022-11-23 19:32:23 +01:00
},
{
"type": "string",
"description": "the (android) fcm token",
"name": "fcm_token",
"in": "formData",
"required": true
},
{
"enum": [
"true",
"false"
],
"type": "string",
"description": "if the user is a paid account",
"name": "pro",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the (android) IAP token",
"name": "pro_token",
"in": "formData",
"required": true
2022-11-20 00:19:41 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/ginresp.compatAPIError"
2022-11-20 00:19:41 +01:00
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/requery.php": {
2022-11-20 00:19:41 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v1"
],
"summary": "Return all not-acknowledged messages",
"operationId": "compat-requery",
"deprecated": true,
2022-11-20 00:19:41 +01:00
"parameters": [
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "query",
2022-11-20 00:19:41 +01:00
"required": true
},
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "formData",
2022-11-20 00:19:41 +01:00
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/ginresp.compatAPIError"
2022-11-20 00:19:41 +01:00
}
}
}
2022-11-23 19:32:23 +01:00
}
},
2022-11-23 20:21:49 +01:00
"/api/sleep/{secs}": {
"post": {
"tags": [
"Common"
],
"summary": "Return 200 after x seconds",
"operationId": "api-common-sleep",
2022-11-23 22:12:47 +01:00
"parameters": [
{
"type": "number",
"description": "sleep delay (in seconds)",
"name": "secs",
"in": "path",
"required": true
}
],
2022-11-23 20:21:49 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.Sleep.response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/update.php": {
"get": {
"tags": [
"API-v1"
],
"summary": "Set the fcm-token (android)",
"operationId": "compat-update",
"deprecated": true,
"parameters": [
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "query",
"required": true
},
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "query",
"required": true
},
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the (android) fcm token",
"name": "fcm_token",
"in": "query",
"required": true
},
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the (android) fcm token",
"name": "fcm_token",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/ginresp.compatAPIError"
}
}
}
2022-11-20 00:19:41 +01:00
}
},
2022-11-23 19:32:23 +01:00
"/api/upgrade.php": {
2022-11-20 00:30:30 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v1"
],
"summary": "Upgrade a free account to a paid account",
"operationId": "compat-upgrade",
"deprecated": true,
2022-11-20 00:30:30 +01:00
"parameters": [
{
"type": "string",
2022-11-23 19:32:23 +01:00
"description": "the user_id",
"name": "user_id",
"in": "query",
"required": true
2022-11-20 00:30:30 +01:00
},
{
"type": "string",
2022-11-23 19:32:23 +01:00
"description": "the user_key",
"name": "user_key",
"in": "query",
"required": true
2022-11-20 00:30:30 +01:00
},
{
2022-11-23 19:32:23 +01:00
"enum": [
"true",
"false"
],
"type": "string",
"description": "if the user is a paid account",
"name": "pro",
"in": "query",
"required": true
2022-11-20 00:30:30 +01:00
},
{
2022-11-23 19:32:23 +01:00
"type": "string",
"description": "the (android) IAP token",
"name": "pro_token",
"in": "query",
"required": true
},
{
"type": "string",
"description": "the user_id",
"name": "user_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the user_key",
"name": "user_key",
"in": "formData",
"required": true
},
{
"enum": [
"true",
"false"
],
"type": "string",
"description": "if the user is a paid account",
"name": "pro",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "the (android) IAP token",
"name": "pro_token",
"in": "formData",
"required": true
2022-11-20 00:30:30 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/ginresp.compatAPIError"
2022-11-20 00:30:30 +01:00
}
2022-11-23 19:32:23 +01:00
}
}
}
},
"/api/users": {
2022-11-23 19:32:23 +01:00
"post": {
"tags": [
"API-v2"
],
"summary": "Create a new user",
"operationId": "api-user-create",
"parameters": [
{
"description": " ",
"name": "post_body",
"in": "body",
2022-11-20 00:30:30 +01:00
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.CreateUser.body"
2022-11-20 00:30:30 +01:00
}
2022-11-23 19:32:23 +01:00
}
],
"responses": {
"200": {
"description": "OK",
2022-11-20 00:30:30 +01:00
"schema": {
2022-11-24 12:53:27 +01:00
"$ref": "#/definitions/models.UserJSONWithClients"
2022-11-20 00:30:30 +01:00
}
},
2022-11-23 19:32:23 +01:00
"400": {
"description": "Bad Request",
2022-11-20 00:30:30 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/users/{uid}": {
2022-11-20 00:19:41 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "Get a user",
"operationId": "api-user-get",
2022-11-20 00:19:41 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/models.UserJSON"
2022-11-20 00:19:41 +01:00
}
},
"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"
}
}
}
2022-11-23 19:32:23 +01:00
},
"patch": {
"description": "The body-values are optional, only send the ones you want to update",
"tags": [
"API-v2"
],
"summary": "(Partially) update a user",
"operationId": "api-user-update",
2022-11-20 00:19:41 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
2022-11-23 19:32:23 +01:00
},
{
"description": "Change the username (send an empty string to clear it)",
"name": "username",
"in": "body",
"schema": {
"type": "string"
}
},
{
"description": "Send a verification of permium purchase",
"name": "pro_token",
"in": "body",
"schema": {
"type": "string"
}
},
{
"description": "Send `true` to create a new read_key",
"name": "read_key",
"in": "body",
"schema": {
"type": "string"
}
},
{
"description": "Send `true` to create a new send_key",
"name": "send_key",
"in": "body",
"schema": {
"type": "string"
}
},
{
"description": "Send `true` to create a new admin_key",
"name": "admin_key",
"in": "body",
"schema": {
"type": "string"
}
2022-11-20 00:19:41 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/models.UserJSON"
2022-11-20 00:19:41 +01:00
}
},
"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"
}
}
}
2022-11-23 19:32:23 +01:00
}
},
"/api/users/{uid}/channels": {
"get": {
"description": "The possible values for 'selector' are:\n- \"owned\" Return all channels of the user\n- \"subscribed\" Return all channels that the user is subscribing to\n- \"all\" Return channels that the user owns or is subscribing\n- \"subscribed_any\" Return all channels that the user is subscribing to (even unconfirmed)\n- \"all_any\" Return channels that the user owns or is subscribing (even unconfirmed)",
"tags": [
"API-v2"
],
"summary": "List channels of a user (subscribed/owned)",
"operationId": "api-channels-list",
"parameters": [
{
"type": "integer",
"description": "UserID",
2022-11-20 00:19:41 +01:00
"name": "uid",
"in": "path",
"required": true
},
{
2022-11-23 19:32:23 +01:00
"enum": [
"owned",
"subscribed",
"all",
"subscribed_any",
"all_any"
],
"type": "string",
"description": "Filter channels (default: owned)",
"name": "selector",
"in": "query",
2022-11-20 00:19:41 +01:00
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.ListChannels.response"
2022-11-20 00:19:41 +01:00
}
},
"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"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/users/{uid}/channels/{cid}": {
2022-11-20 00:19:41 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "List all channels of a user",
"operationId": "api-channels-get",
2022-11-20 00:19:41 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
2022-11-23 19:32:23 +01:00
"description": "ChannelID",
2022-11-20 00:19:41 +01:00
"name": "cid",
"in": "path",
"required": true
2022-11-18 21:25:40 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/models.ChannelJSON"
2022-11-18 21:25:40 +01:00
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
2022-11-20 00:19:41 +01:00
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
2022-11-18 21:25:40 +01:00
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
2022-11-23 19:32:23 +01:00
},
"patch": {
"tags": [
"API-v2"
],
"summary": "(Partially) update a channel",
"operationId": "api-channels-update",
2022-11-18 23:28:37 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
2022-11-23 19:32:23 +01:00
},
{
"type": "integer",
"description": "ChannelID",
"name": "cid",
"in": "path",
"required": true
},
{
"description": "Send `true` to create a new subscribe_key",
"name": "subscribe_key",
"in": "body",
"schema": {
"type": "string"
}
},
{
"description": "Send `true` to create a new send_key",
"name": "send_key",
"in": "body",
"schema": {
"type": "string"
}
2022-11-18 23:28:37 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/models.ChannelJSON"
2022-11-18 23:28:37 +01:00
}
},
"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"
}
}
}
2022-11-23 19:32:23 +01:00
}
},
"/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\nSimply 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\nIf there are no more entries the token \"@end\" will be returned\nBy default we return long messages with a trimmed body, if trimmed=false is supplied we return full messages (this reduces the max page_size)",
"tags": [
"API-v2"
],
"summary": "List messages of a channel",
"operationId": "api-channel-messages",
2022-11-18 23:28:37 +01:00
"parameters": [
2022-11-20 00:19:41 +01:00
{
2022-11-23 19:32:23 +01:00
"type": "string",
"name": "filter",
"in": "query"
2022-11-20 00:19:41 +01:00
},
{
"type": "string",
"name": "next_page_token",
2022-11-20 00:19:41 +01:00
"in": "query"
},
2022-11-18 23:28:37 +01:00
{
2022-11-23 19:32:23 +01:00
"type": "integer",
"name": "page_size",
2022-11-23 19:32:23 +01:00
"in": "query"
},
{
"type": "boolean",
"name": "trimmed",
"in": "query"
2022-11-23 22:12:47 +01:00
},
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "ChannelID",
"name": "cid",
"in": "path",
"required": true
2022-11-18 23:28:37 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.ListChannelMessages.response"
2022-11-18 23:28:37 +01:00
}
},
"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"
}
}
}
}
},
2022-11-23 19:32:23 +01:00
"/api/users/{uid}/channels/{cid}/subscriptions": {
2022-11-19 12:47:23 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "List all subscriptions of a channel",
"operationId": "api-chan-subscriptions-list",
2022-11-19 12:47:23 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
2022-11-20 00:19:41 +01:00
},
{
"type": "integer",
2022-11-23 19:32:23 +01:00
"description": "ChannelID",
"name": "cid",
2022-11-20 00:19:41 +01:00
"in": "path",
"required": true
2022-11-19 12:47:23 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.ListChannelSubscriptions.response"
2022-11-19 12:47:23 +01:00
}
},
"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"
2022-11-19 12:50:41 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
2022-11-23 19:32:23 +01:00
}
},
"/api/users/{uid}/clients": {
"get": {
"tags": [
"API-v2"
],
"summary": "List all clients",
"operationId": "api-clients-list",
2022-11-19 12:59:25 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/handler.ListClients.response"
2022-11-19 12:59:25 +01:00
}
},
"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"
}
}
}
2022-11-20 00:19:41 +01:00
},
2022-11-23 19:32:23 +01:00
"post": {
2022-11-23 22:12:47 +01:00
"tags": [
"API-v2"
],
"summary": "Add a new clients",
"operationId": "api-clients-create",
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"description": " ",
"name": "post_body",
"in": "body",
"schema": {
"$ref": "#/definitions/handler.AddClient.body"
}
}
],
"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"
}
}
}
}
},
"/api/users/{uid}/clients/{cid}": {
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "Get a single client",
"operationId": "api-clients-get",
2022-11-19 12:50:41 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
2022-11-23 19:32:23 +01:00
"description": "ClientID",
"name": "cid",
2022-11-19 12:50:41 +01:00
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/models.ClientJSON"
2022-11-19 12:50:41 +01:00
}
},
"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"
2022-11-19 12:47:23 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
},
"delete": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
2022-11-13 19:17:07 +01:00
],
"summary": "Delete a client",
"operationId": "api-clients-delete",
2022-11-23 19:32:23 +01:00
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
2022-11-20 13:18:09 +01:00
"required": true
},
{
2022-11-23 19:32:23 +01:00
"type": "integer",
"description": "ClientID",
"name": "cid",
"in": "path",
2022-11-20 13:18:09 +01:00
"required": true
2022-11-13 19:17:07 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/models.ClientJSON"
2022-11-13 19:17:07 +01:00
}
2022-11-23 19:32:23 +01:00
},
"400": {
"description": "Bad Request",
2022-11-18 21:25:40 +01:00
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/ginresp.apiError"
2022-11-18 21:25:40 +01:00
}
},
2022-11-23 19:32:23 +01:00
"401": {
"description": "Unauthorized",
2022-11-18 21:25:40 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
2022-11-23 19:32:23 +01:00
},
"404": {
"description": "Not Found",
2022-11-18 21:25:40 +01:00
"schema": {
2022-11-23 19:32:23 +01:00
"$ref": "#/definitions/ginresp.apiError"
2022-11-18 21:25:40 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
2022-11-13 19:17:07 +01:00
}
}
},
2022-11-23 19:32:23 +01:00
"/api/users/{uid}/subscriptions": {
2022-11-18 21:25:40 +01:00
"get": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "List all channels of a user",
"operationId": "api-user-subscriptions-list",
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
}
],
2022-11-18 21:25:40 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$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"
2022-11-18 21:25:40 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
},
2022-11-23 19:32:23 +01:00
"post": {
"tags": [
"API-v2"
],
"summary": "Creare/Request a subscription",
"operationId": "api-subscriptions-create",
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"name": "chan_subscribe_key",
2022-11-23 19:32:23 +01:00
"in": "query"
},
{
"description": " ",
"name": "post_data",
"in": "body",
"schema": {
"$ref": "#/definitions/handler.CreateSubscription.body"
}
}
],
2022-11-18 21:25:40 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$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"
2022-11-18 21:25:40 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
2022-11-23 19:32:23 +01:00
}
},
"/api/users/{uid}/subscriptions/{sid}": {
"get": {
"tags": [
"API-v2"
],
"summary": "Get a single subscription",
"operationId": "api-subscriptions-get",
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "SubscriptionID",
"name": "sid",
"in": "path",
"required": true
}
],
2022-11-18 21:25:40 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$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"
2022-11-18 21:25:40 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
},
"delete": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "Cancel (delete) subscription",
"operationId": "api-subscriptions-delete",
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "SubscriptionID",
"name": "sid",
"in": "path",
"required": true
}
],
2022-11-18 21:25:40 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$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"
2022-11-18 21:25:40 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
},
"patch": {
2022-11-23 19:32:23 +01:00
"tags": [
"API-v2"
],
"summary": "Update a subscription (e.g. confirm)",
"operationId": "api-subscriptions-update",
"parameters": [
{
"type": "integer",
"description": "UserID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "SubscriptionID",
"name": "sid",
"in": "path",
"required": true
}
],
2022-11-18 21:25:40 +01:00
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-23 19:32:23 +01:00
"$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"
2022-11-18 21:25:40 +01:00
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
2022-11-19 15:13:47 +01:00
},
"/send": {
"post": {
2022-11-20 00:19:41 +01:00
"description": "All parameter can be set via query-parameter or the json body. Only UserID, UserKey and Title are required",
2022-11-23 19:32:23 +01:00
"tags": [
"External"
],
2022-11-19 15:13:47 +01:00
"summary": "Send a new message",
"parameters": [
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "qhnUbKcLgp6tg",
"name": "chan_key",
2022-11-20 00:19:41 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "test",
2022-11-20 00:19:41 +01:00
"name": "channel",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "This is a message",
2022-11-20 00:19:41 +01:00
"name": "content",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "db8b0e6a-a08c-4646",
"name": "msg_id",
"in": "query"
},
2022-11-19 15:13:47 +01:00
{
2022-11-30 17:58:04 +01:00
"enum": [
0,
1,
2
],
2022-11-19 15:13:47 +01:00
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 1,
2022-11-19 15:13:47 +01:00
"name": "priority",
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "example-server",
"name": "sender_name",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "number",
2022-11-30 17:58:04 +01:00
"example": 1669824037,
"name": "timestamp",
"in": "query"
},
2022-11-19 15:13:47 +01:00
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "Hello World",
2022-11-20 00:19:41 +01:00
"name": "title",
"in": "query"
},
{
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 7725,
"name": "user_id",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "P3TNH8mvv14fm",
"name": "user_key",
2022-11-19 15:13:47 +01:00
"in": "query"
},
{
"description": " ",
"name": "post_body",
"in": "body",
"schema": {
2022-11-30 17:58:04 +01:00
"$ref": "#/definitions/handler.SendMessage.combined"
2022-11-19 15:13:47 +01:00
}
2022-11-20 21:15:06 +01:00
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "qhnUbKcLgp6tg",
2022-11-20 21:15:06 +01:00
"name": "chan_key",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "test",
2022-11-20 21:15:06 +01:00
"name": "channel",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "This is a message",
2022-11-20 21:15:06 +01:00
"name": "content",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "db8b0e6a-a08c-4646",
2022-11-20 21:15:06 +01:00
"name": "msg_id",
"in": "formData"
},
{
2022-11-30 17:58:04 +01:00
"enum": [
0,
1,
2
],
2022-11-20 21:15:06 +01:00
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 1,
2022-11-20 21:15:06 +01:00
"name": "priority",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "example-server",
"name": "sender_name",
"in": "formData"
},
2022-11-20 21:15:06 +01:00
{
"type": "number",
2022-11-30 17:58:04 +01:00
"example": 1669824037,
2022-11-20 21:15:06 +01:00
"name": "timestamp",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "Hello World",
2022-11-20 21:15:06 +01:00
"name": "title",
"in": "formData"
},
{
"type": "integer",
2022-11-30 17:58:04 +01:00
"example": 7725,
2022-11-20 21:15:06 +01:00
"name": "user_id",
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"example": "P3TNH8mvv14fm",
2022-11-20 21:15:06 +01:00
"name": "user_key",
"in": "formData"
2022-11-19 15:13:47 +01:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2022-11-20 03:06:08 +01:00
"$ref": "#/definitions/handler.sendMessageInternal.response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"401": {
2022-11-21 22:52:44 +01:00
"description": "The user_id was not found or the user_key is wrong",
2022-11-20 03:06:08 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"403": {
2022-11-21 22:52:44 +01:00
"description": "The user has exceeded its daily quota - wait 24 hours or upgrade your account",
2022-11-20 03:06:08 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"500": {
2022-11-21 22:52:44 +01:00
"description": "An internal server error occurred - try again later",
2022-11-20 03:06:08 +01:00
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
},
"/send.php": {
"post": {
"description": "All parameter can be set via query-parameter or form-data body. Only UserID, UserKey and Title are required",
2022-11-23 19:32:23 +01:00
"tags": [
"External"
],
2022-11-20 03:06:08 +01:00
"summary": "Send a new message (compatibility)",
"deprecated": true,
"parameters": [
{
"type": "string",
"name": "content",
"in": "query"
},
{
"type": "string",
"name": "msg_id",
"in": "query"
},
2022-11-20 03:06:08 +01:00
{
"type": "integer",
"name": "priority",
"in": "query"
},
{
"type": "number",
"name": "timestamp",
2022-11-20 03:06:08 +01:00
"in": "query"
},
{
"type": "string",
"name": "title",
"in": "query"
},
{
"type": "integer",
"name": "user_id",
2022-11-20 03:06:08 +01:00
"in": "query"
},
{
"type": "string",
"name": "user_key",
2022-11-20 03:06:08 +01:00
"in": "query"
},
{
"type": "string",
"name": "content",
"in": "formData"
},
2022-11-30 17:58:04 +01:00
{
"type": "string",
"name": "msg_id",
"in": "formData"
},
2022-11-20 03:06:08 +01:00
{
"type": "integer",
"name": "priority",
"in": "formData"
},
{
"type": "number",
2022-11-30 17:58:04 +01:00
"name": "timestamp",
2022-11-20 03:06:08 +01:00
"in": "formData"
},
{
"type": "string",
"name": "title",
"in": "formData"
},
{
"type": "integer",
2022-11-30 17:58:04 +01:00
"name": "user_id",
2022-11-20 03:06:08 +01:00
"in": "formData"
},
{
"type": "string",
2022-11-30 17:58:04 +01:00
"name": "user_key",
2022-11-20 03:06:08 +01:00
"in": "formData"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/handler.sendMessageInternal.response"
2022-11-19 15:13:47 +01:00
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
2022-11-20 00:19:41 +01:00
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
},
2022-11-19 15:13:47 +01:00
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ginresp.apiError"
}
}
}
}
2022-11-18 21:25:40 +01:00
}
},
"definitions": {
"ginresp.apiError": {
2022-11-13 19:17:07 +01:00
"type": "object",
"properties": {
"errhighlight": {
"type": "integer"
},
"error": {
"type": "integer"
},
2022-11-20 03:06:08 +01:00
"errorObj": {
"type": "string"
},
2022-11-13 19:17:07 +01:00
"message": {
"type": "string"
},
"success": {
"type": "boolean"
2022-11-20 03:06:08 +01:00
},
"traceObj": {
"type": "string"
2022-11-13 19:17:07 +01:00
}
}
},
2022-11-20 01:28:32 +01:00
"ginresp.compatAPIError": {
"type": "object",
"properties": {
"errid": {
"type": "integer"
},
"message": {
"type": "string"
},
"success": {
"type": "boolean"
}
}
},
2022-11-13 19:17:07 +01:00
"handler.Ack.response": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"new_ack": {
"type": "integer"
},
"prev_ack": {
"type": "integer"
},
"success": {
2022-11-20 01:28:32 +01:00
"type": "boolean"
2022-11-13 19:17:07 +01:00
}
}
},
2022-11-19 12:59:25 +01:00
"handler.AddClient.body": {
"type": "object",
2022-11-20 03:06:08 +01:00
"required": [
"agent_model",
"agent_version",
"client_type",
"fcm_token"
],
2022-11-19 12:59:25 +01:00
"properties": {
"agent_model": {
"type": "string"
},
"agent_version": {
"type": "string"
},
"client_type": {
"type": "string"
},
"fcm_token": {
"type": "string"
}
}
},
2022-11-20 00:19:41 +01:00
"handler.CreateSubscription.body": {
"type": "object",
2022-11-20 03:06:08 +01:00
"required": [
"channel",
2022-11-30 17:58:04 +01:00
"channel_owner_user_id"
2022-11-20 03:06:08 +01:00
],
2022-11-20 00:19:41 +01:00
"properties": {
"channel": {
"type": "string"
},
2022-11-30 17:58:04 +01:00
"channel_owner_user_id": {
2022-11-20 00:19:41 +01:00
"type": "integer"
}
}
},
2022-11-18 21:25:40 +01:00
"handler.CreateUser.body": {
"type": "object",
"properties": {
2022-11-18 23:28:37 +01:00
"agent_model": {
2022-11-18 21:25:40 +01:00
"type": "string"
},
2022-11-18 23:28:37 +01:00
"agent_version": {
2022-11-18 21:25:40 +01:00
"type": "string"
},
2022-11-18 23:28:37 +01:00
"client_type": {
2022-11-18 21:25:40 +01:00
"type": "string"
},
2022-11-18 23:28:37 +01:00
"fcm_token": {
2022-11-18 21:25:40 +01:00
"type": "string"
},
"no_client": {
"type": "boolean"
},
2022-11-18 23:28:37 +01:00
"pro_token": {
2022-11-18 21:25:40 +01:00
"type": "string"
},
"username": {
"type": "string"
}
}
},
2022-11-13 19:17:07 +01:00
"handler.DatabaseTest.response": {
"type": "object",
"properties": {
"libVersion": {
"type": "string"
},
"libVersionNumber": {
"type": "integer"
},
"sourceID": {
"type": "string"
},
"success": {
"type": "boolean"
}
}
},
"handler.Expand.response": {
"type": "object",
"properties": {
"data": {
2022-11-20 01:28:32 +01:00
"$ref": "#/definitions/models.CompatMessage"
2022-11-13 19:17:07 +01:00
},
"message": {
"type": "string"
},
"success": {
2022-11-20 01:28:32 +01:00
"type": "boolean"
2022-11-13 19:17:07 +01:00
}
}
},
"handler.Health.response": {
"type": "object",
"properties": {
"status": {
"type": "string"
}
}
},
"handler.Info.response": {
"type": "object",
"properties": {
"fcm_token_set": {
"type": "boolean"
},
"is_pro": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"message": {
"type": "string"
},
"quota": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"quota_max": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"success": {
2022-11-20 01:28:32 +01:00
"type": "boolean"
2022-11-13 19:17:07 +01:00
},
"unack_count": {
"type": "integer"
},
"user_id": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"user_key": {
"type": "string"
}
}
},
2022-11-20 00:30:30 +01:00
"handler.ListChannelMessages.response": {
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"$ref": "#/definitions/models.MessageJSON"
}
},
"next_page_token": {
"type": "string"
},
"page_size": {
"type": "integer"
}
}
},
2022-11-20 00:19:41 +01:00
"handler.ListChannelSubscriptions.response": {
"type": "object",
"properties": {
"subscriptions": {
"type": "array",
"items": {
"$ref": "#/definitions/models.SubscriptionJSON"
}
}
}
},
"handler.ListChannels.response": {
"type": "object",
"properties": {
"channels": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ChannelJSON"
}
}
}
},
"handler.ListClients.response": {
2022-11-19 12:47:23 +01:00
"type": "object",
"properties": {
"clients": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ClientJSON"
}
}
}
},
2022-11-20 00:19:41 +01:00
"handler.ListMessages.response": {
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"$ref": "#/definitions/models.MessageJSON"
}
},
"next_page_token": {
"type": "string"
},
"page_size": {
"type": "integer"
}
}
},
"handler.ListUserSubscriptions.response": {
"type": "object",
"properties": {
"subscriptions": {
"type": "array",
"items": {
"$ref": "#/definitions/models.SubscriptionJSON"
}
}
}
},
2022-11-13 19:17:07 +01:00
"handler.Register.response": {
"type": "object",
"properties": {
"is_pro": {
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"message": {
"type": "string"
},
"quota": {
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"quota_max": {
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"success": {
"type": "boolean"
2022-11-13 19:17:07 +01:00
},
"user_id": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"user_key": {
"type": "string"
}
}
},
"handler.Requery.response": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/models.CompatMessage"
}
},
"message": {
"type": "string"
},
"success": {
2022-11-20 01:28:32 +01:00
"type": "boolean"
2022-11-13 19:17:07 +01:00
}
}
},
2022-11-30 17:58:04 +01:00
"handler.SendMessage.combined": {
2022-11-19 15:13:47 +01:00
"type": "object",
"properties": {
2022-11-20 21:15:06 +01:00
"chan_key": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "qhnUbKcLgp6tg"
2022-11-20 00:19:41 +01:00
},
"channel": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "test"
2022-11-20 00:19:41 +01:00
},
2022-11-20 03:06:08 +01:00
"content": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "This is a message"
2022-11-19 15:13:47 +01:00
},
2022-11-20 00:19:41 +01:00
"msg_id": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "db8b0e6a-a08c-4646"
2022-11-20 00:19:41 +01:00
},
2022-11-19 15:13:47 +01:00
"priority": {
2022-11-30 17:58:04 +01:00
"type": "integer",
"enum": [
0,
1,
2
],
"example": 1
2022-11-19 15:13:47 +01:00
},
"sender_name": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "example-server"
},
2022-11-20 00:19:41 +01:00
"timestamp": {
2022-11-30 17:58:04 +01:00
"type": "number",
"example": 1669824037
2022-11-20 00:19:41 +01:00
},
2022-11-20 03:06:08 +01:00
"title": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "Hello World"
2022-11-19 15:13:47 +01:00
},
2022-11-20 03:06:08 +01:00
"user_id": {
2022-11-30 17:58:04 +01:00
"type": "integer",
"example": 7725
2022-11-19 15:13:47 +01:00
},
2022-11-20 03:06:08 +01:00
"user_key": {
2022-11-30 17:58:04 +01:00
"type": "string",
"example": "P3TNH8mvv14fm"
2022-11-19 15:13:47 +01:00
}
}
},
2022-11-23 20:21:49 +01:00
"handler.Sleep.response": {
"type": "object",
"properties": {
"duration": {
"type": "number"
},
"end": {
"type": "string"
},
"start": {
"type": "string"
}
}
},
2022-11-13 19:17:07 +01:00
"handler.Update.response": {
"type": "object",
"properties": {
"is_pro": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"message": {
"type": "string"
},
"quota": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"quota_max": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"success": {
2022-11-20 01:28:32 +01:00
"type": "boolean"
2022-11-13 19:17:07 +01:00
},
"user_id": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"user_key": {
"type": "string"
2022-11-18 23:28:37 +01:00
}
}
},
2022-11-13 19:17:07 +01:00
"handler.Upgrade.response": {
"type": "object",
"properties": {
2022-11-20 01:28:32 +01:00
"is_pro": {
"type": "boolean"
2022-11-13 19:17:07 +01:00
},
"message": {
"type": "string"
},
2022-11-20 01:28:32 +01:00
"quota": {
"type": "integer"
},
"quota_max": {
"type": "integer"
},
2022-11-13 19:17:07 +01:00
"success": {
2022-11-20 01:28:32 +01:00
"type": "boolean"
},
"user_id": {
"type": "integer"
2022-11-13 19:17:07 +01:00
}
}
},
"handler.pingResponse": {
"type": "object",
"properties": {
"info": {
"$ref": "#/definitions/handler.pingResponseInfo"
},
"message": {
"type": "string"
}
}
},
"handler.pingResponseInfo": {
"type": "object",
"properties": {
"addr": {
"type": "string"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"method": {
"type": "string"
},
"request": {
"type": "string"
},
"uri": {
"type": "string"
}
}
},
2022-11-20 03:06:08 +01:00
"handler.sendMessageInternal.response": {
"type": "object",
"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"
}
}
},
2022-11-20 00:19:41 +01:00
"models.ChannelJSON": {
"type": "object",
"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"
},
2022-11-20 00:19:41 +01:00
"subscribe_key": {
2022-11-20 21:15:06 +01:00
"description": "can be nil, depending on endpoint",
2022-11-20 00:19:41 +01:00
"type": "string"
},
"timestamp_created": {
"type": "string"
},
"timestamp_last_sent": {
"type": "string"
}
}
},
2022-11-19 12:47:23 +01:00
"models.ClientJSON": {
"type": "object",
"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"
}
}
},
2022-11-13 19:17:07 +01:00
"models.CompatMessage": {
"type": "object",
"properties": {
"body": {
"type": "string"
},
"priority": {
"type": "integer"
},
"scn_msg_id": {
2022-11-20 01:28:32 +01:00
"type": "integer"
2022-11-13 19:17:07 +01:00
},
"timestamp": {
"type": "integer"
},
"title": {
"type": "string"
},
2022-11-20 01:28:32 +01:00
"trimmed": {
"type": "boolean"
},
2022-11-13 19:17:07 +01:00
"usr_msg_id": {
"type": "string"
}
}
},
2022-11-20 00:19:41 +01:00
"models.MessageJSON": {
"type": "object",
"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_ip": {
"type": "string"
},
"sender_name": {
"type": "string"
},
2022-11-20 00:19:41 +01:00
"sender_user_id": {
"type": "integer"
},
"timestamp": {
"type": "string"
},
"title": {
"type": "string"
},
"trimmed": {
"type": "boolean"
},
"usr_message_id": {
2022-11-13 19:17:07 +01:00
"type": "string"
}
}
2022-11-18 21:25:40 +01:00
},
2022-11-20 00:19:41 +01:00
"models.SubscriptionJSON": {
"type": "object",
"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"
}
}
},
2022-11-18 21:25:40 +01:00
"models.UserJSON": {
"type": "object",
"properties": {
"admin_key": {
"type": "string"
},
2022-11-20 22:18:24 +01:00
"default_channel": {
"type": "string"
},
2022-11-18 21:25:40 +01:00
"is_pro": {
"type": "boolean"
},
"messages_sent": {
"type": "integer"
},
2022-11-20 00:19:41 +01:00
"quota_used": {
2022-11-18 21:25:40 +01:00
"type": "integer"
2022-11-24 12:53:27 +01:00
},
"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"
}
}
},
"models.UserJSONWithClients": {
"type": "object",
"properties": {
"admin_key": {
"type": "string"
},
"clients": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ClientJSON"
}
},
"default_channel": {
"type": "string"
},
"is_pro": {
"type": "boolean"
},
"messages_sent": {
"type": "integer"
},
"quota_used": {
"type": "integer"
2022-11-18 21:25:40 +01:00
},
2022-11-20 00:19:41 +01:00
"quota_used_day": {
"type": "string"
},
2022-11-18 21:25:40 +01:00
"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"
}
}
2022-11-13 19:17:07 +01:00
}
2022-11-23 19:32:23 +01:00
},
"tags": [
{
"name": "External"
},
{
"name": "API-v1"
},
{
"name": "API-v2"
2022-11-30 17:58:04 +01:00
},
{
"name": "Common"
2022-11-23 19:32:23 +01:00
}
]
2022-11-13 19:17:07 +01:00
}