POST/v1/apps
Creează o aplicație OAuth
create_app
Înregistrează o aplicație a organizației. public este un client fără secret (browser, aplicație mobilă, CLI): doar cod de autorizare cu PKCE. confidential este un client cu server: primește un secret și, în plus, date de autentificare ale clientului (client credentials) în numele organizației, cu rolul role și profilul de date data_profile. Secretul de client client_secret este returnat doar în acest răspuns și la reînnoire, așa că stocați-l. O organizație poate avea cel mult 50 de aplicații. Necesită permisiunea ORG_MANAGE_KEYS; o cheie API sau un token are nevoie de domeniul admin. Adăugat în 1.62.0.
Autentificare
Trimiteți o cheie API în antetul Authorization: Authorization: Bearer <cheie>.
Parametri de antet
Idempotency-KeystringCheie pentru reîncercarea sigură a unei scrieri: 1–255 de caractere ASCII imprimabile; se recomandă un UUID v4 pentru fiecare operație logică. O reîncercare cu aceeași cheie în decurs de 24 de ore nu execută din nou operația: returnează răspunsul salvat (status, antete și corp) cu antetul
Idempotency-Replayed: true. Aceeași cheie cu altă metodă, altă cale, altContent-Typesau alt corp returnează409 api.idempotency_mismatch; cât timp prima cerere încă rulează –409 api.idempotency_in_progresscuRetry-After: 1. După un răspuns 5xx sau 429, cheia este eliberată, iar o reîncercare execută din nou operația. Cheia este valabilă în cadrul organizației și al apelantului (cheie API, utilizator sau cheie de sursă personalizată).length ≥ 1, length ≤ 255
Corpul cererii
application/json
namestringobligatoriuNumele pentru ecranul de consimțământ.
length ≥ 1, length ≤ 100
descriptionstringDescrierea pentru ecranul de consimțământ.
length ≤ 1000
homepage_urlstringSite-ul aplicației (
httpsauhttps).length ≤ 2000
redirect_urisarray of stringURI-urile de redirecționare:
https;httpdoar pentrulocalhost,127.0.0.1și[::1]; o schemă personalizată a aplicației doar în forma cu domeniu inversat (com.example.app:/callback). Fără fragment. O aplicație publică are nevoie de cel puțin un URI.items ≤ 10
Domeniile de acces pe care le poate cere aplicația.
items ≥ 1
rolestringRolul tokenurilor client credentials ale unei aplicații
confidential:admin,editor,verifiersauviewer(implicitviewer).data_profilestringProfilul de date al tokenurilor client credentials; implicit, același profil ca pentru o cheie API nouă.
Răspunsuri
201Aplicația a fost creată.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
Idempotency-Replayedtrueînseamnă că răspunsul a fost redat din cel salvat pentru această cheieIdempotency-Key: operația nu a rulat din nou.
application/json
idstringobligatoriuID-ul aplicației (
app_și 32 de caractere hexazecimale), care este șiclient_id.namestringobligatoriuNumele pe care îl vede un angajat pe ecranul de consimțământ.
descriptionstringobligatoriuDescrierea pentru ecranul de consimțământ (poate fi goală).
homepage_urlstring | nullobligatoriuSite-ul aplicației.
redirect_urisarray of stringobligatoriuURI-urile de redirecționare permise (potrivire exactă a șirului).
Domeniile de acces pe care le poate cere aplicația.
client_secret_prefixstring | nullobligatoriuPrimele caractere ale secretului de client, pentru a-l recunoaște;
nullpentru o aplicație publică.rolestring | nullobligatoriuRolul tokenurilor client credentials (
admin,editor,verifier,viewer);nullpentru o aplicație publică.data_profilestring | nullobligatoriuProfilul de date al tokenurilor client credentials;
nullpentru o aplicație publică.authorizationsintegerobligatoriuNumărul de autorizări active ale angajaților.
created_atstring (date-time)obligatoriuupdated_atstring (date-time)obligatoriuclient_secretstring | nullobligatoriuSecretul de client (
kbcs_…), afișat o singură dată;nullpentru o aplicație publică.
400Cererea este invalidă: valoarea unui parametru sau starea obiectului nu permite acțiunea (`detail` este un mesaj).
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
401Nu au fost trimise date de autentificare (nici cookie de sesiune, nici cheie API) sau cheia nu a fost găsită.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
403Acțiunea nu este permisă: rolul este insuficient, nu există acces la colecție sau la fișă, cererea rulează în modul „View as” (vizualizare ca alt utilizator) sau organizația este suspendată ori ștearsă (`detail` este un obiect cu `code: org_suspended | org_deleted`).
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
409Starea obiectului nu permite acțiunea, de exemplu o dublură, o indexare în curs sau un job deja procesat.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
422Eroare de validare: corpul sau parametrii nu corespund schemei (`detail` este o listă de erori de validare) ori valoarea unui parametru este în afara intervalului permis (`detail` este un mesaj).
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
429Prea multe cereri (`api.rate_limited`), cota organizației pentru minut, zi sau lună este epuizată (`api.quota_exceeded`; `error.details` conține `quota`, `limit` și `reset_at`), limita organizației este atinsă sau serviciul de răspunsuri este ocupat (`answers.engine_busy`). Așteptați timpul indicat în antetul `Retry-After`.
Antetele răspunsului
Retry-AfterNumărul de secunde de așteptat înainte de a reîncerca cererea.
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
Coduri de eroare
Codurile pe care acest endpoint le poate returna în error.code, pe lângă codurile generale ale oricărei cereri.
Reîncercări sigure
Trimiteți un antet Idempotency-Key (de exemplu, un UUID) cu fiecare POST și PATCH. O reîncercare cu aceeași cheie în decurs de 24 de ore returnează răspunsul salvat, fără să execute din nou cererea.
Limite de frecvență
Răspunsurile conțin antetele RateLimit și RateLimit-Policy, precum și antetele anterioare X-RateLimit-Limit, X-RateLimit-Remaining și X-RateLimit-Reset. Un răspuns 429 conține Retry-After în secunde: așteptați și reîncercați.