diff --git a/sam/docs/README.md b/sam/docs/README.md new file mode 100644 index 000000000..3f5b2d905 --- /dev/null +++ b/sam/docs/README.md @@ -0,0 +1,453 @@ +# Organisations + +Organisations represent a top-level grouping entity. There may be many organisations defined in a single deployment. + +## Update organisation details + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/organisation/edit` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Organisation ID | N/A | NO | +| name | string | POST | Organisation Name | N/A | YES | + +## Remove organisation + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/organisation/remove` | HTTP/S | DELETE | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Organisation ID | N/A | YES | + +## Read organisation details + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/organisation/read` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Organisation ID | N/A | YES | + +## Search organisations + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/organisation/search` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| query | string | GET | Search query | N/A | NO | + +## Archive organisation + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/organisation/archive` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Organisation ID | N/A | YES | + + + + +# Teams + +An organisation may have many teams. Teams may have many channels available. Access to channels may be shared between teams. + +## Update team details + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/team/edit` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Team ID | N/A | NO | +| name | string | POST | Name of Team | N/A | YES | +| members | []uint64 | POST | Team member IDs | N/A | NO | + +## Remove team + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/team/remove` | HTTP/S | DELETE | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Organisation ID | N/A | YES | + +## Read team details and memberships + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/team/read` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Organisation ID | N/A | YES | + +## Search teams + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/team/search` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| query | string | GET | Search query | N/A | NO | + +## Archive team + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/team/archive` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Organisation ID | N/A | YES | + +## Move team to different organisation + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/team/move` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Organisation ID | N/A | YES | +| organisation_id | uint64 | POST | Organisation ID | N/A | YES | + + + + +# Channels + +A channel is a representation of a sequence of messages. It has meta data like channel subject. Channels may be public, private or direct (between two users). + +## Update channel details + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/edit` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Channel ID | N/A | NO | +| name | string | POST | Name of Channel | N/A | YES | +| topic | string | POST | Subject of Channel | N/A | YES | + +## Remove channel + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/remove` | HTTP/S | DELETE | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Channel ID | N/A | YES | + +## Read channel details + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/read` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Channel ID | N/A | YES | + +## Search channels + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/search` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| query | string | GET | Search query | N/A | NO | + +## Archive channel + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/archive` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Channel ID | N/A | YES | + +## Move channel to different team or organisation + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/move` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Channel ID | N/A | YES | + +## Merge one team into another + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/channel/merge` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| destination | uint64 | POST | Destination Channel ID | N/A | YES | +| source | uint64 | POST | Source Channel ID | N/A | YES | + + + + +# Messages + +Messages represent individual messages in the chat system. Messages are typed, indicating the event which triggered the message. + +Currently expected message types are: + +| Name | Description | +| ---- | ----------- | +| CREATE | The first message when the channel is created | +| TOPIC | A member changed the topic of the channel | +| RENAME | A member renamed the channel | +| MESSAGE | A member posted a message to the channel | +| FILE | A member uploaded a file to the channel | + +The following event types may be sent with a message event: + +| Name | Description | +| ---- | ----------- | +| CREATED | A message has been created on a channel | +| EDITED | A message has been edited by the sender | +| REMOVED | A message has been removed by the sender | + +## New message / edit message + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/message/edit` | HTTP/S | POST | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | POST | Message ID | N/A | NO | +| channel_id | uint64 | POST | Channel ID where to post message | N/A | NO | +| contents | string | POST | Message contents (markdown) | N/A | YES | + +## Attach file to message + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/message/attach` | HTTP/S | PUT | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | + +## Remove message + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/message/remove` | HTTP/S | DELETE | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| id | uint64 | GET | Message ID | N/A | YES | + +## Read message details + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/message/read` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| channel_id | uint64 | POST | Channel ID to read messages from | N/A | YES | + +## Search messages + +#### Method + +| URI | Protocol | Method | Authentication | +| --- | -------- | ------ | -------------- | +| `/message/search` | HTTP/S | GET | Client ID, Session ID | + +#### Request parameters + +| Parameter | Type | Method | Description | Default | Required? | +| --------- | ---- | ------ | ----------- | ------- | --------- | +| query | string | GET | Search string to match against messages | N/A | NO | +| message_type | string | GET | Limit results to message type | N/A

Values: