Send your connected agent a message on a board
Keeps a message in the thread of one agent connection on the board, for the agent's next wait_for_board_messages, open_board or read_board_tab, and shows it on that thread's screens: sent, then delivered when the agent reads it, then answered.
/orgs/{org}/boards/{board}/agents/{connection}/messagesTL;DR
| Question | Answer |
|---|---|
| What does it do? | Send your connected agent a message on a board. |
| What does it take? | A JSON body of type BoardMessageBody. |
| What does it return? | Status 200 with a body of type BoardMessageSent. |
| What can go wrong? | 400 the body is not valid: no text, a text too long, or too many problems; 401 not signed in; 403 boards are not on for the organisation (boards.not_enabled), or the caller is not the member who connected this agent (boards.not_your_agent); 404 no such organisation, board, tab or agent connection, or one not open to the caller: the cases look alike; 422 the message holds something that looks like a secret, and the organisation blocks them (boards.secret_blocked, the findings masked); 429 too many requests; 503 organisations or boards are not set up on this server. Every failure uses the one error envelope. |
What it does
Keeps a message in the thread of one agent connection on the board, for the agent's next wait_for_board_messages, open_board or read_board_tab, and shows it on that thread's screens: sent, then delivered when the agent reads it, then answered. Only the member who connected the agent may send, or also an owner or admin when the organisation's setting says so; anyone else gets 403 boards.not_your_agent. The text and the problems are scanned for secrets. A thread keeps its last 50 messages, for 30 days at most. Audited as orgs.board.agent_message, without the words.
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
org | string | yes | The organisation's id or its slug. |
board | string | yes | The board's id: 22 letters and digits. |
connection | string | yes | The agent connection's id, as the board's presence names it. |
Request body
The body has the type BoardMessageBody.
| Field | Type | Required | Description |
|---|---|---|---|
text | string | yes | What the person asks of their agent, in their words. Kept on the board like a tab, never in the audit log. at least 1 character; at most 2000 characters. |
tab | string | null | no | The tab on screen, or null. at least 12 characters; at most 12 characters; pattern ^[0-9A-Za-z]+$. |
revision | string | null | no | The revision on screen, or null for main. at least 12 characters; at most 12 characters; pattern ^[0-9A-Za-z]+$. |
problems | BoardAgentProblem[] | no | The tab's problems, for Send problems. |
problems[].code | string | yes | pattern ^[A-Z]\d{3,4}$. |
problems[].severity | "error" | "warning" | yes | |
problems[].line | integer | yes | minimum 1; maximum 1000000. |
problems[].column | integer | yes | minimum 1; maximum 1000000. |
problems[].message | string | yes | at least 1 character; at most 500 characters. |
problems[].hint | string | null | yes | at least 1 character; at most 500 characters. |
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | The message, as its thread shows it, and how many things in it look like a secret. | BoardMessageSent |
| 400 | The body is not valid: no text, a text too long, or too many problems. | ErrorResponse |
| 401 | Not signed in. | ErrorResponse |
| 403 | Boards are not on for the organisation (boards.not_enabled), or the caller is not the member who connected this agent (boards.not_your_agent). | ErrorResponse |
| 404 | No such organisation, board, tab or agent connection, or one not open to the caller: the cases look alike. | ErrorResponse |
| 422 | The message holds something that looks like a secret, and the organisation blocks them (boards.secret_blocked, the findings masked). | ErrorResponse |
| 429 | Too many requests. | ErrorResponse |
| 503 | Organisations or boards are not set up on this server. | ErrorResponse |
Response body
A 200 answer has the type BoardMessageSent.
| Field | Type | Required | Description |
|---|---|---|---|
message | BoardMessage | yes | |
message.id | string | yes | |
message.connection | string | yes | |
message.owner | string | yes | |
message.at | integer | yes | |
message.from | "person" | "agent" | yes | |
message.label | string | yes | |
message.text | string | yes | |
message.tab | string | null | yes | |
message.revision | string | null | yes | |
message.problems | BoardAgentProblem[] | yes | |
message.problems[].code | string | yes | pattern ^[A-Z]\d{3,4}$. |
message.problems[].severity | "error" | "warning" | yes | |
message.problems[].line | integer | yes | minimum 1; maximum 1000000. |
message.problems[].column | integer | yes | minimum 1; maximum 1000000. |
message.problems[].message | string | yes | at least 1 character; at most 500 characters. |
message.problems[].hint | string | null | yes | at least 1 character; at most 500 characters. |
message.inReplyTo | string | null | yes | |
message.status | "sent" | "delivered" | "answered" | yes | sent: kept for the agent; delivered: the agent read it; answered: the agent replied. |
message.deliveredAt | integer | null | yes | |
message.answeredAt | integer | null | yes | |
secrets | object | yes | |
secrets.count | integer | yes | |
secrets.kinds | string[] | yes |
See also
| Doc | Why |
|---|---|
| API reference | Every endpoint, and the error envelope |
| Schemas | Every request and response type |
| Tool reference | The operations as callable tools |