oneapi
Autentificare
Anaf v1 / e-Transport

Citește declarația

Dintr-o notificare e-Transport scoate datele în JSON: bunurile, partenerul, transportatorul, locurile de start şi de final, documentele însoţitoare.

POST
https://oneapi.ro/api/anaf/v1/etransport/parse

Corpul cererii

Corpul cererii e documentul întreg, trimis brut (Content-Type: application/xml) — nu un obiect cu câmpuri.

Declarație de transport

etransport.xml application/xml · 1,1 KB — se trimite ca atare, în corpul cererii.

Livrare intracomunitară

etransport-lic.xml application/xml · 1,0 KB — se trimite ca atare, în corpul cererii.

Export

etransport-exp.xml application/xml · 1,0 KB — se trimite ca atare, în corpul cererii.

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • Documentul se poate trimite şi ca fişier: multipart/form-data cu câmpul fisier (curl -F fisier=@document.xml), în locul corpului brut. Conţinutul fişierului devine corpul cererii, deci rezultatul e identic; opţiunile rămân în query string, iar alt câmp de formular lângă fisier dă 422 camp_necunoscut.
  • Primește XML-ul unei declarații e-Transport v2 și întoarce JSON-ul de business corespunzător — inversul lui build. Împreună fac round-trip-ul JSON ⇄ XML.
  • Zero retenție: parsarea e stateless, in-memory.

La ce folosește

  • Citirea unei declarații primite, fără a scrie parser de XML.
  • Round-trip: parsezi, modifici un câmp, re-generezi cu build.

Structura răspunsului

CâmpTipDescriere
data.declarant string
data.ref_declarant string
data.operatiune string
data.bunuri[].scop string
data.bunuri[].cod_tarifar string
data.bunuri[].denumire string Denumirea, aşa cum o publică sursa.
data.bunuri[].cantitate integer
data.bunuri[].unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
data.bunuri[].greutate_neta integer
data.bunuri[].greutate_bruta integer
data.bunuri[].valoare integer Valoarea publicată de sursă pentru combinaţia de mai sus.
data.partener.tara string Ţara la care se referă valoarea.
data.partener.cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data.partener.denumire string Denumirea, aşa cum o publică sursa.
data.transport.nr_vehicul string
data.transport.tara_organizator string
data.transport.cod_organizator string
data.transport.denumire_organizator string
data.transport.data string JSON-ul de business — aceeași formă pe care o acceptă build.
data.loc_start.locatie.judet string Judeţul la care se referă valoarea.
data.loc_start.locatie.localitate string
data.loc_start.locatie.strada string
data.loc_start.locatie.numar string Numărul de elemente numărate.
data.loc_start.locatie.cod_postal string
data.loc_final.locatie.judet string Judeţul la care se referă valoarea.
data.loc_final.locatie.localitate string
data.loc_final.locatie.strada string
data.loc_final.locatie.numar string Numărul de elemente numărate.
data.loc_final.locatie.cod_postal string
data.documente[].tip string
data.documente[].numar string Numărul de elemente numărate.
data.documente[].data string JSON-ul de business — aceeași formă pe care o acceptă build.
meta.generat_la string Momentul la care s-a construit răspunsul (ISO 8601).

Exemple de răspuns

body: @etransport.xml

POSThttps://oneapi.ro/api/anaf/v1/etransport/parse
{
    "data": {
        "declarant": "990000005",
        "ref_declarant": "AVZ-2026-0142",
        "operatiune": "30",
        "bunuri": [
            {
                "scop": "101",
                "cod_tarifar": "84713000",
                "denumire": "Laptop 14 inch",
                "cantitate": 20,
                "unitate": "H87",
                "greutate_neta": 30,
                "greutate_bruta": 38,
                "valoare": 64000
            }
        ],
        "partener": {
            "tara": "RO",
            "cod": "990000072",
            "denumire": "Exemplu Client SRL"
        },
        "transport": {
            "nr_vehicul": "CJ10ABC",
            "tara_organizator": "RO",
            "cod_organizator": "990000005",
            "denumire_organizator": "Exemplu Furnizor SRL",
            "data": "2026-09-10"
        },
        "loc_start": {
            "locatie": {
                "judet": "12",
                "localitate": "Cluj-Napoca",
                "strada": "Str. Memorandumului",
                "numar": "28",
                "cod_postal": "400114"
            }
        },
        "loc_final": {
            "locatie": {
                "judet": "40",
                "localitate": "Sector 1",
                "strada": "Calea Victoriei",
                "numar": "1",
                "cod_postal": "010071"
            }
        },
        "documente": [
            {
                "tip": "30",
                "numar": "AVZ-2026-0142",
                "data": "2026-09-10"
            }
        ]
    },
    "meta": {
        "generat_la": "2026-10-06T23: 59: 43+03: 00"
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422xml_invalidXML care nu se poate parsa sau nu e o declarație e-Transport recognoscibilă.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Erorile modulului Anaf au acelaşi plic ca restul platformei, cu două câmpuri în plus: {eroare: {cod, mesaj, camp, request_id}}. eroare.cod e stabil şi e cel după care ramifici în cod; la validare (422) codul e specific cazului: xml_invalid, xml_nu_e_factura, unitate_necunoscuta, luna_invalida ş.a. camp arată câmpul vinovat, când se poate identifica.

{
    "eroare": {
        "cod": "xml_invalid",
        "mesaj": "XML care nu se poate parsa sau nu e o declarație e-Transport recognoscibilă.",
        "camp": null,
        "request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
    }
}