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 |