CrioX PBXDocumentația API

API-ul CrioX PBX

Istoricul apelurilor centralei tale, în aplicația ta. Fără export, fără un Make între voi.

CrioX e centrala telefonică pe care o folosești deja în cabinet sau în firmă. API-ul e felul în care programul tău, fie el site-ul, sistemul de comenzi sau un CRM făcut în casă, vorbește cu ea. Are două jumătăți, care se completează:

Un sistem bine legat le folosește pe amândouă: evenimentul îți spune că s-a încheiat un apel, iar cererea îți aduce, când vrei, tot ce știm despre el. Obiectul „apel” e același în ambele locuri, cu aceleași chei.

Cheia API

Orice cerere se face cu o cheie. O faci din CrioX, de pe pagina Integrări, în panoul API: apeși „Cheie nouă”, îi dai un nume ca să știi unde o folosești, și o primești o singură dată, pe ecran. Copiaz-o atunci. După ce închizi fereastra nu se mai poate afișa de nicăieri; nici tu, nici noi nu o mai vedem. Dacă o pierzi, faci alta și o revoci pe cea veche.

Cheia începe cu cxk_ și se trimite la fiecare cerere, în antetul Authorization:

Authorization: Bearer cxk_7Qp2mX9aK3vT8nL1wB4cR6dF0gH2jM5pQ9sU7xZ1aC

Câteva lucruri de știut despre ea:

Prima cerere

Cel mai simplu test e să întrebi cine ești. Ruta nu cere nimic de la centrală, deci răspunde pe loc și îți spune dacă cheia merge.

GET/v1/account
curl https://api.criox.ro/v1/account \
  -H "Authorization: Bearer cxk_…"

Răspunsul:

{
  "account_id": "3f0c1d2e-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
  "account_name": "Clinica Dorobanți",
  "key_name": "Site",
  "key_prefix": "cxk_7Qp2mX9a",
  "scopes": ["calls:read"],
  "api_version": 1
}
CâmpTipCe înseamnă
account_idstringId-ul contului tău în CrioX. Același cu account_id din evenimente.
account_namestringNumele contului, cum apare în aplicație.
key_namestringNumele pe care l-ai dat cheii. Poate fi gol.
key_prefixstringPrimele 12 caractere ale cheii, cum apar în lista din Integrări.
scopesstring[]Ce are voie cheia.
api_versionintegerVersiunea API-ului care a răspuns. Azi, 1.

Adresa și formatul

Toate rutele stau sub o singură adresă:

https://api.criox.ro/v1

Răspunsurile sunt JSON, UTF-8. Cererile de citire nu au corp; filtrele merg în adresă, ca parametri. Câteva convenții, aceleași peste tot:

Erori

Când ceva nu merge, răspunsul are codul HTTP potrivit și un corp cu două câmpuri: error, un cod stabil pe care îl compari în program, și message, o propoziție pentru cine citește jurnalul. Codurile nu se schimbă; propozițiile pot fi corectate.

{
  "error": "invalid_parameter",
  "message": "„direction” poate fi doar: inbound, outbound."
}
CodHTTPCând
missing_key401Lipsește antetul Authorization.
invalid_key401Cheia nu are forma potrivită sau nu există. De obicei a fost copiată pe jumătate.
key_revoked401Cheia a fost revocată din Integrări. Fă alta.
account_suspended403Contul e suspendat. API-ul răspunde din nou când contul e activ.
account_closed403Contul e reziliat.
account_not_ready409Contul nu are încă o centrală, deci nu are apeluri.
invalid_parameter400Un parametru e scris greșit. message spune care și cum trebuia.
not_found404Ruta nu există. Verifică adresa și versiunea.
call_not_found404Nu există un apel cu acest id în contul tău, sau a ieșit din retenție.
method_not_allowed405Ruta există, dar nu cu această metodă.
rate_limited429Prea multe cereri pe minut. Antetul Retry-After spune câte secunde să aștepți.
unavailable503Centrala nu răspunde acum. Reîncearcă peste câteva secunde.
internal_error500O eroare la noi. Reîncearcă; dacă persistă, scrie-ne.

Pe 429 și 503 reîncearcă după o pauză, cu pauze din ce în ce mai lungi. Pe un 4xx nu reîncerca aceeași cerere neschimbată: nu va merge nici a doua oară.

Limite

Nu interoga lista ca să afli de apeluri noi. Pentru asta sunt evenimentele: îți spun în câteva secunde că s-a întâmplat ceva, fără nicio cerere din partea ta. Lista e pentru sincronizări și rapoarte.

Versiuni

Versiunea e în adresă: /v1. În interiorul ei, schimbările sunt doar prin adăugare: un câmp nou într-un răspuns, un parametru nou și opțional, o rută nouă. Programul tău trebuie să ignore câmpurile pe care nu le cunoaște; atât.

Ce nu facem în v1: nu redenumim și nu scoatem câmpuri, nu schimbăm sensul valorilor, nu schimbăm codurile de eroare. Dacă vreodată e nevoie de o schimbare care rupe ceva, ea vine ca /v2, iar /v1 continuă să meargă cel puțin șase luni de la anunț.

Fiecare schimbare e scrisă în Ce e nou, cu data. Specificația completă, în format OpenAPI, e la openapi.json: o poți importa în Postman sau Insomnia, sau o dai unui generator de client pentru limbajul tău.

Ce urmează

Nu sunt disponibile încă. Le scriem aici ca să știi încotro merge API-ul; când apare una, o vezi în „Ce e nou”.

Dacă ai nevoie de una dintre ele înaintea celorlalte, scrie-ne la suport@criox.ro. Ordinea o dau cererile clienților.

CrioX · suport@criox.ro · live.criox.ro