oneapi
Autentificare
Utile v1 / Adrese

Verifică o adresă

Verifică o adresă structurată după regulile ţării ei: ce câmpuri sunt obligatorii acolo, ce formă are codul poştal, dacă subdiviziunea există. Nu verifică dacă adresa chiar există pe teren.

POST
https://oneapi.ro/api/utile/v1/adrese/valideaza

Corpul cererii

Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.

NumeTipDescriereValori acceptate
taraobligatoriu string OBLIGATORIU. Codul ISO alpha-2. max 2 car.
numeopțional string | null Numele destinatarului. max 160 car.
organizatieopțional string | null Organizația. max 160 car.
stradaopțional string | null Strada și numărul. max 300 car.
subzonaopțional string | null Sub-localitatea (cartier, sector). max 120 car.
localitateopțional string | null Localitatea. max 120 car.
regiuneopțional string | null Județul, statul sau provincia. max 120 car.
cod_postalopțional string | null Codul poștal. max 32 car.
cod_sortareopțional string | null Codul de sortare (CEDEX în Franța). max 32 car.
Adresă corectă din România Corpul cererii
{
    "tara": "RO",
    "nume": "Ion Popescu",
    "strada": "Str. Memorandumului 28",
    "localitate": "Cluj-Napoca",
    "cod_postal": "400114"
}
Cod poştal greşit Corpul cererii
{
    "tara": "RO",
    "strada": "x",
    "localitate": "Cluj-Napoca",
    "cod_postal": "4001"
}
O adresă din Germania Corpul cererii
{
    "tara": "DE",
    "strada": "Unter den Linden 1",
    "localitate": "Berlin",
    "cod_postal": "10117"
}

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • POST, cu adresa în corp (JSON): tara (obligatoriu, ISO alpha-2), nume, organizatie, strada, subzona (cartier, sector), localitate, regiune (județ, stat, provincie), cod_postal, cod_sortare (CEDEX în Franța). Numele destinatarului și adresa sunt date personale: într-un URL ar ajunge în logurile de acces, în cache și în refererul oricărei pagini care cheamă ruta — de aceea un GET primește 405 metoda_nepotrivita. Nimic nu se reține.
  • Verificarea e de FORMĂ, nu de existență. Confirmă că sunt completate câmpurile cerute de țară, că tiparul codului poștal se potrivește și că regiunea e una recunoscută. NU confirmă că adresa există la fața locului — pentru asta ar trebui registrul poștal al fiecărei țări.
  • Tiparul codului poștal e ancorat înainte de comparație. Sursa îl dă fără ancore, iar folosit așa, 12 ar trece pentru România, fiindcă s-ar potrivi în interiorul unui șir mai lung.
  • Regiunea se compară fără diacritice: „Timis" găsește „Timiș". Verifică doar că e o subdiviziune REALĂ a țării, nu că se potrivește cu localitatea — pentru asta ar trebui maparea localitate→județ, pe care sursa n-o are.
  • Pentru România, dacă ai nevoie de verificare pe date reale — că strada există în localitatea aia, cu codul poștal acela — folosește /locations/v1/validare/adresa, care se sprijină pe nomenclatorul oficial.
  • adresa_formatata se întoarce chiar și când adresa e invalidă, ca să vezi cum ar arăta. Câmpurile lipsă lasă linii goale, care se elimină, iar separatorii orfani (virgule rămase singure) se curăță.

La ce folosește

  • Verifici la checkout dacă adresa introdusă e completă pentru țara aleasă, înainte de a accepta comanda.
  • Cureți un import de adrese, marcând rândurile cu cod poștal care nu se potrivește cu tiparul țării.
  • Compui adresa formatată pentru etichetă, în ordinea corectă a țării.

Structura răspunsului

Toate câmpurile de mai jos sunt în data.

CâmpTipDescriere
tara string Ţara la care se referă valoarea.
valida boolean true doar dacă nu s-a găsit nicio problemă de formă.
probleme array Lista problemelor, fiecare cu câmpul vinovat.
adresa_formatata array Adresa așezată pe linii, în ordinea țării, cu majusculele cerute de poștă.
observatie string Precizare despre cum se citeşte răspunsul: o convenţie de calcul sau o limită a datelor.
sursa.nume string Denumirea sursei oficiale.
sursa.licenta string Licenţa sub care sursa permite reutilizarea.
probleme[].camp string Cheia câmpului cu problema.
probleme[].problema string Ce anume nu e în regulă.
probleme[].tipar string La codul poștal: expresia cu care s-a comparat.
probleme[].exemple array La codul poștal: coduri reale, ca să se vadă forma așteptată.
probleme[].sugestii La regiune: câteva subdiviziuni valide ale țării.

Exemple de răspuns

corp: {"tara": "RO", "nume": "Ion Popescu", "strada": "Str. Memorandumului 28", "localitate": "Cluj-Napoca", "cod_postal": "400114"}

POSThttps://oneapi.ro/api/utile/v1/adrese/valideaza
{
    "data": {
        "tara": "RO",
        "valida": true,
        "probleme": [],
        "adresa_formatata": [
            "Ion Popescu",
            "STR. MEMORANDUMULUI 28",
            "400114 CLUJ-NAPOCA"
        ],
        "observatie": "Verificarea e de FORMĂ: câmpuri cerute, tiparul codului poștal, subdiviziune recunoscută. NU confirmă că adresa există la fața locului.",
        "sursa": {
            "nume": "Google libaddressinput — metadatele de adresare folosite de Chrome",
            "licenta": "Apache-2.0."
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitNu avem reguli de adresare pentru țara dată.
405eroaremetoda_nepotrivita: ruta primește doar POST, cu adresa în corp.
422validareLipsește tara ori un câmp depășește lungimea maximă.
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": "Lipsește tara ori un câmp depășește lungimea maximă."
    }
}