Dokumentace API – Našeptávaní adres
Toto je popis starší verze služby pro našeptávání adres. Doporučujeme používat aktuální verzi.
Webová služba pro našeptávání adres je k dispozici na adrese
- https://secure.smartform.cz/smartform-ws/oracle/v6
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 OracleRequest
{
// Identifikace dotazu
int id;
// Obsah formulářových políček
// Očekává se jedna z těchto kombinací:
// * STREET, NUMBER, CITY, ZIP, COUNTRY
// * STREET_AND_NUMBER, CITY, ZIP, COUNTRY
// * WHOLE_ADDRESS, COUNTRY
// * MUNICIPALITY_AND_DISTRICT, COUNTRY
Map<InputOracleFieldType, string> values;
// Které políčko se právě edituje
InputOracleFieldType fieldType;
// Kolik maximálně našeptaváných možností se má vrátit
int limit;
// Seznam preferenčních nebo filtračních oblastí.
// Umožňuje nastavit seznam obcí, okresů nebo krajů, na které se má našeptávání omezit,
// popřípadě mají být při našeptávání upřednostněny.
//
// Při nastavování našeptávací oblasti se mohou hodit kódy českých krajů a okresů.
// Kódy obcí získáte v demu web-service s validací názvu obcí.
SuggestContext suggestContext;
// Konfigurace – umožňuje měnit standardní chování web-service, můžete ponechat prázdné
Map<OracleConfigurationField, string> configuration;
// Heslo - pokud jej nemáte, získáte ho v administraci na https://admin.smartform.cz
string password;
}
Odpověď
class OracleResponse
{
// 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;
// Seznam návrhů našeptávače
List<AddressSuggestion> suggestions;
}
Další objekty
// Typy políček ve formuláři
enum InputOracleFieldType
{
// číslo domu
NUMBER,
// ulice a číslo domu
STREET_AND_NUMBER,
// ulice
STREET,
// obec (může obsahovat i část obce, poštu)
CITY,
// obec a okres
MUNICIPALITY_AND_DISTRICT,
// PSČ
ZIP,
// celá adresa
WHOLE_ADDRESS,
// Stát – může nabývat hodnot "CZ" a "SK"
COUNTRY
}
// Našeptávací kontext. Umožňuje zúžení oblasti našeptávání.
//
// Kontexty jsou dvojího druhu:
// - filtrační – pak lze zadat jen adresy ze zadané oblasti
// - preferenční – daná oblast bude mít při našeptávání přednost
class SuggestContext {
// typ kontextu
SuggestContextType type;
// vymezení oblasti našeptávání: seznam kódů obcí, okresů a krajů
List<SuggestContextItem> items;
}
// Typ našeptávacího kontextu.
enum SuggestContextType {
// Filtrační našeptávací kontext: našeptávají se jen adresy z oblasti zadané našeptávacím kontextem.
FILTER,
// Preferenční našeptávací kontext: adresy z oblasti našeptávacího kontextu jsou při našeptávání upřednostněny.
PREFERENCE
}
// Položka našeptávacího kontextu.
class SuggestContextItem {
// typ položky našeptávacího kontextu
SuggestContextAreaCodeType codeType;
// kód obce, kraje nebo okresu
//
// Při nastavování našeptávací oblasti se mohou hodit kódy českých krajů a okresů.
// Kódy obcí získáte v demu web-service s validací názvu obcí.
int code;
}
// Typ položky našeptávacího kontextu
enum SuggestContextAreaCodeType {
// Kód obce
MUNICIPALITY_CODE,
// Kód okresu
DISTRICT_CODE,
// Kód kraje
REGION_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 OracleConfigurationField
{
// Když do konfigurace requestu přidáte položku "SK_BRATISLAVA_KOSICE_UNDIVIDED":"true",
// budou při našeptávání 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,
// Když do konfigurace requestu přidáte položku "CZ_PRAHA_DIVIDED_INTO_10_PARTS":"true",
// budou do našeptávání obcí pomocí vstupního políčka MUNICIPALITY_AND_DISTRICT
// zahrnuty i pražské obvody (Praha 1 – Praha 10). Naopak se nenašeptává samotná Praha.
CZ_PRAHA_DIVIDED_INTO_10_PARTS
}
// Jedna položka nabídky pro našeptávač.
class AddressSuggestion
{
// Pro které políčko je návrh určen
OutputOracleFieldType fieldType;
// Hodnoty určené formulářovým políčkům.
Map<OutputOracleFieldType, string> values;
// Doplňující příznaky k našeptávané položce
// Seznam příznaků a jejich defaultních hodnot najdete v AddressSuggestionFlag
// Příznak může chybět, pokud nemá v daném kontextu smysl nebo pokud nabývá defaultní hodnoty
Map<AddressSuggestionFlag, string> flags;
}
// Typy políček v AddressSuggestion // Obsahuje všechna políčka z InputOracleFieldType plus některá navíc enum OutputOracleFieldType { // číslo domu NUMBER, // ulice a číslo domu STREET_AND_NUMBER, // ulice STREET, // obec (může obsahovat i část obce, poštu) CITY, // obec a okres MUNICIPALITY_AND_DISTRICT, // obec MUNICIPALITY, // okres DISTRICT, // kraj REGION, // PSČ ZIP, // celá adresa WHOLE_ADDRESS, }
// Seznam možných příznaků v AddressSuggestion
enum AddressSuggestionFlag
{
// zdali návrh obsahuje celou adresu
// hodnoty: "false" (defaultní), "true"
WHOLE_ADDRESS,
// při našeptávání obcí značí, že u dané obce není třeba uvádět okres
// hodnoty: "false" (defaultní), "true"
UNIQUE_MUNICIPALITY,
}
/** 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 |