oneapi
Autentificare
Anaf v1 / Declarații D

Validează declarația

Verdictul XSD-ului oficial pe o declaraţie deja construită — a ta sau una primită. Erorile vin cu elementul şi atributul la care s-au oprit.

POST
https://oneapi.ro/api/anaf/v1/declaratii/{form}/validate

Parametri de cale

NumeTipDescriereExemplu
formobligatoriu string Codul formularului (D100, D112, D300, D394…). Lista completă e la /anaf/v1/declaratii/forms.

Corpul cererii

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

D394

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

D300

etva-propriu.xml application/xml · 0,5 KB — se trimite ca atare, în corpul cererii.

D390

d390.xml application/xml · 0,5 KB — se trimite ca atare, în corpul cererii.

D311

d311.xml application/xml · 0,4 KB — se trimite ca atare, în corpul cererii.

Parametri de interogare

NumeTipDescriereValori acceptate
anafopțional boolean La 1 verifică starea fiscală (plătitor TVA / inactiv) a partenerilor RO din D394/D300, din datele ANAF locale; apare în data.anaf. Nu blochează validarea. ex. 1

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 „D" și îl validează contra XSD-ului oficial al formularului din cale. Un XML invalid întoarce 200 cu valid:false și erorile.
  • Zero retenție: XML-ul primit nu se scrie și nu se loghează.

La ce folosește

  • Verificarea unei declarații generate în altă parte, înainte de depunere.

Structura răspunsului

CâmpTipDescriere
data.valid boolean Verdictul XSD.
data.formular string Codul formularului.
data.schema string Fișierul XSD folosit la validare.
data.namespace string Namespace-ul XML al formularului.
data.xsd_checked boolean Dacă validarea XSD a rulat.
data.errors array Erorile de validare {cod,mesaj,camp}.
data.warnings array Avertismente neblocante.
meta.generat_la string Momentul la care s-a construit răspunsul (ISO 8601).
data.anaf Doar la ?anaf=1 pe D394/D300: starea fiscală locală a CUI-urilor RO — listă {cui, gasit, platitor_tva, inactiv, denumire}.

Exemple de răspuns

body: @d394.xml

POSThttps://oneapi.ro/api/anaf/v1/declaratii/D394/validate
{
    "data": {
        "valid": true,
        "formular": "D394",
        "schema": "d394_v5.xsd",
        "namespace": "mfp:anaf:dgti:d394:declaratie:v5",
        "xsd_checked": true,
        "errors": [],
        "warnings": []
    },
    "meta": {
        "generat_la": "2026-10-06T23: 59: 41+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.
404negasitFormular nesuportat.
422xml_invalidUn câmp nu a trecut validarea (anaf); detalii spune care şi de ce.
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": "Un câmp nu a trecut validarea (anaf); detalii spune care şi de ce.",
        "camp": "form",
        "request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
    }
}