[ { "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.", "package": "sam", "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": "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", "package": "sam", "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": "history", "path": "/", "method": "GET", "title": "All messages (channel history)", "parameters": { "get": [ { "name": "lastMessageID", "type": "uint64", "required": false, "title": "" } ] } }, { "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": "replyGet", "path": "/{messageID}/replies", "method": "GET", "title": "Returns all replies to a 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": "markAsUnread", "path": "/{messageID}/unread", "method": "POST", "title": "Mark message in channel (or thread) as unread", "parameters": { "path": [ { "name": "messageID", "type": "uint64", "required": true, "title": "Message ID" } ] } }, { "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", "package": "sam", "path": "/attachment/{attachmentID}", "parameters": { "path": [ { "name": "attachmentID", "type": "uint64", "required": true, "title": "Attachment 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": "inChannel", "type": "uint64", "required": false, "title": "Search only in one channel" }, { "name": "fromUser", "type": "uint64", "required": false, "title": "Search only from one user" }, { "name": "firstID", "type": "uint64", "required": false, "title": "Paging; return newer messages only (higher id)" }, { "name": "lastID", "type": "uint64", "required": false, "title": "Paging; return older messages only (lower id)" } ] } } ] }, { "title": "Permissions", "package": "sam", "parameters": {}, "entrypoint": "permissions", "authentication": [ "Client ID", "Session ID" ], "struct": [ { "imports": [ "github.com/crusttech/crust/internal/rbac" ] } ], "apis": [ { "name": "list", "path": "/permissions", "method": "GET", "title": "List default permissions", "parameters": {} }, { "name": "getTeam", "path": "/permissions/{team}", "method": "GET", "title": "Retrieve current permission settings", "parameters": { "path": [ { "name": "team", "type": "string", "required": true, "title": "Team ID" } ], "get": [ { "name": "scope", "type": "string", "required": true, "title": "Permissions scope" }, { "name": "resource", "type": "string", "required": true, "title": "Permissions resource" } ] } }, { "name": "setTeam", "path": "/permissions/{team}", "method": "POST", "title": "Update permission settings", "parameters": { "path": [ { "name": "team", "type": "string", "required": true, "title": "Team ID" } ], "post": [ { "name": "permissions", "type": "[]rbac.Permission", "required": true, "title": "List of permissions to set" } ] } } ] } ]