Identificatori v1 / Identificatori
Ce fel de identificator e?
Îi dai o valoare şi nu spui ce e: ruta întoarce tipurile care se potrivesc, ordonate după plauzibilitate, şi spune dacă e sigură. Util pentru un singur câmp de căutare.
POST
https://oneapi.ro/api/identificatori/v1/detecteaza
Corpul cererii
Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.
NumeTipDescriereValori acceptate
valoareobligatoriu
string
Şirul de analizat: minimum 2, maximum 64 de caractere.
max 64 car.
include_date_personaleopțional
boolean | null
Cu
true include şi CNP-ul printre candidaţi. Implicit e sărit, ca un cod de produs cu 13 cifre să nu fie analizat ca dată personală; când e cerut, răspunsul nu se pune deloc în cache.
Un IBAN
Corpul cererii
{
"valoare": "RO49AAAA1B31007593840000"
}
Un LEI
Corpul cererii
{
"valoare": "787200UMW0547WFAJE55"
}
Un cod de TVA
Corpul cererii
{
"valoare": "RO17621339"
}
Un BIC
Corpul cererii
{
"valoare": "BTRLRO22"
}
Parametri de interogare
Ruta nu acceptă parametri de interogare.
Cum se comportă
- Corpul cererii are două câmpuri:
valoare(obligatoriu, 2–64 de caractere) șiinclude_date_personale(opțional). Câmpurile din corp nu apar în tabelul de parametri, care documentează doar query string-ul — de aceea sunt descrise aici. - Detecția e o EURISTICĂ, nu o certitudine: formele se suprapun. Un CNP are 13 cifre, exact ca un EAN-13. De aceea răspunsul întoarce TOȚI candidații, cu validarea rulată pentru fiecare, iar
sigurspune dacă exact unul trece validarea. - CNP-ul e sărit implicit. Un cod de produs cu 13 cifre ar fi altfel analizat ca dată personală — adică exact invers decât vrem. Cine chiar are nevoie cere
include_date_personale: true, iar atunci răspunsul nu se pune deloc în cache. - Un tip care TRECE validarea e mult mai probabil decât unul care doar seamănă ca formă, deci candidații valizi vin primii.
La ce folosește
- Cureți un import în care o coloană conține amestecat CUI-uri, IBAN-uri și coduri de produs.
- Accepți într-un singur câmp de căutare orice identificator îți dă utilizatorul.
- Verifici dacă un șir e vreun identificator cunoscut, înainte de a-l trata ca text liber.
Structura răspunsului
Toate câmpurile de mai jos sunt în data.
CâmpTipDescriere
valoare
string
Valoarea publicată de sursă pentru combinaţia de mai sus.
potriviri
integer
Câți candidați au forma potrivită.
tip_probabil
string
Cel mai probabil tip, sau
null dacă niciunul nu se potrivește.
sigur
boolean
true doar când exact un singur tip trece validarea.
candidati[]
array
Toți candidații, fiecare cu rezultatul complet al validării.
candidati[].tip
string
candidati[].eticheta
string
Eticheta afişabilă a valorii — versiunea citibilă a codului de alături.
candidati[].valid
boolean
Dacă acel tip trece validarea, nu doar potrivirea de formă.
candidati[].rezultat.tip
string
candidati[].rezultat.valoare
string
Valoarea publicată de sursă pentru combinaţia de mai sus.
candidati[].rezultat.valid
boolean
candidati[].rezultat.normalizat
string
candidati[].rezultat.componente.tara
string
Ţara la care se referă valoarea.
candidati[].rezultat.componente.tara_nume
string
candidati[].rezultat.componente.cifre_control
string
candidati[].rezultat.componente.lungime
integer
candidati[].rezultat.componente.lungime_verificata
boolean
candidati[].rezultat.componente.format_afisare
string
candidati[].rezultat.componente.cod_banca
string
candidati[].rezultat.componente.cont
string
observatie
null
Ce înseamnă rezultatul: mai multe potriviri, niciuna, sau o formă care nu trece validarea.
Exemple de răspuns
corp: {"valoare": "RO49AAAA1B31007593840000"}
POSThttps://oneapi.ro/api/identificatori/v1/detecteaza
{
"data": {
"valoare": "RO49AAAA1B31007593840000",
"potriviri": 1,
"tip_probabil": "iban",
"sigur": true,
"candidati": [
{
"tip": "iban",
"eticheta": "IBAN — cont bancar",
"valid": true,
"rezultat": {
"tip": "iban",
"valoare": "RO49AAAA1B31007593840000",
"valid": true,
"normalizat": "RO49AAAA1B31007593840000",
"componente": {
"tara": "RO",
"tara_nume": "România",
"cifre_control": "49",
"lungime": 24,
"lungime_verificata": true,
"format_afisare": "RO49 AAAA 1B31 0075 9384 0000",
"cod_banca": "AAAA",
"cont": "1B31007593840000"
}
}
}
],
"observatie": null
}
}
corp: {"valoare": "787200UMW0547WFAJE55"}
POSThttps://oneapi.ro/api/identificatori/v1/detecteaza
{
"data": {
"valoare": "787200UMW0547WFAJE55",
"potriviri": 2,
"tip_probabil": "lei",
"sigur": true,
"candidati": [
{
"tip": "lei",
"eticheta": "LEI — identificator de entitate juridică",
"valid": true,
"rezultat": {
"tip": "lei",
"valoare": "787200UMW0547WFAJE55",
"valid": true,
"normalizat": "787200UMW0547WFAJE55",
"componente": {
"unitate_emitenta": "7872",
"entitate": "UMW0547WFAJE",
"cifre_control": "55"
},
"observatie": "Pentru datele entității — denumire, sediu, structura de grup — vezi /business/v1/firme/dupa-lei/{lei}, care are registrul GLEIF importat pentru România."
}
}
],
"observatie": null
}
}
corp: {"valoare": "RO17621339"}
POSThttps://oneapi.ro/api/identificatori/v1/detecteaza
{
"data": {
"valoare": "RO17621339",
"potriviri": 3,
"tip_probabil": "eori",
"sigur": false,
"candidati": [
{
"tip": "eori",
"eticheta": "EORI — operator economic în vamă",
"valid": true,
"rezultat": {
"tip": "eori",
"valoare": "RO17621339",
"valid": true,
"normalizat": "RO17621339",
"componente": {
"tara": "RO",
"tara_nume": "România",
"identificator_national": "17621339",
"cui": 17621339
},
"observatie": "Pentru România, EORI e `RO` + CUI, deci cifra de control a CUI-ului chiar s-a verificat. Existența înregistrării EORI se confirmă doar la Comisia Europeană."
}
}
],
"observatie": "Mai multe tipuri trec validarea — formele lor se suprapun. Alege după context, sau cere explicit tipul."
}
}
corp: {"valoare": "BTRLRO22"}
POSThttps://oneapi.ro/api/identificatori/v1/detecteaza
{
"data": {
"valoare": "BTRLRO22",
"potriviri": 3,
"tip_probabil": "bic",
"sigur": false,
"candidati": [
{
"tip": "bic",
"eticheta": "BIC / SWIFT — cod bancar",
"valid": true,
"rezultat": {
"tip": "bic",
"valoare": "BTRLRO22",
"valid": true,
"normalizat": "BTRLRO22",
"componente": {
"institutie": "BTRL",
"tara": "RO",
"tara_nume": "România",
"locatie": "22",
"cod_de_test": false,
"sediu_central": true
},
"observatie": "Verificare de FORMĂ. Registrul BIC e produs comercial SWIFT, deci nu putem confirma că instituția există sau cine e — doar că șirul respectă ISO 9362."
}
}
],
"observatie": "Mai multe tipuri trec validarea — formele lor se suprapun. Alege după context, sau cere explicit tipul."
}
}
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. |
| 422 | validare | valoare lipsește sau nu are între 2 și 64 de caractere. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "valoare lipsește sau nu are între 2 și 64 de caractere."
}
}