Applications
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/application/ |
List applications |
POST |
/application/ |
Create application |
PUT |
/application/{applicationID} |
Update user details |
GET |
/application/{applicationID} |
Read application details |
DELETE |
/application/{applicationID} |
Remove application |
List applications
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/application/ |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|
Create application
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/application/ |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| name | string | POST | N/A | YES | |
| enabled | bool | POST | Enabled | N/A | NO |
| unify | sqlxTypes.JSONText | POST | Unify properties | N/A | NO |
| config | sqlxTypes.JSONText | POST | Arbitrary JSON holding application configuration | N/A | NO |
Update user details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/application/{applicationID} |
HTTP/S | PUT |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| applicationID | uint64 | PATH | Application ID | N/A | YES |
| name | string | POST | N/A | YES | |
| enabled | bool | POST | Enabled | N/A | NO |
| unify | sqlxTypes.JSONText | POST | Unify properties | N/A | NO |
| config | sqlxTypes.JSONText | POST | Arbitrary JSON holding application configuration | N/A | NO |
Read application details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/application/{applicationID} |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| applicationID | uint64 | PATH | Application ID | N/A | YES |
Remove application
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/application/{applicationID} |
HTTP/S | DELETE |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| applicationID | uint64 | PATH | Application ID | N/A | YES |
Authentication
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/auth/ |
Returns auth settings |
GET |
/auth/check |
Check JWT token |
POST |
/auth/exchange |
Exchange auth token for JWT |
GET |
/auth/logout |
Logout |
Returns auth settings
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/ |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|
Check JWT token
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/check |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|
Exchange auth token for JWT
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/exchange |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| token | string | POST | Token to be exchanged for JWT | N/A | YES |
Logout
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/logout |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|
Internal authentication
| Method | Endpoint | Purpose |
|---|---|---|
POST |
/auth/internal/login |
Login user |
POST |
/auth/internal/signup |
User signup/registration |
POST |
/auth/internal/request-password-reset |
Request password reset token (via email) |
POST |
/auth/internal/exchange-password-reset-token |
Exchange password reset token for new token and user info |
POST |
/auth/internal/reset-password |
Reset password with exchanged password reset token |
POST |
/auth/internal/confirm-email |
Confirm email with token |
POST |
/auth/internal/change-password |
Changes password for current user, requires current password |
Login user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/login |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| string | POST | N/A | YES | ||
| password | string | POST | Password | N/A | YES |
User signup/registration
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/signup |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| string | POST | N/A | YES | ||
| username | string | POST | Username | N/A | NO |
| password | string | POST | Password | N/A | YES |
| handle | string | POST | User handle | N/A | NO |
| name | string | POST | Display name | N/A | NO |
Request password reset token (via email)
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/request-password-reset |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| string | POST | N/A | YES |
Exchange password reset token for new token and user info
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/exchange-password-reset-token |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| token | string | POST | Token | N/A | YES |
Reset password with exchanged password reset token
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/reset-password |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| token | string | POST | Token | N/A | YES |
| password | string | POST | Password | N/A | YES |
Confirm email with token
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/confirm-email |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| token | string | POST | Token | N/A | YES |
Changes password for current user, requires current password
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/auth/internal/change-password |
HTTP/S | POST |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| oldPassword | string | POST | Old password | N/A | YES |
| newPassword | string | POST | New password | N/A | YES |
Organisations
Organisations represent a top-level grouping entity. There may be many organisations defined in a single deployment.
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/organisations/ |
List organisations |
POST |
/organisations/ |
Create organisation |
PUT |
/organisations/{id} |
Update organisation details |
DELETE |
/organisations/{id} |
Remove organisation |
GET |
/organisations/{id} |
Read organisation details |
POST |
/organisations/{id}/archive |
Archive organisation |
List organisations
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/organisations/ |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| query | string | GET | Search query | N/A | NO |
Create organisation
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/organisations/ |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| name | string | POST | Organisation Name | N/A | YES |
Update organisation details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/organisations/{id} |
HTTP/S | PUT | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| id | uint64 | PATH | Organisation ID | N/A | NO |
| name | string | POST | Organisation Name | N/A | YES |
Remove organisation
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/organisations/{id} |
HTTP/S | DELETE | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| id | uint64 | PATH | Organisation ID | N/A | YES |
Read organisation details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/organisations/{id} |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| id | uint64 | GET | Organisation ID | N/A | YES |
Archive organisation
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/organisations/{id}/archive |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| id | uint64 | PATH | Organisation ID | N/A | YES |
Permissions
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/permissions/ |
Retrieve defined permissions |
GET |
/permissions/effective |
Effective rules for current user |
GET |
/permissions/{roleID}/rules |
Retrieve role permissions |
DELETE |
/permissions/{roleID}/rules |
Remove all defined role permissions |
PATCH |
/permissions/{roleID}/rules |
Update permission settings |
Retrieve defined permissions
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/permissions/ |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|
Effective rules for current user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/permissions/effective |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| resource | string | GET | Show only rules for a specific resource | N/A | NO |
Retrieve role permissions
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/permissions/{roleID}/rules |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
Remove all defined role permissions
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/permissions/{roleID}/rules |
HTTP/S | DELETE | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
Update permission settings
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/permissions/{roleID}/rules |
HTTP/S | PATCH | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
| rules | permissions.RuleSet | POST | List of permission rules to set | N/A | YES |
Roles
An organisation may have many roles. Roles may have many channels available. Access to channels may be shared between roles.
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/roles/ |
List roles |
POST |
/roles/ |
Update role details |
PUT |
/roles/{roleID} |
Update role details |
GET |
/roles/{roleID} |
Read role details and memberships |
DELETE |
/roles/{roleID} |
Remove role |
POST |
/roles/{roleID}/archive |
Archive role |
POST |
/roles/{roleID}/move |
Move role to different organisation |
POST |
/roles/{roleID}/merge |
Merge one role into another |
GET |
/roles/{roleID}/members |
Returns all role members |
POST |
/roles/{roleID}/member/{userID} |
Add member to a role |
DELETE |
/roles/{roleID}/member/{userID} |
Remove member from a role |
List roles
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/ |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| query | string | GET | Search query | N/A | NO |
Update role details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/ |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| name | string | POST | Name of Role | N/A | YES |
| members | []string | POST | Role member IDs | N/A | NO |
Update role details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID} |
HTTP/S | PUT | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
| name | string | POST | Name of Role | N/A | NO |
| members | []string | POST | Role member IDs | N/A | NO |
Read role details and memberships
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID} |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
Remove role
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID} |
HTTP/S | DELETE | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
Archive role
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID}/archive |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
Move role to different organisation
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID}/move |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
| organisationID | uint64 | POST | Role ID | N/A | YES |
Merge one role into another
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID}/merge |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Source Role ID | N/A | YES |
| destination | uint64 | POST | Destination Role ID | N/A | YES |
Returns all role members
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID}/members |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Source Role ID | N/A | YES |
Add member to a role
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID}/member/{userID} |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Source Role ID | N/A | YES |
| userID | uint64 | PATH | User ID | N/A | YES |
Remove member from a role
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/roles/{roleID}/member/{userID} |
HTTP/S | DELETE | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Source Role ID | N/A | YES |
| userID | uint64 | PATH | User ID | N/A | YES |
Settings
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/settings/ |
List settings |
PATCH |
/settings/ |
Update settings |
GET |
/settings/{key} |
Check JWT token |
PUT |
/settings/{key} |
Set a value for a key |
List settings
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/settings/ |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| prefix | string | GET | Key prefix | N/A | NO |
Update settings
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/settings/ |
HTTP/S | PATCH |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| values | sqlxTypes.JSONText | POST | Array of new settings: [{ name: ..., value: ... }]. Omit value to remove setting |
N/A | YES |
Check JWT token
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/settings/{key} |
HTTP/S | GET |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| ownerID | uint64 | GET | Owner ID | N/A | NO |
| key | string | PATH | Setting key | N/A | YES |
Set a value for a key
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/settings/{key} |
HTTP/S | PUT |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| key | string | PATH | Setting key | N/A | YES |
| ownerID | uint64 | POST | Owner | N/A | NO |
| value | sqlxTypes.JSONText | POST | Setting value | N/A | YES |
Users
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/users/ |
Search users (Directory) |
POST |
/users/ |
Create user |
PUT |
/users/{userID} |
Update user details |
GET |
/users/{userID} |
Read user details |
DELETE |
/users/{userID} |
Remove user |
POST |
/users/{userID}/suspend |
Suspend user |
POST |
/users/{userID}/unsuspend |
Unsuspend user |
POST |
/users/{userID}/password |
Set's or changes user's password |
GET |
/users/{userID}/membership |
Add member to a role |
POST |
/users/{userID}/membership/{roleID} |
Add role to a user |
DELETE |
/users/{userID}/membership/{roleID} |
Remove role from a user |
Search users (Directory)
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/ |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| query | string | GET | Search query to match against users | N/A | NO |
| username | string | GET | Search username to match against users | N/A | NO |
| string | GET | Search email to match against users | N/A | NO | |
| handle | string | GET | Search handle to match against users | N/A | NO |
| kind | types.UserKind | GET | Kind (normal, bot) | N/A | NO |
| incDeleted | bool | GET | Include deleted users (requires 'access' permission) | N/A | NO |
| incSuspended | bool | GET | Include suspended users (requires 'access' permission) | N/A | NO |
| sort | string | GET | Sort by (createdAt, updatedAt, deletedAt, suspendedAt, email, username, userID) | N/A | NO |
| page | uint | GET | Page number (0 based) | N/A | NO |
| perPage | uint | GET | Returned items per page | N/A | NO |
Create user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/ |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| string | POST | N/A | YES | ||
| name | string | POST | Name | N/A | NO |
| handle | string | POST | Handle | N/A | NO |
| kind | types.UserKind | POST | Kind (normal, bot) | N/A | NO |
Update user details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID} |
HTTP/S | PUT | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
| string | POST | N/A | YES | ||
| name | string | POST | Name | N/A | YES |
| handle | string | POST | Handle | N/A | NO |
| kind | types.UserKind | POST | Kind (normal, bot) | N/A | NO |
Read user details
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID} |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
Remove user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID} |
HTTP/S | DELETE | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
Suspend user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID}/suspend |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
Unsuspend user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID}/unsuspend |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
Set's or changes user's password
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID}/password |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
| password | string | POST | New password | N/A | YES |
Add member to a role
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID}/membership |
HTTP/S | GET | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| userID | uint64 | PATH | User ID | N/A | YES |
Add role to a user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID}/membership/{roleID} |
HTTP/S | POST | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
| userID | uint64 | PATH | User ID | N/A | YES |
Remove role from a user
Method
| URI | Protocol | Method | Authentication |
|---|---|---|---|
/users/{userID}/membership/{roleID} |
HTTP/S | DELETE | Client ID, Session ID |
Request parameters
| Parameter | Type | Method | Description | Default | Required? |
|---|---|---|---|---|---|
| roleID | uint64 | PATH | Role ID | N/A | YES |
| userID | uint64 | PATH | User ID | N/A | YES |