oneapi
Autentificare
Locations v1 / GeoIP

GeoIP — un IP anume

Ca varianta fără parametru, dar pentru un IP dat în cale (/geoip/{ip}). Util pentru
a verifica orice adresă IP, nu doar a apelantului.

GET
https://oneapi.ro/api/locations/v1/geoip/{ip}

Parametri de cale

NumeTipDescriereExemplu
ipobligatoriu string Adresa IP căutată, IPv4 sau IPv6.

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • Ca /geoip, dar pentru un IP dat în cale — verifică orice adresă IP, nu doar a apelantului.
  • IP în RO → regiune/județ/UAT/localitate din datele noastre; în afara RO / privat → in_romania: false; IP invalid → 422.

La ce folosește

  • Îmbogățirea log-urilor sau lead-urilor cu județul aproximativ al unui IP colectat.
  • Verificarea geografică a unui IP dintr-un webhook/comandă înainte de rutare regională.
  • Filtrare server-side pe un IP dat în cale, nu doar al apelantului.

Structura răspunsului

CâmpTipDescriere
data.ip string IP-ul cerut.
data.in_romania boolean Dacă IP-ul cade în interiorul granițelor RO. false → niciun alt câmp.
data.regiune[] mixed Regiunea în care cade IP-ul; apare doar când precizia a permis rezolvarea administrativă.opțional
data.judet[] mixed Județul în care cade IP-ul; apare doar când precizia a permis rezolvarea.opțional
data.uat[] mixed UAT-ul în care cade IP-ul; apare doar când precizia a permis rezolvarea.opțional
data.localitate[] object[] Localitatea în care cade IP-ul; poate fi null chiar și când județul e cunoscut.opțional
data.localitate.distanta_m integer Distanța de la punctul IP la localitatea returnată (metri).
meta.distanta object Cum sunt măsurate distanţele din răspuns. Apare pe orice răspuns care conţine o distanţă.
meta.distanta.metoda string Mereu linie_dreapta: distanţa geodezică pe suprafaţa Pământului, nu pe drum.
meta.distanta.detaliu string Aceeaşi informaţie, în cuvinte.

Exemple de răspuns

Rezolvat în Cluj-Napoca + județ/UAT/localitate.

GEThttps://oneapi.ro/api/locations/v1/geoip/188.27.0.1
{
    "data": {
        "ip": "188.27.0.1",
        "in_romania": true,
        "regiune": {
            "cod": "RO11",
            "nume": "Nord-Vest"
        },
        "judet": {
            "cod": "CJ",
            "nume": "Cluj"
        },
        "uat": {
            "cod_siruta": 54975,
            "nume": "Cluj-Napoca",
            "tip": "municipiu"
        },
        "localitate": {
            "cod_siruta": 54984,
            "nume": "Cluj-Napoca",
            "tip": "resedinta_municipiu",
            "distanta_m": 3120
        }
    },
    "meta": {
        "sursa": "MaxMind GeoLite2",
        "precizie": "aproximativa",
        "atribuire": "This product includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com.",
        "distanta": {
            "metoda": "linie_dreapta",
            "detaliu": "Distanţele sunt geodezice, în linie dreaptă pe suprafaţa Pământului (WGS84) — nu pe drum."
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitNu există nimic pentru ip din cale.
422ip_invalidAdresa IP din cale nu e validă.
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": "ip_invalid",
        "mesaj": "Adresa IP din cale nu e validă.",
        "detalii": {
            "ip": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}