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