Dokumentace API – Validace adres (verze 1)
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/v1/announce
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
class AnnounceRequest { // Identifikace dotazu int id; // Obsah formulářových políček Map<OracleFieldType, string> values; // Heslo - identifikace uživatele string password; }
Odpověď
class AnnounceResponse { // Výsledek dotazu ResultCode resultCode; // Detailní popis chyby (pokud je resultCode == FAIL) string errorMessage; // Identifikace dotazu - pro kontrolu (mělo by být shodné s číslem v dotazu) int id; // Samotný výsledek validace AnnounceValidationResult result; }
Další objekty
// Typy políček ve formuláři enum OracleFieldType { // číslo domu NUMBER, // ulice a číslo domu STREET_AND_NUMBER, // ulice STREET, // obec CITY, // PSČ ZIP }
class AnnounceValidationResult { // Kód výsledku validace ValidationType type; // Seznam vyhovujících adres - jedna pokud je type == HIT, // více adres pokud type == MANY nebo TOOMANY List<AnnounceAddress> addresses; // Doplňující informace k validaci (nápověda k optimálnímu zadání adresy) string hint; }
enum ValidationType { // Byla nalezena právě jedna adresa. HIT, /** Bylo nalezeno více adres, všechny tyto adresy jsou obsaženy ve výsledku validace. */ MANY, /** Bylo nalezeno více adres, ve výsledku validace jsou jen některé. */ TOOMANY, /** Nebyla nalezena žádná adresa. */ NOTHING, /** Bylo zadáno příliš málo vstupních parametrů. */ INSUFFICIENT_DATA, }
// Jedna zvalidovaná adresa class AnnounceAddress { // Ulice AddressEntity street; // Část obce AddressEntity part; // Obec AddressEntity city; // Pošta + PSČ AddressEntity post; // Mestská část AddressEntity mcast; // Pražský obvod (Praha 1-10) AddressEntity pobvod; // Správní obvod Prahy (Praha 1-22) AddressEntity sobvod; // Okres string district; // Kraj string region; // Příznak, jestli je PSČ v adrese speciální boolean isPscSpecial; // Číslo objektu (popisné/evidenční, orientační) AnnounceNumber number; // Kód adresy v databázi RUIAN (drive UIR-ADR) int uiradrCode; // X-souřadnice adresy v systému S-JTSK v metrech. int coordX; // Y-souřadnice adresy v systému S-JTSK v metrech. int coordY; }
// Reprezentace části zvalidované adresy. class AddressEntity { // Typ entity AddressEntityType type; // Název entity string name; // Referenční ID entity v RUIAN (pro poštu je to PSČ) int id; }
enum AddressEntityType { // ulice STREET, // část obce PART, // obec CITY, // pošta POST, // PSČ ZIP, // městská část MCAST, // správní obvod SOBVOD, // pražský obvod POBVOD }
// Číslo ve zvalidované adrese class AnnounceNumber { // Číslo domu (popisné/evidenční) int cisloDomu; // Typ čísla domu (popisné/evidenční) NumberType type; // Orientační číslo int cisloOrient; // Orientační písmeno char pismenoOrient; // Pokud je true, musí se pro jednoznačnost této adresy označit čísla svým typem. // (např. když existuje Vodičkova čp.35 a Vodičkova or.č.35) boolean showNumberType; // Pokud je true, musí se pro jednoznačnost této adresy uvést část obce, do které náleží. // (např. když existují dvě adresy Vodičkova 35, každá v jiné části obce) boolean showPart; }
// Typ čísla ve zvalidované adrese enum NumberType { // popisné POPIS, // evidenční EVIDENT }
/** 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 |