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
D300
D390
D311
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-datacu câmpulfisier(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ăfisierdă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
200cuvalid: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"
}
}
body: @etva-propriu.xml
POSThttps://oneapi.ro/api/anaf/v1/declaratii/D300/validate
{
"data": {
"valid": true,
"formular": "D300",
"schema": "d300_v12.xsd",
"namespace": "mfp:anaf:dgti:d300:declaratie:v12",
"xsd_checked": true,
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
body: @d390.xml
POSThttps://oneapi.ro/api/anaf/v1/declaratii/D390/validate
{
"data": {
"valid": true,
"formular": "D390",
"schema": "d390_v3.xsd",
"namespace": "mfp:anaf:dgti:d390:declaratie:v3",
"xsd_checked": true,
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
body: @d311.xml
POSThttps://oneapi.ro/api/anaf/v1/declaratii/D311/validate
{
"data": {
"valid": true,
"formular": "D311",
"schema": "d311_v1.xsd",
"namespace": "mfp:anaf:dgti:d311:declaratie:v1",
"xsd_checked": true,
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Formular nesuportat. |
| 422 | xml_invalid | Un câmp nu a trecut validarea (anaf); detalii spune care şi de ce. |
| 429 | cota_depasita | Cota 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"
}
}