Read direct-message history
const url = 'http://127.0.0.1:7799/api/dms?limit=20';const options = {method: 'GET', headers: {cookie: 'cotal_web_session=<cotal_web_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://127.0.0.1:7799/api/dms?limit=20' \ --cookie cotal_web_session=<cotal_web_session>Return recent direct messages visible to the dashboard observer. A failed or late read returns HTTP 503 instead of a partial array.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Maximum requested messages. Absent or empty uses 500. Accepts decimal digits naming a safe integer, including 0; negative, fractional, whitespace-padded and unsafe values are refused.
Example
20Responses
Section titled “Responses”The current snapshot or history page.
object
Channel name — multicast (broadcast to everyone on the channel).
Conversation / thread correlation id.
object
Unique message id.
Lowercased peer names called out within a channel message — a wake hint that also, on a live channel, routes a durable copy to each mentioned target authorized to read that channel (SPEC §4/§5). It never carries content outside the target’s read ACL and is not a routing substitute for channel/to; the message still multicasts to the whole channel. Omitted when empty.
object
Reference to bytes in the space’s artifact store — SPEC §5’s reserved slot, now defined. Bare (not reverse-DNS) because it is Cotal’s own core primitive: extension kinds wrap EXTERNAL vocabularies, core kinds are the standard’s own. The full contract, the guard, and the object-store digest boundary live in artifact.ts.
object
sha256:<hex> over the raw bytes — the artifact’s identity. The only self-verifying field.
MIME type. A publisher’s claim.
Human name, e.g. coverage-report.html. A publisher’s claim, not a checked fact.
Size in bytes. A publisher’s claim: a receiver must never preallocate from it.
object
Reverse-DNS extension part kind, e.g. com.acme.snapshot.
Id of the message being replied to.
Epoch ms.
object
Conversation / thread correlation id.
object
Unique message id.
Lowercased peer names called out within a channel message — a wake hint that also, on a live channel, routes a durable copy to each mentioned target authorized to read that channel (SPEC §4/§5). It never carries content outside the target’s read ACL and is not a routing substitute for channel/to; the message still multicasts to the whole channel. Omitted when empty.
object
Reference to bytes in the space’s artifact store — SPEC §5’s reserved slot, now defined. Bare (not reverse-DNS) because it is Cotal’s own core primitive: extension kinds wrap EXTERNAL vocabularies, core kinds are the standard’s own. The full contract, the guard, and the object-store digest boundary live in artifact.ts.
object
sha256:<hex> over the raw bytes — the artifact’s identity. The only self-verifying field.
MIME type. A publisher’s claim.
Human name, e.g. coverage-report.html. A publisher’s claim, not a checked fact.
Size in bytes. A publisher’s claim: a receiver must never preallocate from it.
object
Reverse-DNS extension part kind, e.g. com.acme.snapshot.
Id of the message being replied to.
Instance id — unicast (direct to one specific endpoint).
Epoch ms.
object
Conversation / thread correlation id.
object
Unique message id.
Lowercased peer names called out within a channel message — a wake hint that also, on a live channel, routes a durable copy to each mentioned target authorized to read that channel (SPEC §4/§5). It never carries content outside the target’s read ACL and is not a routing substitute for channel/to; the message still multicasts to the whole channel. Omitted when empty.
object
Reference to bytes in the space’s artifact store — SPEC §5’s reserved slot, now defined. Bare (not reverse-DNS) because it is Cotal’s own core primitive: extension kinds wrap EXTERNAL vocabularies, core kinds are the standard’s own. The full contract, the guard, and the object-store digest boundary live in artifact.ts.
object
sha256:<hex> over the raw bytes — the artifact’s identity. The only self-verifying field.
MIME type. A publisher’s claim.
Human name, e.g. coverage-report.html. A publisher’s claim, not a checked fact.
Size in bytes. A publisher’s claim: a receiver must never preallocate from it.
object
Reverse-DNS extension part kind, e.g. com.acme.snapshot.
Id of the message being replied to.
Service / role — anycast (any one instance of the service receives it).
Epoch ms.
Example
[ { "parts": [ { "kind": "text" } ] }]A valid one-use k query token is exchanged for a dashboard session. The response redirects to the same path without its query. A valid existing cookie takes precedence over k.
Headers
Section titled “Headers”The requested path without the query string.
Cotal_web_session=
The query or percent-encoded channel name is invalid.
object
Examplegenerated
{ "error": "example"}No valid session, an invalid launch token, or a spent launch token. The readiness credential does not authorize these routes.
object
Example
{ "error": "unauthenticated"}Origin is checked before session authentication. An origin outside this listener’s allowed origins is refused.
object
Example
{ "error": "cross-origin"}These read routes accept no request body. An announced body is refused before it is read; the connection is closed.
object
Examplegenerated
{ "error": "example"}The request failed. The body names the failure; a failed read does not terminate the dashboard.
object
Examplegenerated
{ "error": "example"}The history read failed or did not finish within 8000 ms.
object
Examplegenerated
{ "error": "example"}