System and notifications
Service status, configuration deployment, background jobs and notifications.
Service status
GET /health: responds without a key, for reachability checks.GET /v1/live/health(scopelive:read): overall status (operational,degraded,outage) and tenant counters; for the platform, also per-service details.GET /v1/system/status(platform only): services, phone system, server resources.
curl -s https://centralino.exovoip.it/api/health
curl -s https://centralino.exovoip.it/api/v1/live/health -H "X-API-Key: $EXOPBX_API_KEY"
curl -s https://centralino.exovoip.it/api/v1/system/status -H "X-API-Key: $EXOPBX_API_KEY"const health = await pbx.live.health(); // operational | degraded | outage
const system = await pbx.system.status(); // solo piattaforma$health = $pbx->live->health();
$system = $pbx->system->status();health = pbx.live.health()
system = pbx.system.status()Configuration deployment
Changes made through the API (extensions, trunks, queues, menus…) are applied to the phone system automatically, without interrupting active calls. The platform can request an explicit deployment and track its outcome:
curl -s -X POST https://centralino.exovoip.it/api/v1/system/reload -H "X-API-Key: $EXOPBX_API_KEY" \
-H "Content-Type: application/json" -d '{"tenantId":3,"scope":"auto","reason":"verifica configurazione"}'
curl -s https://centralino.exovoip.it/api/v1/system/reload-jobs/55 -H "X-API-Key: $EXOPBX_API_KEY"const { job } = await pbx.system.reload({
tenantId: 3,
scope: 'auto',
reason: 'verifica configurazione',
});
const result = await pbx.system.reloadJob(job.id);$job = $pbx->system->reload(['tenantId' => 3, 'scope' => 'auto', 'reason' => 'verifica configurazione'])['job'];
$result = $pbx->system->reloadJob($job['id']);job = pbx.system.reload({"tenantId": 3, "scope": "auto", "reason": "verifica configurazione"})["job"]
result = pbx.system.reload_job(job["id"])Background jobs
Long-running operations (voice prompt generation, transcriptions, summaries) return a job: GET /v1/jobs/:id reports its status (pending, running, done, failed) and any error.
Notifications
The tenant can receive email or Telegram alerts for missed calls, new voicemail messages, business hours overrides and completed recordings. Scopes notifications:read / notifications:write.
curl -s -X PUT https://centralino.exovoip.it/api/v1/notifications/settings \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
-d '{"rules":[{"event":"missed_call","enabled":true,"channels":["email"],"emails":["reception@acme.example"],
"includeAdmins":false,"extensionIds":[],"queueIds":[5],"numberIds":[]}]}'await pbx.notifications.setSettings({
rules: [
{
event: 'missed_call',
enabled: true,
channels: ['email'],
emails: ['reception@acme.example'],
includeAdmins: false,
extensionIds: [],
queueIds: [5], // solo le chiamate perse della coda 5
numberIds: [],
},
],
});$pbx->notifications->setSettings(['rules' => [[
'event' => 'missed_call', 'enabled' => true, 'channels' => ['email'], 'emails' => ['reception@acme.example'],
'includeAdmins' => false, 'extensionIds' => [], 'queueIds' => [5], 'numberIds' => [],
]]]);pbx.notifications.set_settings({"rules": [{
"event": "missed_call", "enabled": True, "channels": ["email"], "emails": ["reception@acme.example"],
"includeAdmins": False, "extensionIds": [], "queueIds": [5], "numberIds": [],
}]})POST /v1/notifications/test sends a test notification; GET /v1/notifications/log shows recent deliveries with their outcome.
Endpoints
| Request | Scope | SDK method |
|---|---|---|
GET /health | — | health() |
GET /auth/me | — | auth.me() |
GET /v1/system/status | system:read | system.status() |
POST /v1/system/reload | system:write | system.reload() |
GET /v1/system/reload-jobs | system:read | system.reloadJobs() · py: system.reload_jobs() |
GET /v1/system/reload-jobs/:id | system:read | system.reloadJob() · py: system.reload_job() |
GET /v1/notifications/settings | notifications:read | notifications.getSettings() · py: notifications.get_settings() |
PUT /v1/notifications/settings | notifications:write | notifications.setSettings() · py: notifications.set_settings() |
GET /v1/notifications/log | notifications:read | notifications.log() |
POST /v1/notifications/test | notifications:write | notifications.test() |
GET /v1/jobs/:id | media:read | jobs.get() |
GET /v1/ops/status | system:read | ops.status() |
