Stările pe care le vezi în bonuri, dispozitive și webhook-uri
Stările pe care le vezi în bonuri, dispozitive și webhook-uri
Când citești un răspuns API, primești un webhook sau te uiți la un ecran din portal, vei întâlni câmpuri de stare cu un set fix de valori. Această pagină listează fiecare valoare pe care o poți întâlni, ce înseamnă în termeni de business și când o setează e-bon.
Urmărește starea unei comenzi de bon
Când trimiți un bon sau orice altă comandă fiscală către un dispozitiv, e-bon atribuie o stare comenzii și o actualizează pe măsură ce dispozitivul o preia și răspunde.
| Valoare | Când o vezi |
|---|---|
pending | Comanda a fost acceptată de e-bon și așteaptă să fie livrată către dispozitiv. |
sent | Comanda este pe drum către dispozitiv — fie pe conexiunea activă, fie printr-o notificare push. |
completed | Dispozitivul a confirmat că a executat comanda cu succes. Stare finală. |
failed | Dispozitivul a raportat o eroare sau livrarea a eșuat. Stare finală. |
timeout | Dispozitivul nu a răspuns în fereastra de siguranță (60 s pentru push, 180 s în total). Stare finală. |
Ciclul de viață tipic:
POST /api/v1/devices/:deviceId/commands
│
▼
┌──────────┐
│ pending │
└────┬─────┘
│ pornește livrarea
▼
┌──────────┐ dispozitivul confirmă succesul ┌────────────┐
│ sent │ ──────────────────────────────────▶ │ completed │ (final)
└────┬─────┘ └────────────┘
│ dispozitivul întoarce o eroare
▼
┌──────────┐
│ failed │ (final)
└──────────┘
Așteptarea push expiră (60 s) sau supraveghetorul de siguranță preia
o comandă rămasă în pending/sent peste 180 s:
┌──────────┐
│ timeout │ (final)
└──────────┘
Odată ce o comandă ajunge în completed, failed sau timeout, e-bon nu o mai modifică.
Unde apare:
- Răspunsurile API la
GET /api/v1/commands/:idșiGET /api/v1/devices/:deviceId/commands/:id, pe câmpulstatus. - Plicurile de webhook
command.completed,command.failedșicommand.timeout— vezi Evenimente de webhook. - Coloana Dispozitive → Activitate din portal.
Pentru fluxul complet de livrare (conexiune activă plus fallback prin push), vezi Fluxul de emitere a bonului. Pentru catalogul tipurilor de comandă, vezi Tipuri de comandă.
Citește starea de conectivitate a dispozitivului
Fiecare AMEF înregistrat în e-bon poartă o stare de conectivitate care reflectă dacă cloud-ul îl poate atinge în acest moment.
| Valoare | Când o vezi |
|---|---|
online | Dispozitivul este conectat la e-bon și gata să primească comenzi. |
offline | Dispozitivul nu este conectat. Comenzile noi vor aștepta până când revine. |
Dispozitivul comută între online și offline pe toată durata de viață a înregistrării sale; nu există stare finală.
Unde apare:
- Răspunsurile API la
GET /api/v1/devicesșiGET /api/v1/devices/:id, pe câmpulstatus. - Plicurile de webhook
device.onlineșidevice.offline. - Ecusonul de stare de pe cardul dispozitivului din portal (roșu/gri).
Citește starea livrării unui webhook
Fiecare eveniment de webhook pe care e-bon îl trimite către endpoint-ul tău creează o înregistrare de livrare cu propria sa stare. Poți inspecta livrările pentru a-ți depana integrarea.
| Valoare | Când o vezi |
|---|---|
pending | Livrarea este în așteptare sau între încercări de reluare. Nu s-a stabilit încă rezultatul final. |
success | Endpoint-ul tău a întors un răspuns 2xx la una dintre încercări. Stare finală. |
failed | Toate cele cinci încercări de livrare au eșuat. Stare finală. |
Ciclul de viață:
dispatch
│
▼
┌──────────┐ încercarea 1 reușește (2xx) ┌──────────┐
│ pending │ ───────────────────────────▶ │ success │ (final)
└────┬─────┘ └──────────┘
│ încercarea eșuează
▼
┌──────────┐ o încercare ulterioară reușește ┌──────────┐
│ pending │ ─────────────────────────────────▶ │ success │ (final)
│ reluări │
└────┬─────┘
│ încercarea 5 tot eșuează
▼
┌──────────┐
│ failed │ (final)
└──────────┘
După un răspuns non-2xx livrarea rămâne pending și este reluată după programul [60 s, 5 min, 30 min, 2 h, 12 h]. Se fac maximum 5 încercări. Dacă un webhook acumulează 20 de livrări eșuate consecutiv, este dezactivat automat și un administrator trebuie să-l reactiveze din portal.
Unde apare:
- Răspunsul API la
GET /api/v1/webhooks/:id/deliveries, pe câmpulstatus. - Panoul Setări → Webhook-uri → livrări din portal.
- Webhook-ul părinte expune și
lastDeliveryStatus(successsaufailed), actualizat la fiecare rezultat final.
Pentru contractul de reluări, regula de auto-dezactivare și cum se capturează corpul răspunsului, vezi Evenimente webhook.
Citește severitatea alertelor de dispozitiv
Când un dispozitiv este într-o stare care necesită atenție (hârtie aproape terminată, capac deschis, raport Z restant etc.), e-bon atașează o severitate fiecărei alerte.
| Valoare | Când o vezi |
|---|---|
warning | Pentru condiții care nu blochează: hârtie puțină, memorie fiscală aproape plină, raport Z restant. |
error | Pentru condiții care blochează: capac deschis, dispozitiv deconectat. |
Alertele sunt calculate la momentul citirii pornind de la starea curentă a dispozitivului — nu sunt stocate. Când un dispozitiv are mai multe alerte, cea mai mare severitate câștigă culoarea ecusonului din portal (eroarea bate avertismentul).
Unde apare:
- Răspunsurile API la
GET /api/v1/devices/alertsșiGET /api/v1/devices/:id/alerts, pe câmpulseverityal fiecărei alerte. - Culoarea ecusonului de pe cardul dispozitivului din portal.
Pentru regulile și pragurile din spatele fiecărui tip de alertă, vezi Alerte din portal.
Urmărește starea unui raport ANAF
Rapoartele Jurnal Electronic (JE) poartă o stare de acceptare ANAF care reflectă ce s-a întâmplat după ce administratorul a depus fișierul pe ANAF SPV.
| Valoare | Când o vezi |
|---|---|
pending | Raportul a fost trimis pe ANAF SPV; administratorul nu a înregistrat încă un rezultat. |
accepted | Administratorul a marcat depunerea SPV ca acceptată de ANAF. |
rejected | Administratorul a marcat depunerea SPV ca respinsă de ANAF. |
error | Administratorul a marcat depunerea SPV ca având eroare (de ex. eroare de transport). |
PATCH /api/v1/reports/je/:id cu noua valoare anafStatus. Valorile accepted, rejected și error pot fi resetate dacă administratorul trebuie să corecteze o intrare anterioară. JE generat (stare absentă sau 'pending')
│
▼
┌──────────────────┐
│ pending │
└────────┬─────────┘
│ administratorul depune pe SPV, apoi face PATCH la raport:
├────────────▶ ┌──────────┐
│ │ accepted │
│ └──────────┘
├────────────▶ ┌──────────┐
│ │ rejected │
│ └──────────┘
└────────────▶ ┌──────────┐
│ error │
└──────────┘
Unde apare:
- Răspunsurile API la
GET /api/v1/reports/jeșiGET /api/v1/reports/je/:id, pe câmpulanafStatus. - Coloana Rapoarte → Stare ANAF din portal.
Pentru procesul de depunere SPV și fundalul legal, vezi Raportare ANAF.
Identifică tipurile de bon
Fiecare bon poartă un tip care indică natura sa legală. Tipul este setat la emiterea bonului și nu se mai schimbă.
| Valoare | Ce înseamnă |
|---|---|
sale | Un bon fiscal de vânzare standard — cazul dominant. |
refund | Un bon de retur; întoarce numerar, dar nu are statutul legal de storno. |
storno | Un bon de stornare fiscală (storno) care anulează legal o vânzare anterioară și face referire la cea originală. |
print_reversal_receipt (vezi Tipuri de comandă). Pentru definiția legală a stornoului, vezi glosarul.Unde apare:
- Răspunsurile API pentru resursele de bon, pe câmpul
Receipt.type. - Coloana Bonuri → Tip din portal.
Identifică rolurile de utilizator
Fiecare utilizator aparține unei organizații cu unul din trei roluri. Schimbările de rol sunt aplicate direct de un administrator sau de proprietar — nu există un flux de tranziție.
| Valoare | Ce permite |
|---|---|
owner | Control administrativ complet: facturare, gestionarea membrilor, acțiuni ireversibile precum ștergerea organizației. |
admin | Control operațional complet, mai puțin acțiunile rezervate proprietarului: gestionează dispozitive, locații, membri, rapoarte, webhook-uri, chei API. |
operator | Utilizare zilnică: emite bonuri, rulează rapoarte, vizualizează alerte. Nu poate modifica setările la nivel de organizație. |
Unde apare:
- Rolul apare ca un claim pe fiecare cerere autentificată și în câmpul
User.rolepe endpoint-urile de listare a membrilor și de utilizator curent. - Coloana Setări → Organizație → Membri din portal.
Pentru cum fiecare rol controlează API-ul și pentru matricea RBAC completă, vezi Autentificare și autorizare.
Identifică planurile de abonament
Fiecare organizație este pe unul din trei niveluri de abonament. Planul controlează plafoanele de dispozitive, debitul API și accesul la funcționalitățile plătite.
| Valoare | Ce înseamnă |
|---|---|
free | Nivel implicit — număr de dispozitive plafonat, debit API plafonat, abonamente la webhook-uri limitate. |
pro | Nivel plătit — plafoane mai mari, fan-out complet de webhook-uri, retenție completă a rapoartelor. |
enterprise | Nivel negociat — plafoane personalizate, prioritizare la suport. |
Unde apare:
- Răspunsurile API, pe câmpul
Organization.plan. - Setări → Abonament din portal.
Impunerea nivelului este aplicată la fiecare cerere API pentru a controla funcționalitățile plătite — vezi Autentificare și autorizare.
Unde mergi mai departe
- API Comenzi — plicul de cerere și contractul de polling pentru comenzi de bon.
- Evenimente de webhook — lista completă de plicuri, inclusiv
command.completed,command.failed,command.timeout,device.onlineșidevice.offline. - Portal — Dispozitive — unde apar starea dispozitivului și severitățile de alertă în interfață.
- Portal — Alerte — regulile de derivare din spatele fiecărei alerte.
- Fluxul de emitere a bonului — ciclul complet al unei comenzi, inclusiv fallback-ul conexiune activă / push.
- Evenimente webhook — ciclul complet de livrare și contractul de reluări.
- Autentificare și autorizare — porțile pentru roluri și impunerea nivelului de abonament.
- Raportare ANAF — fluxul stării ANAF condus de administrator.
- Glosar — vocabularul fiscal românesc referit aici (storno, AMEF, raport Z etc.).
- Tipuri de comandă — catalogul per tip care folosește ciclul de viață al stării unei comenzi.
Tipuri de comandă
Referință pentru fiecare comandă fiscală pe care e-bon o trimite către AMEF — corpul cererii, forma rezultatului și ce face fiecare comandă pe dispozitiv.
Coduri de eroare
Referință pentru fiecare cod de eroare returnat de API-ul e-bon — statut HTTP, când îl primești și cum îl tratezi din integrarea ta.