oneapi
Autentificare
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) și include_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 sigur spune 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
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validarevaloare lipsește sau nu are între 2 și 64 de caractere.
429cota_depasitaCota 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."
    }
}