3
0
corteza/api/messaging/spec.json
2019-04-26 13:34:35 +02:00

865 lines
29 KiB
JSON

[
{
"title": "Permissions",
"parameters": {},
"entrypoint": "permissions",
"path": "/permissions",
"authentication": [],
"apis": [
{
"name": "effective",
"path": "/effective",
"method": "GET",
"title": "Effective rules for current user",
"parameters": {
"get": [
{
"name": "resource",
"type": "string",
"required": false,
"title": "Show only rules for a specific resource"
}
]
}
}
]
},
{
"title": "Commands",
"parameters": {},
"entrypoint": "commands",
"path": "/commands",
"authentication": [],
"apis": [
{
"name": "list",
"path": "/",
"method": "GET",
"title": "List of available commands"
}
]
},
{
"title": "Status",
"parameters": {},
"entrypoint": "status",
"path": "/status",
"authentication": [],
"apis": [
{
"name": "list",
"path": "/",
"method": "GET",
"title": "See all current statuses"
},
{
"name": "set",
"path": "/",
"method": "POST",
"title": "Set user's status",
"parameters": {
"post": [
{
"type": "string",
"name": "icon",
"required": false,
"title": "Status icon"
},
{
"type": "string",
"name": "message",
"required": false,
"title": "Status message"
},
{
"type": "string",
"name": "expires",
"required": false,
"title": "Clear status when it expires (eg: when-active, afternoon, tomorrow 1h, 30m, 1 PM, 2019-05-20)"
}
]
}
},
{
"name": "delete",
"path": "/",
"method": "DELETE",
"title": "Clear status"
}
]
},
{
"name": "activity",
"path": "/activity",
"entrypoint": "activity",
"title": "User activity",
"parameters": {},
"authentication": [],
"apis": [
{
"name": "send",
"method": "POST",
"title": "Sends user's activity to all subscribers; globally or per channel/message.",
"path": "/",
"parameters": {
"post": [
{
"name": "channelID",
"type": "uint64",
"required": false,
"title": "Channel ID, if set, activity will be send only to subscribed users"
},
{
"name": "messageID",
"type": "uint64",
"required": false,
"title": "Message ID, if set, channelID must be set as well"
},
{
"name": "kind",
"type": "string",
"required": true,
"title": "Arbitrary string"
}
]
}
}
]
},
{
"title": "Channels",
"description": "A channel is a representation of a sequence of messages. It has meta data like channel subject. Channels may be public, private or group.",
"entrypoint": "channel",
"path": "/channels",
"authentication": [
"Client ID",
"Session ID"
],
"apis": [
{
"name": "list",
"method": "GET",
"title": "List channels",
"path": "/",
"parameters": {
"get": [
{
"type": "string",
"name": "query",
"required": false,
"title": "Search query"
}
]
}
},
{
"name": "create",
"method": "POST",
"title": "Create new channel",
"path": "/",
"parameters": {
"post": [
{
"type": "string",
"name": "name",
"required": true,
"title": "Name of Channel"
},
{
"type": "string",
"name": "topic",
"required": false,
"title": "Subject of Channel"
},
{
"type": "string",
"name": "type",
"required": false,
"title": "Channel type"
},
{
"type": "[]string",
"name": "members",
"required": false,
"title": "Initial members of the channel"
}
]
}
},
{
"name": "update",
"method": "PUT",
"path": "/{channelID}",
"title": "Update channel details",
"parameters": {
"path": [
{
"type": "uint64",
"name": "channelID",
"required": true,
"title": "Channel ID"
}
],
"post": [
{
"type": "string",
"name": "name",
"required": false,
"title": "Name of Channel"
},
{
"type": "string",
"name": "topic",
"required": false,
"title": "Subject of Channel"
},
{
"type": "string",
"name": "type",
"required": false,
"title": "Channel type"
},
{
"type": "uint64",
"name": "organisationID",
"required": false,
"title": "Move channel to different organisation"
}
]
}
},
{
"name": "state",
"method": "PUT",
"path": "/{channelID}/state",
"title": "Update channel state",
"parameters": {
"path": [
{
"type": "uint64",
"name": "channelID",
"required": true,
"title": "Channel ID"
}
],
"post": [
{
"type": "string",
"name": "state",
"required": true,
"title": "Valid values: delete, undelete, archive, unarchive"
}
]
}
},
{
"name": "setFlag",
"method": "PUT",
"path": "/{channelID}/flag",
"title": "Update channel membership flag",
"parameters": {
"path": [
{
"type": "uint64",
"name": "channelID",
"required": true,
"title": "Channel ID"
}
],
"post": [
{
"type": "string",
"name": "flag",
"required": true,
"title": "Valid values: pinned, hidden, ignored"
}
]
}
},
{
"name": "removeFlag",
"method": "DELETE",
"path": "/{channelID}/flag",
"title": "Remove channel membership flag",
"parameters": {
"path": [
{
"type": "uint64",
"name": "channelID",
"required": true,
"title": "Channel ID"
}
]
}
},
{
"name": "read",
"method": "GET",
"path": "/{channelID}",
"title": "Read channel details",
"parameters": {
"path": [
{
"type": "uint64",
"name": "channelID",
"required": true,
"title": "Channel ID"
}
]
}
},
{
"name": "members",
"method": "GET",
"path": "/{channelID}/members",
"title": "List channel members",
"parameters": {
"path": [
{
"name": "channelID",
"type": "uint64",
"required": true,
"title": "Channel ID"
}
]
}
},
{
"name": "join",
"method": "PUT",
"path": "/{channelID}/members/{userID}",
"title": "Join channel",
"parameters": {
"path": [
{
"name": "channelID",
"type": "uint64",
"required": true,
"title": "Channel ID"
},
{
"name": "userID",
"type": "uint64",
"required": false,
"title": "Member ID"
}
]
}
},
{
"name": "part",
"method": "DELETE",
"path": "/{channelID}/members/{userID}",
"title": "Remove member from channel",
"parameters": {
"path": [
{
"name": "channelID",
"type": "uint64",
"required": true,
"title": "Channel ID"
},
{
"name": "userID",
"type": "uint64",
"required": false,
"title": "Member ID"
}
]
}
},
{
"name": "invite",
"method": "POST",
"path": "/{channelID}/invite",
"title": "Join channel",
"parameters": {
"path": [
{
"name": "channelID",
"type": "uint64",
"required": true,
"title": "Channel ID"
}
],
"post": [
{
"name": "userID",
"type": "[]uint64",
"required": false,
"title": "User ID"
}
]
}
},
{
"name": "attach",
"path": "/{channelID}/attach",
"method": "POST",
"title": "Attach file to channel",
"parameters": {
"path": [
{
"name": "channelID",
"type": "uint64",
"required": true,
"title": "Channel ID"
}
],
"post": [
{
"name": "replyTo",
"type": "uint64",
"required": false,
"title": "Upload as a reply"
},
{
"name": "upload",
"type": "*multipart.FileHeader",
"required": true,
"title": "File to upload"
}
]
}
}
]
},
{
"title": "Messages",
"path": "/channels/{channelID}/messages",
"parameters": {
"path": [
{
"name": "channelID",
"type": "uint64",
"required": true,
"title": "Channel ID"
}
]
},
"entrypoint": "message",
"authentication": [
"Client ID",
"Session ID"
],
"apis": [
{
"name": "create",
"path": "/",
"method": "POST",
"title": "Post new message to the channel",
"parameters": {
"post": [
{
"type": "string",
"name": "message",
"required": true,
"title": "Message contents (markdown)"
}
]
}
},
{
"name": "executeCommand",
"path": "/command/{command}/exec",
"method": "POST",
"title": "Execute command",
"parameters": {
"path": [
{
"name": "command",
"type": "string",
"required": true,
"title": "Command to be executed"
}
],
"post": [
{
"type": "string",
"name": "input",
"required": false,
"title": "Arbitrary command input"
},
{
"type": "[]string",
"name": "params",
"required": false,
"title": "Command parameters"
}
]
}
},
{
"name": "markAsRead",
"path": "/mark-as-read",
"method": "GET",
"title": "Manages read/unread messages in a channel or a thread",
"parameters": {
"path": [],
"post": [
{
"type": "uint64",
"name": "threadID",
"required": false,
"title": "ID of thread (messageID) "
},
{
"type": "uint64",
"name": "lastReadMessageID",
"required": false,
"title": "ID of the last read message"
}
]
}
},
{
"name": "edit",
"path": "/{messageID}",
"method": "PUT",
"title": "Edit existing message",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
],
"post": [
{
"type": "string",
"name": "message",
"required": true,
"title": "Message contents (markdown)"
}
]
}
},
{
"name": "delete",
"path": "/{messageID}",
"method": "DELETE",
"title": "Delete existing message",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
]
}
},
{
"name": "replyCreate",
"path": "/{messageID}/replies",
"method": "POST",
"title": "Reply to a message",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
],
"post": [
{
"type": "string",
"name": "message",
"required": true,
"title": "Message contents (markdown)"
}
]
}
},
{
"name": "pinCreate",
"path": "/{messageID}/pin",
"method": "POST",
"title": "Pin message to channel (public bookmark)",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
]
}
},
{
"name": "pinRemove",
"path": "/{messageID}/pin",
"method": "DELETE",
"title": "Pin message to channel (public bookmark)",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
]
}
},
{
"name": "bookmarkCreate",
"path": "/{messageID}/bookmark",
"method": "POST",
"title": "Bookmark a message (private bookmark)",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
]
}
},
{
"name": "bookmarkRemove",
"path": "/{messageID}/bookmark",
"method": "DELETE",
"title": "Remove boomark from message (private bookmark)",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
}
]
}
},
{
"name": "reactionCreate",
"path": "/{messageID}/reaction/{reaction}",
"method": "POST",
"title": "React to a message",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
},
{
"name": "reaction",
"type": "string",
"required": true,
"title": "Reaction"
}
]
}
},
{
"name": "reactionRemove",
"path": "/{messageID}/reaction/{reaction}",
"method": "DELETE",
"title": "Delete reaction from a message",
"parameters": {
"path": [
{
"name": "messageID",
"type": "uint64",
"required": true,
"title": "Message ID"
},
{
"name": "reaction",
"type": "string",
"required": true,
"title": "Reaction"
}
]
}
}
]
},
{
"title": "Attachments",
"path": "/attachment/{attachmentID}",
"parameters": {
"path": [
{
"name": "attachmentID",
"type": "uint64",
"required": true,
"title": "Attachment ID"
}
],
"get": [
{
"type": "string",
"name": "sign",
"required": true,
"title": "Signature"
},
{
"type": "uint64",
"name": "userID",
"required": true,
"title": "User ID"
}
]
},
"entrypoint": "attachment",
"authentication": [
"Client ID",
"Session ID"
],
"apis": [
{
"name": "original",
"path": "/original/{name}",
"method": "GET",
"title": "Serves attached file",
"parameters": {
"path": [
{
"name": "name",
"type": "string",
"required": true,
"title": "File name"
}
],
"get": [
{
"type": "bool",
"name": "download",
"required": false,
"title": "Force file download"
}
]
}
},
{
"name": "preview",
"path": "/preview.{ext}",
"method": "GET",
"title": "Serves preview of an attached file",
"parameters": {
"path": [
{
"name": "ext",
"type": "string",
"required": true,
"title": "Preview extension/format"
}
]
}
}
]
},
{
"name": "search",
"entrypoint": "search",
"authentication": [
"Client ID",
"Session ID"
],
"path": "/search",
"method": "GET",
"title": "Search entry point",
"parameters": {
"get": [
{
"name": "query",
"type": "string",
"required": false,
"title": "Search query"
}
]
},
"apis": [
{
"method": "GET",
"name": "messages",
"path": "/messages",
"title": "Search for messages",
"parameters": {
"get": [
{
"name": "channelID",
"type": "[]uint64",
"required": false,
"title": "Filter by channels"
},
{
"name": "afterMessageID",
"type": "uint64",
"required": false,
"title": "ID of the first message in the list (exclusive)"
},
{
"name": "beforeMessageID",
"type": "uint64",
"required": false,
"title": "ID of the last message in the list (exclusive)"
},
{
"name": "fromMessageID",
"type": "uint64",
"required": false,
"title": "ID of the first message in the list (inclusive)"
},
{
"name": "toMessageID",
"type": "uint64",
"required": false,
"title": "ID of the last message the list (inclusive)"
},
{
"name": "threadID",
"type": "[]uint64",
"required": false,
"title": "Filter by thread message ID"
},
{
"name": "userID",
"type": "[]uint64",
"required": false,
"title": "Filter by one or more user"
},
{
"name": "type",
"type": "[]string",
"required": false,
"title": "Filter by message type (text, inlineImage, attachment, ...)"
},
{
"name": "pinnedOnly",
"type": "bool",
"required": false,
"title": "Return only pinned messages"
},
{
"name": "bookmarkedOnly",
"type": "bool",
"required": false,
"title": "Only bookmarked messages"
},
{
"name": "limit",
"type": "uint",
"required": false,
"title": "Max number of messages"
}
]
}
}
]
}
]