1713 lines
42 KiB
YAML
1713 lines
42 KiB
YAML
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.UpdateUser.body:
|
|
properties:
|
|
pro_token:
|
|
type: string
|
|
username:
|
|
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
|
|
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
|
|
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: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
"403":
|
|
description: Forbidden
|
|
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: Send a new message
|
|
/api-v2/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
|
|
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
|
|
/api-v2/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
|
|
/api-v2/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/models.UserJSON'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
summary: Create a new user
|
|
/api-v2/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
|
|
patch:
|
|
description: The body-values are optional, only send the ones you want to update
|
|
operationId: api-user-update
|
|
parameters:
|
|
- description: ' '
|
|
in: body
|
|
name: post_body
|
|
schema:
|
|
$ref: '#/definitions/handler.UpdateUser.body'
|
|
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
|
|
/api-v2/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 all channels of a user
|
|
/api-v2/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
|
|
/api-v2/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
|
|
/api-v2/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
|
|
/api-v2/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
|
|
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
|
|
/api-v2/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
|
|
/api-v2/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
|
|
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
|
|
/api-v2/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
|
|
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
|
|
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)
|
|
/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
|
|
/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
|
|
/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
|
|
/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
|
|
/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
|
|
/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)
|
|
/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
|
|
/db-test:
|
|
get:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.DatabaseTest.response'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
/health:
|
|
get:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.Health.response'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
/ping:
|
|
delete:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.pingResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
get:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.pingResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
patch:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.pingResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
post:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.pingResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
put:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handler.pingResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
/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: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
"403":
|
|
description: Forbidden
|
|
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: Send a new message
|
|
/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'
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/ginresp.apiError'
|
|
summary: Send a new message (compatibility)
|
|
swagger: "2.0"
|