Channel
A channel is how Solvio talks to the outside world — an email mailbox today, other transports later. A thread bound to a channel delivers its messages through it and receives replies back into the same conversation.
Two properties decide what a channel is:
kind
the transport: EMAIL, WEBHOOK, TEAMS, SMS, WHATSAPP, WEBCHAT, NOTICE
purpose
what it is used for: THREAD and TICKET carry conversations, NOTIFICATION only sends out
config is a typed object per purpose — it holds static defaults such as the sender name a channel uses, never conditions. It is validated against the purpose when a channel is created or changed.
Only EMAIL channels with a conversational purpose can be created at the moment; every other kind is answered with 400. The addresses a channel uses are described under Channel Addresses.
Returns the tenant's channels, ordered by id unless sort says otherwise.
Filterable — id, tenantId, name, kind, purpose, active, createdAt, updatedAt.
Sortable — id, name, active, createdAt, updatedAt.
Searchable — nothing yet.
The identities of a channel are not part of the default answer; request them with fields=identities.
Token issued by the central equipme authentication, sent as Bearer <token>.
JSON filter expression
Free-text term — no effect here
Comma-separated field:direction terms
Selection of fields and relations
name,kind,purpose,activeNumber of entries to skip
0Page size, 1 to 100
100OK
Bad Request
Unauthorized
Forbidden
Internal Server Error
GET /api/v1/channels HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"count": 1,
"data": [
{
"active": true,
"createdAt": "text",
"id": 1,
"kind": "",
"name": "text",
"purpose": "",
"tenant": {
"id": 1,
"name": "text"
},
"tenantId": 1,
"updatedAt": "text"
}
]
}Creates a channel. name, kind and purpose are required, config is validated against the purpose and rejected with 400 when it does not fit.
Today only EMAIL with a conversational purpose (THREAD or TICKET) can be created — any other kind is answered with 400. Inbound email additionally requires the server to have its mail domain configured.
active decides whether the channel is used; an inactive channel keeps its configuration but neither sends nor receives.
Token issued by the central equipme authentication, sent as Bearer <token>.
Created
Bad Request
Unauthorized
Forbidden
Internal Server Error
POST /api/v1/channels HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}{
"data": {
"active": true,
"createdAt": "text",
"id": 1,
"kind": "",
"name": "text",
"purpose": "",
"tenant": {
"id": 1,
"name": "text"
},
"tenantId": 1,
"updatedAt": "text"
}
}Returns a single channel by its id. Its identities are not included unless fields=identities asks for them.
Token issued by the central equipme authentication, sent as Bearer <token>.
Channel id
3Selection of fields and relations
name,kind,identitiesOK
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
GET /api/v1/channels/{channelId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"active": true,
"createdAt": "text",
"id": 1,
"kind": "",
"name": "text",
"purpose": "",
"tenant": {
"id": 1,
"name": "text"
},
"tenantId": 1,
"updatedAt": "text"
}
}Deletes a channel. Threads that were bound to it keep their messages; they simply have no transport any more, so nothing further is delivered for them. Answers with 204 and no body.
Token issued by the central equipme authentication, sent as Bearer <token>.
Channel id
3No Content
No content
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
DELETE /api/v1/channels/{channelId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Changes a channel. The body follows JSON Merge Patch semantics: an absent field stays as it is, null clears it, a value sets it.
kind and purpose cannot be changed — they decide what the channel is, and its configuration and identities depend on them. A replacement config is validated against the existing purpose.
Token issued by the central equipme authentication, sent as Bearer <token>.
Channel id
3OK
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
PATCH /api/v1/channels/{channelId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}{
"data": {
"active": true,
"createdAt": "text",
"id": 1,
"kind": "",
"name": "text",
"purpose": "",
"tenant": {
"id": 1,
"name": "text"
},
"tenantId": 1,
"updatedAt": "text"
}
}Last updated
Was this helpful?