[ { "title": "Authentication", "path": "/auth", "entrypoint": "auth", "authentication": [], "apis": [ { "name": "check", "method": "GET", "title": "Check JWT token", "path": "/check", "parameters": {} }, { "name": "login", "method": "POST", "title": "Login user", "path": "/login", "parameters": { "post": [ { "name": "username", "type": "string", "required": true, "title": "Username" }, { "name": "password", "type": "string", "required": true, "title": "Password" } ] } }, { "name": "logout", "method": "GET", "title": "Delete JWT token (Sign Out)", "path": "/logout", "parameters": {} } ] }, { "title": "Organisations", "description": "Organisations represent a top-level grouping entity. There may be many organisations defined in a single deployment.", "path": "/organisations", "entrypoint": "organisation", "authentication": [ "Client ID", "Session ID" ], "apis": [ { "name": "list", "method": "GET", "title": "List organisations", "path": "/", "parameters": { "get": [ { "type": "string", "name": "query", "required": false, "title": "Search query" } ] } }, { "name": "create", "method": "POST", "title": "Create organisation", "path": "/", "parameters": { "post": [ { "type": "string", "name": "name", "required": true, "title": "Organisation Name" } ] } }, { "name": "update", "method": "PUT", "title": "Update organisation details", "path": "/{id}", "parameters": { "path": [ { "type": "uint64", "name": "id", "required": false, "title": "Organisation ID" } ], "post": [ { "type": "string", "name": "name", "required": true, "title": "Organisation Name" } ] } }, { "name": "remove", "method": "DELETE", "title": "Remove organisation", "path": "/{id}", "parameters": { "path": [ { "type": "uint64", "name": "id", "required": true, "title": "Organisation ID" } ] } }, { "name": "read", "method": "GET", "title": "Read organisation details", "path": "/{id}", "parameters": { "get": [ { "type": "uint64", "name": "id", "required": true, "title": "Organisation ID" } ] } }, { "name": "archive", "method": "POST", "title": "Archive organisation", "path": "/{id}/archive", "parameters": { "path": [ { "type": "uint64", "name": "id", "required": true, "title": "Organisation ID" } ] } } ] }, { "title": "Roles", "description": "An organisation may have many roles. Roles may have many channels available. Access to channels may be shared between roles.", "path": "/roles", "entrypoint": "role", "authentication": [ "Client ID", "Session ID" ], "apis": [ { "name": "list", "method": "GET", "title": "List roles", "path": "/", "parameters": { "get": [ { "type": "string", "name": "query", "required": false, "title": "Search query" } ] } }, { "name": "create", "method": "POST", "title": "Update role details", "path": "/", "parameters": { "post": [ { "type": "string", "name": "name", "required": true, "title": "Name of Role" }, { "type": "[]uint64", "name": "members", "required": false, "title": "Role member IDs" } ] } }, { "name": "update", "method": "PUT", "title": "Update role details", "path": "/{roleID}", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Role ID" } ], "post": [ { "type": "string", "name": "name", "required": false, "title": "Name of Role" }, { "type": "[]uint64", "name": "members", "required": false, "title": "Role member IDs" } ] } }, { "name": "read", "method": "GET", "title": "Read role details and memberships", "path": "/{roleID}", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Role ID" } ] } }, { "name": "remove", "method": "DELETE", "title": "Remove role", "path": "/{roleID}", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Role ID" } ] } }, { "name": "archive", "method": "POST", "title": "Archive role", "path": "/{roleID}/archive", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Role ID" } ] } }, { "name": "move", "method": "POST", "title": "Move role to different organisation", "path": "/{roleID}/move", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Role ID" } ], "post": [ { "type": "uint64", "name": "organisationID", "required": true, "title": "Role ID" } ] } }, { "name": "merge", "method": "POST", "title": "Merge one role into another", "path": "/{roleID}/merge", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Source Role ID" } ], "post": [ { "type": "uint64", "name": "destination", "required": true, "title": "Destination Role ID" } ] } }, { "name": "memberAdd", "method": "POST", "title": "Add member to a role", "path": "/{roleID}/memberAdd", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Source Role ID" } ], "post": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ] } }, { "name": "memberRemove", "method": "POST", "title": "Remove member from a role", "path": "/{roleID}/memberRemove", "parameters": { "path": [ { "type": "uint64", "name": "roleID", "required": true, "title": "Source Role ID" } ], "post": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ] } } ] }, { "title": "Users", "path": "/users", "entrypoint": "user", "authentication": [ "Client ID", "Session ID" ], "apis": [ { "name": "list", "method": "GET", "title": "Search users (Directory)", "path": "/", "parameters": { "get": [ { "type": "string", "name": "query", "required": false, "title": "Search query to match against users" }, { "type": "string", "name": "username", "required": false, "title": "Search username to match against users" }, { "type": "string", "name": "email", "required": false, "title": "Search email to match against users" } ] } }, { "name": "create", "method": "POST", "title": "Create user", "path": "/", "parameters": { "post": [ { "name": "email", "type": "string", "required": true, "title": "Email" }, { "name": "name", "type": "string", "required": false, "title": "Name" }, { "name": "handle", "type": "string", "required": false, "title": "Handle" }, { "name": "kind", "type": "string", "required": false, "title": "Kind (normal, bot)" } ] } }, { "name": "update", "method": "PUT", "title": "Update user details", "path": "/{userID}", "parameters": { "path": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ], "post": [ { "name": "email", "type": "string", "required": true, "title": "Email" }, { "name": "name", "type": "string", "required": true, "title": "Name" }, { "name": "handle", "type": "string", "required": false, "title": "Handle" }, { "name": "kind", "type": "string", "required": false, "title": "Kind (normal, bot)" } ] } }, { "name": "read", "method": "GET", "title": "Read user details and memberships", "path": "/{userID}", "parameters": { "path": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ] } }, { "name": "remove", "method": "DELETE", "title": "Remove user", "path": "/{userID}", "parameters": { "path": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ] } }, { "name": "suspend", "method": "POST", "title": "Suspend user", "path": "/{userID}/suspend", "parameters": { "path": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ] } }, { "name": "unsuspend", "method": "POST", "title": "Unsuspend user", "path": "/{userID}/unsuspend", "parameters": { "path": [ { "type": "uint64", "name": "userID", "required": true, "title": "User ID" } ] } } ] }, { "title": "Permissions", "parameters": {}, "entrypoint": "permission", "path": "/permissions", "authentication": [ "Client ID", "Session ID" ], "struct": [ { "imports": [ "github.com/crusttech/crust/internal/rules" ] } ], "apis": [ { "name": "read", "path": "/{roleID}/rules", "method": "GET", "title": "Retrieve role permissions", "parameters": { "path": [ { "name": "roleID", "type": "uint64", "required": true, "title": "Role ID" } ] } }, { "name": "delete", "path": "/{roleID}/rules", "method": "DELETE", "title": "Remove all defined role permissions", "parameters": { "path": [ { "name": "roleID", "type": "uint64", "required": true, "title": "Role ID" } ] } }, { "name": "update", "path": "/{roleID}/rules", "method": "PATCH", "title": "Update permission settings", "parameters": { "path": [ { "name": "roleID", "type": "uint64", "required": true, "title": "Role ID" } ], "post": [ { "name": "permissions", "type": "[]rules.Rule", "required": true, "title": "List of permissions to set" } ] } } ] } ]