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 adrese:
- https://secure.smartform.cz/smartform-ws/validateAddress/v5
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, získáte ho v administraci na https://admin.smartform.cz */ 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 – umožňuje měnit standardní chování web-service, můžete ponechat prázdné */ Map<ValidateAddressConfigurationField, 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, /** * Obec a (nepovinně) okres. * Obec a okres mohou být spojeny libovolně (např. čárkou, závorkami, středníkem) */ MUNICIPALITY_AND_DISTRICT, /** 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 }
/** Seznam konfiguračních políček – tato políčka mění standardní chování našeptávácí web-service. Žádné z těchto políček není v konfiguraci povinné. */ enum ValidateAddressConfigurationField { // Když do konfigurace requestu přidáte položku "SK_BRATISLAVA_KOSICE_UNDIVIDED":"true", // budou při validaci obcí pomocí vstupního políčka MUNICIPALITY_AND_DISTRICT // slovenská města Bratislava a Košice považovány za jednu obec // (v registru slovenských adres totiž obce Bratislava a Košice nejsou, // jsou tam jen jejich části, např. „Košice – Džungla“). SK_BRATISLAVA_KOSICE_UNDIVIDED }
/** 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; /** Informace o nemovitosti — pokud nejsou známé, je hodnota null. */ Map<OutputRealEstateField, string> realEstateDetails; }
/** 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 */ MUNICIPALITY_NAME, /** Kód obce v RUIAN */ MUNICIPALITY_CODE, /** Název pošty */ POST_NAME, /** PSČ */ ZIP, /** Obec a (pokud je to potřeba tak i) okres */ MUNICIPALITY_AND_OPTIONAL_DISTRICT, /** Jméno části obce. */ MUNICIPALITY_PART_NAME, /** Kód části obce v RUIAN */ MUNICIPALITY_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 }
/** Typy výstupních políček obsahujících informace o nemovitosti */ enum OutputRealEstateField { /** Kmenové číslo parcely */ LAND_LOT_NUMBER_1; /** Poddělení (pořadové číslo nové parcely v rámci původní parcely). Pokud není, má hodnotu null */ LAND_LOT_NUMBER_2; /** Název katastrálního území */ CADASTRAL_DISTRICT_NAME; /** Číslo katastrálního území */ CADASTRAL_DISTRICT_CODE; /** Informace o výtahu. Může mít hodnoty: "true", "false", null */ BUILDING_WITH_LIFT; /** Počet podlaží */ NUMBER_OF_STOREYS; /** Počet bytů */ NUMBER_OF_FLATS; /** Podlahová plocha [m2] */ FLOOR_AREA; }
/** 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 |