Migrarea de la v1
v2 nu e v1 cu alte adrese. Contractul e altul, și nicio integrare v1 nu trece pe v2 fără modificări. Ghidul ăsta spune ce se schimbă și unde s-a mutat fiecare operație.
Ce e diferit
| v1 | v2 | |
|---|---|---|
| Autentificare | hash calculat de integrator, cod unic în corp | cheie API în Authorization: Bearer, cod unic în Fgo-Cod-Unic |
| Adrese | factura/emitere, articol/list, totul POST |
REST: POST /v2/facturi, GET /v2/articole, resursa în cale |
| Nume de câmpuri | PascalCase |
snake_case |
| Răspuns reușit | corp liber, Success: true |
{ "data": ..., "meta": ... } |
| Eroare | 200 cu Success: false și un mesaj |
statusul real — 400, 403, 404, 429 — și application/problem+json cu un type stabil |
| Paginare | număr de pagină | cursor opac din meta.pagination |
| Identificatori | numere | text opac cu prefix: cli_4f1c9b2e… |
| Câmpurile din liste | toate, mereu | ceri ce vrei prin fields |
| Identitatea facturii | Serie + Numar în corp |
serie + numar, în cale |
Cea mai mare schimbare de comportament: erorile nu mai sunt 200. În v1, o factură neemisă răspundea 200 cu Success: false; în v2 răspunde 400 cu motivul în corp. Dacă integrarea ta se uita la Success, în v2 se uită la status.
Unde s-a mutat fiecare operație
| v1 | v2 |
|---|---|
factura/emitere |
POST /v2/facturi |
factura/getstatus |
GET /v2/facturi/{serie}/{numar} |
factura/print |
POST /v2/facturi/{serie}/{numar}/genereaza-link-de-descarcare |
factura/listfacturiasociate |
GET /v2/facturi/{serie}/{numar}/asociate |
factura/anulare |
POST /v2/facturi/{serie}/{numar}/anuleaza |
factura/stornare |
POST /v2/facturi/{serie}/{numar}/storneaza |
factura/stergere |
DELETE /v2/facturi/{serie}/{numar} |
factura/awb |
PUT /v2/facturi/{serie}/{numar}/awb |
factura/trimiterespv |
POST /v2/facturi/{serie}/{numar}/trimite-in-spv |
factura/incasare |
POST /v2/facturi/{serie}/{numar}/incasari |
factura/stergereincasare |
DELETE /v2/facturi/{serie}/{numar}/incasari/{serie_incasare}/{numar_incasare} |
articol/list |
GET /v2/articole |
articol/get |
GET /v2/articole?cod=... (sau cod_bare= / nume=, după setarea firmei „Căutare articole după”) |
articol/gestiune |
GET /v2/gestiuni |
client/list |
GET /v2/clienti |
nomenclator/judet |
GET /v2/nomenclatoare/judete |
nomenclator/localitati |
GET /v2/nomenclatoare/localitati?cod_judet=... |
nomenclator/banca |
GET /v2/nomenclatoare/banci |
nomenclator/valuta |
GET /v2/nomenclatoare/valute |
nomenclator/tara |
GET /v2/nomenclatoare/tari |
nomenclator/tva |
GET /v2/nomenclatoare/cote-tva |
nomenclator/tipfactura |
GET /v2/nomenclatoare/tipuri-factura |
nomenclator/tipincasare |
GET /v2/nomenclatoare/tipuri-incasare |
Patru operații din v1 nu au echivalent în v2:
factura/check— validarea unei facturi fără emitere. În v2, o cerere de emitere greșită răspunde400cuvalidation_errorscomplete înainte să creeze ceva; nu mai ai nevoie de un apel separat.articol/articolemodificate— articolele modificate de la o dată. În v2 nu există un filtru echivalent pentru modificările dintr-un interval.GET /v2/articolenecesită Enterprise: parcurgi paginile cucursor, alegi câmpurile prinfieldsși compari rezultatele în integrarea ta. Aceasta este o recitire a nomenclatorului, nu o sincronizare incrementală echivalentă. Pentru cantități pe gestiuni, folosește operațiile/v2/stocuri/..., tot cu Enterprise.nomenclator/tipclient— tipul clientului e un set fix,PJsauPF, și se trimite direct înclient.tip.mesagerie/trimite— notificările WhatsApp nu sunt disponibile în v2 deocamdată.
v2 are și operații fără echivalent în v1: furnizori și facturile lor, solduri, rapoarte, balanță, poziția la ANAF, arhive PDF, fișe de partener. Le găsești în referință.