Dokumentace API – Validace adres
Toto je popis starší verze služby pro validaci adres. Doporučujeme používat aktuální verzi.
Webová služba pro validaci adres je k dispozici na adresách:
- https://secure.smartform.cz/smartform-ws/validateAddress/v3
Vlastnosti dotazu
Dotazy musí být posílány metodou POST. Data jsou posílána ve formátu JSON s kódováním UTF-8.
Hlavička http requestu musí obsahovat následující položky:
název | hodnota |
---|---|
Content-type | application/json |
Accept | application/json |
Struktura dotazu a odpovědi
Následuje referenční struktura dotazu a odpovědi. Objekty jsou zachyceny ve formě pseudokódu pro lepší pochopení struktury.
Dotaz
/** Dotaz validace adres */ class ValidateAddressRequest { /** Identifikace dotazu, slouží jen pro spárování dotazu a odpovědi, pro validaci není důležité. */ int id; /** Heslo - pokud jej nemáte, kontaktujte nás. */ string password; /** Vstupní hodnoty, podle kterých se adresa bude hledat */ Map<InputAddressFieldType, string> values; /** * Seznam kódů států, ve kterých se bude adresa hledat. * Kódy mohou nabývat hodnot "CZ" a "SK" */ List<string> countries; /** Konfigurace – zatím se nepoužívá */ Map<string, string> configuration; }
Odpověď
/** Odpověď validace adres */ class ValidateAddressResponse { /** Identifikace odpovědi, odpovídá id dotazu */ int id; /** Zdali vůbec došlo k validaci a zda validace proběhla v pořádku */ ResultCode resultCode; /** * Pokud došlo k nějaké chybě, popisuje k jaké. * Může obsahovat upozornění na nějaký nekritický problém, i když validace proběhne korektně. */ string errorMessage; /** Výsledek validace */ ValidateAddressResult result; }
Další objekty
/** Typ vstupních políček */ enum InputAddressFieldType { /** * Ulice (nebo část obce) a číslo. * Např. "Smetanova 11", "Rychlonožkova 1567/4a" nebo "Horní Lhota 17" */ FIRST_LINE, /** * Celý řádek s městem. * Např. "České Budějovice", "Praha", "Praha 4", "Praha - Podolí", "Praha 4 - Podolí", "Praha 4, Podolí" */ SECOND_LINE, /** Psč. */ ZIP, /** Jméno ulice. */ STREET, /** Celé číslo domu (popisné a/nebo orientační a/nebo orientační písmeno). */ NUMBER_WHOLE, /** Celá adresa. */ WHOLE_ADDRESS, /** Nějaké jedno číslo domu. */ NUMBER_1, /** Nějaké jedno číslo domu. */ NUMBER_2, /** Nějaké jedno číslo domu. */ NUMBER_3, /** Číslo popisné. */ NUMBER_POPIS, /** Číslo evidenční. */ NUMBER_EVIDENT, /** Číslo orientační. */ NUMBER_ORIENT, /** Písmeno u orientačního čísla. */ CHAR_ORIENT, /** Kód adresy (např RÚIAN kód). */ CODE }
/** Výsledek validace adres */ class ValidateAddressResult { /** Typ výsledku */ ResultType type; /** Seznam nalezených adres */ List<Address> addresses; /** Doplňující informace k validaci */ string hint; }
/** Typ výsledku validace */ enum ResultType { /** Byla nalezena právě jedna přesná adresa*/ HIT, /** Byla nalezena právě jedna částečná adresa */ PARTIAL_HIT, /** Nebyla nalezena žádna adresa */ NOTHING, /** Bylo nalezeno více adres (ať už přesných či částečných) */ MANY, /** Bylo nalezeno více adres (ať už přesných či částečných) – ve výsledku validace nejsou uvedeny všechny nalezené adresy */ TOO_MANY }
/** Adresa */ class Address { /** Typ adresy - přesná nebo částečná */ AddressType type; /** * Mapa výstupních políček zvalidované adresy. * Je-li adresou přesná adresa, bude mapa obsahovat všechna políčka * Je-li adresou částečná adresa, bude mapa obsahovat jen políčka, která se podařilo určit. * * V mapě ovšem mohou být i hodnoty null: * Když bude výsledkem částečná adresa - např. malá obec, ve které nejsou ulice, * bude v mapě i dvojice "STREET_NAME: null" */ Map<OutputAddressFieldType, string> values; /** Souřadnice — pokud nejsou známé, je hodnota null. */ Coordinates coordinates; }
/** Typ adresy */ enum AddressType { /** Přesná adresa – obsahuje číslo domu */ EXACT /** Částečná adres - např. část obce, ulice, obec */ PARTIAL }
/** Typy výstupních políček zvalidované adresy */ enum OutputAddressFieldType { /** Kód v registru RUIAN */ CODE, /** Jméno ulice. Může být null, když adresní místo nemá ulici (v menších obcích) */ STREET_NAME, /** Kód ulice v RUIAN. Může být null. */ STREET_CODE, /** Název obce */ CITY_NAME, /** Kód obce v RUIAN */ CITY_CODE, /** Název pošty */ POST_NAME, /** PSČ */ ZIP, /** Jméno části obce. */ CITY_PART_NAME, /** Kód části obce v RUIAN */ CITY_PART_CODE, /** Název městské části - např. "Praha 13" */ CITY_AREA_1_NAME, /** Kód městské části v RUIAN */ CITY_AREA_1_CODE, /** Pražský obvod - jen pro Prahu ("Praha 1" - "Praha 10) */ CITY_AREA_2_NAME, /** Kód pražského obvodu v RUIAN */ CITY_AREA_2_CODE, /** Správní obvod - v Praze je "Praha 1" - "Praha 22" */ CITY_AREA_3_NAME, /** Kód správního obvodu v RUIAN */ CITY_AREA_3_CODE, /** Okres - např. "Hlavní město Praha" nebo "Liberec" */ DISTRICT_NAME, /** Kód okresu */ DISTRICT_CODE, /** Kraj - např. "Hlavní město Praha" nebo "Liberecký kraj" */ REGION_NAME, /** Kód kraje */ REGION_CODE, /** Název státu */ COUNTRY_NAME, /** dvoupísmenný ISO kód státu */ COUNTRY_CODE, /** Číslo popisné */ NUMBER_POPISNE, /** Číslo evidenční */ NUMBER_EVIDENCNI, /** Číslo orientační */ NUMBER_ORIENT, /** Písmeno u orientačního číslo */ CHAR_ORIENT, /** Zformátované celé číslo - např. "154", "622/37" nebo i "č.p. 35" */ NUMBER_WHOLE, /** První řádka v adrese (ulice nebo část obce + celé číslo domu) */ FIRST_LINE, /** První řádka v adrese bez čísla (ulice nebo část obce) */ FIRST_LINE_NO_NUMBER, /** Druhá řádka v adrese - např. "Plzeň 1" nebo "Praha 4 - Nusle" */ SECOND_LINE, /** Celé jméno nalezené adresy */ WHOLE_NAME }
/** Souřadnice */ class Coordinates { /** typ souřadnic */ CoordinatesType type; /** souřadnice JTSK – osa X */ double jtskX; /** souřadnice JTSK – osa Y */ double jtskY; /** GPS – šířka */ double gpsLat; /** GPS – délka */ double gpsLng; }
/** Typ souřadnic */ enum CoordinatesType { /** souřadnice jsou přesné (ukazují na konkrétní adresu) */ EXACT, /** souřadnice ukazují na střed oblasti (např. střed obce) */ CENTER, /** výsledná souřadnice je dána výpočtem (např. průměr souřadnic adres z jedné ulice) */ APPROXIMATE }
/** Výsledek dotazu. */ enum ResultCode { /** Volání service proběhlo v pořádku. */ OK, /** Při volání service došlo k chybě. */ FAIL }
Tabulka typů v pseudokódu
typ v pseudokódu | typ v JSON |
---|---|
třída (class) | vnořený objekt |
výčet (enum) | řetězec se jménem vybrané položky |
List | pole |
Map | objekt – klíče a hodnoty se stanou položkami objektu |
string | řetězec |
int | číslo |
double | číslo |
boolean | boolean |
char (jeden znak) | řetězec |