Click2Call REST API¶
The REST transport addresses a module method by HTTP method and path. It is the entry point for the CRM interface, the backoffice, mobile applications, and provider callbacks.
The same methods are available over TCP by command name — see TCP API. Request fields and results are identical; only the addressing differs.
Base URL¶
https://{broker_domain}/click2call/...
All paths of the module live under click2call/. The prefix is what keeps the module
apart from the other modules sharing the same host — including the public webhook path.
Authorization¶
Every endpoint except the public webhook requires a manager JWT:
Authorization: <JWT_TOKEN>
The platform resolves the token and passes the identity to the module. The brand and the
author of a record always come from the token, never from the request body: a manager
cannot reach another brand's calls by sending a different brand value.
POST click2call/handleWebhooks/:uuid is public — it is called by the telephony provider.
Its protection is the unguessable uuid plus the signature check of the webhook secret.
Endpoints¶
| Method | Endpoint | Access |
|---|---|---|
| Click2CallStartCall | POST click2call/call/start |
admin, leader, manager |
| Click2CallEndCall | POST click2call/call/end |
admin, leader, manager |
| Click2CallGetCalls | GET click2call/calls/list |
admin, leader, manager |
| Click2CallGetCallRecording | GET click2call/call/:id/recording |
admin, leader, manager |
| Click2CallGetProviderAdapters | GET click2call/providers/adapters |
admin, provider |
| Click2CallAddProvider | POST click2call/provider |
provider |
| Click2CallUpdateProvider | PUT click2call/provider |
provider |
| Click2CallDeleteProvider | DELETE click2call/provider |
provider |
| Click2CallGetProviders | GET click2call/providers/list |
admin, provider |
| Click2CallAddProfile | POST click2call/providerProfile |
admin |
| Click2CallUpdateProfile | PUT click2call/providerProfile |
admin |
| Click2CallDeleteProfile | DELETE click2call/providerProfile |
admin |
| Click2CallGetProfiles | GET click2call/providerProfiles/list |
admin |
| Click2CallGetMyProfiles | GET click2call/providerProfile/available/me |
admin, leader, manager |
| Click2CallAddAgent | POST click2call/agent |
admin |
| Click2CallUpdateAgent | PUT click2call/agent |
admin |
| Click2CallDeleteAgent | DELETE click2call/agent |
admin |
| Click2CallGetAgents | GET click2call/agents/list |
admin |
| Click2CallAddDialRule | POST click2call/dialRule |
admin |
| Click2CallUpdateDialRule | PUT click2call/dialRule |
admin |
| Click2CallDeleteDialRule | DELETE click2call/dialRule |
admin |
| Click2CallGetDialRules | GET click2call/dialRules/list |
admin |
| Click2CallAddBlacklistPhone | POST click2call/blacklist |
admin, leader, manager |
| Click2CallImportBlacklistPhones | POST click2call/blacklist/import |
admin |
| Click2CallDeleteBlacklistPhone | DELETE click2call/blacklist |
admin |
| Click2CallCheckBlacklistPhone | GET click2call/blacklist/check |
admin, leader, manager |
| Click2CallGetBlacklist | GET click2call/blacklist/list |
admin, leader |
| Click2CallAddCallWindow | POST click2call/callWindow |
admin |
| Click2CallUpdateCallWindow | PUT click2call/callWindow |
admin |
| Click2CallDeleteCallWindow | DELETE click2call/callWindow |
admin |
| Click2CallCheckCallWindow | GET click2call/callWindow/check |
admin, leader, manager |
| Click2CallGetCallWindows | GET click2call/callWindows/list |
admin, leader |
| Click2CallAddWebhook | POST click2call/webhook |
admin |
| Click2CallUpdateWebhook | PUT click2call/webhook |
admin |
| Click2CallDeleteWebhook | DELETE click2call/webhook |
admin |
| Click2CallGetWebhooks | GET click2call/webhooks/list |
admin |
| Click2CallGetWebhookEvents | GET click2call/webhookEvents/list |
admin |
| Click2CallHandleWebhook | POST click2call/handleWebhooks/:uuid |
public |
| Click2CallPing | GET click2call/ping |
any authenticated session |
| Click2CallHealth | GET click2call/health |
admin |
Click2CallGetLastCallsByParents has no REST route: it is an internal method for the CRM
card list and is available over the bus only.
List queries¶
Every */list method accepts the same query contract:
| Field | Type | Description |
|---|---|---|
limit |
int | Page size, 1..1000, default 100 |
offset |
int | Rows to skip |
orderBy |
array | ["id", "DESC"] |
groupBy |
array | Grouping, including date grouping such as DAY({field}) |
count, sum, min, max, avg |
array | Aggregates over the listed fields |
where, whereIn, whereLike, whereBetween, … |
object | Filters, including grouped orWhere |
Filter syntax is shared with the rest of the platform and is described in Table filter syntax.
The response is the requested page in rows, plus one key per requested aggregate:
{
"rows": [],
"count": [ { "id": 42 } ]
}
A row count is an aggregate, not a default: ask for it with count: ["id"] when the UI
needs to draw paging. Skipping it saves the second query on views that do not.
Status codes¶
| Code | Meaning |
|---|---|
200 |
Method succeeded |
400 |
Validation failed, or the request contradicts itself |
401 |
Missing or invalid JWT |
403 |
The manager may not touch this record |
404 |
Record, profile, provider, or adapter not found |
409 |
The call is not allowed: blacklist, destination, calling window, duplicate |
429 |
Provider rate limit |
500 |
Module or storage error |
502 |
Module is unreachable on the bus |
503 |
Provider is unavailable |
On success the body is the method payload itself — there is no wrapper object to unwrap:
{ "callId": 501, "externalId": "prov-77213", "status": "INITIATED" }
On failure the HTTP status carries the outcome and the body is the message:
HTTP/1.1 409 Conflict
"Phone 380950000000 is blacklisted: customer request"
Branch on the status code and show the message to the operator. The error type listed on
each method page names the same condition and appears in the module log and in the service
envelope; the gateway forwards the code and the message, so at the HTTP boundary the status
code is the machine-readable part.
That is why the method pages list several type values under one status: 409 on
Click2CallStartCall can mean a closed calling window, a
blocked destination, or a duplicate click, and the message says which.