# Formáty polí

Model, který hádá název pole, obdrží buď `400`, nebo, což je horší, sebevědomou odpověď o jiné mapě. Níže je přesná smlouva.

## Tělo požadavku na mapu

| Pole | Typ a formát | Povinné |
|---|---|---|
| `date` | `YYYY-MM-DD`, a musí to být skutečný kalendářní den | ano |
| `time` | `HH:mm:ss` | ano, nebo `timeUnknown: true` |
| `timezoneOffset` | číslo, hodiny od UTC, např. `5.75` | ne, výchozí `0` (UTC) |
| `timezone` | název zóny IANA, např. `Europe/Kyiv`, nebo `auto` | ne, a pokud je odesláno, nahrazuje `timezoneOffset` |
| `latitude` | desetinné stupně, sever je kladný | ano |
| `longitude` | desetinné stupně, východ je kladný | ano |
| `houseSystem` | jedno písmeno, výchozí `P` | ne |
| `city` | řetězec, pouze pro popis | ne |
| `zodiacType` | `tropical` nebo `sidereal` | ne |

<Aside type="caution">
`city` nic geokóduje. Toto pole je pro popis ve tvém rozhraní a **nikdy** nenahrazuje souřadnice.
</Aside>

## Krátké zápisy jsou odmítnuty

`lat`, `lon`, `lng`, `long`, `tz`, `tzOffset`, `utcOffset`, `gmtOffset`, `timeZone`, `time_zone` vrací `400 INVALID_FIELD` s názvem správného pole:

```json
{ "error": { "code": "INVALID_FIELD",
  "message": "Unsupported field \"tz\". Rename it to \"timezoneOffset\" (numeric hours from UTC, e.g. 5.75; a zone name goes in timezone)." } }
```

Velikost písmen a oddělovače nemají význam: `TZ_Offset` a `tzoffset` jsou odmítnuty stejně. Oznámena jsou **všechna** nalezená pole najednou, nikoli jen první, abys je mohl opravit najednou.

Důvod je přísný: před touto kontrolou pole, které API nečetlo, tiše dávalo posun `0`, a odpověď byla sebevědomá mapa pro UTC. Tři hodiny posunu jsou přibližně 45° ascendentu, což znamená jiné stoupající znamení a žádné varování.

## `timezone`: název zóny místo posunu

Posun musí být ten, který hodiny ukazovaly **přesně v dané datum**, a ručně je snadné ho zadat chybně: Kyjev v květnu 1990 žil podle moskevského letního času, UTC+4, nikoli +3. Odešli `timezone`, a server vezme posun z databáze časových pásem, včetně letního času.

```json
{ "date": "1990-05-15", "time": "14:30:00", "timezone": "Europe/Kyiv",
  "latitude": 50.45, "longitude": 30.52 }
```

- `auto` určuje zónu podle `latitude` a `longitude`. Blízko hranice je název přesnější.
- Pokud `timezone` a `timezoneOffset` přišly společně, platí `timezone`. `input.timezoneOffset` v odpovědi ukazuje posun, který byl použit.
- Čas, který nastal dvakrát (když se hodiny posouvaly zpět), se bere poprvé. Čas, který nenastal (když se hodiny posouvaly vpřed), obdrží posun, který platil před posunem.
- Bez `time` (pouze datum nebo `timeUnknown: true`) se zóna čte pro místní poledne.
- Odmítnuty jsou s `400 INVALID_FIELD`: prázdná hodnota, zkratky jako `EST` nebo `PST`, posun zapsaný textem, jako `+03:00`, názvy, které nejsou v databázi, a `auto` bez souřadnic. `UTC` a `GMT` jsou přijaty.
- Každý objekt je analyzován samostatně, takže `chart1` a `chart2` mohou být v různých zónách.

<Aside type="note">
Do roku 1970 není databáze časových pásem spolehlivá pro každé místo: Amsterdam v červnu 1930 se vrací jako +1, ačkoli hodiny ukazovaly +0:20. Pokud je místní čas narození známý, odešli `timezoneOffset`.
</Aside>

## `houseSystem`: písmeno, ne název

Přijímáno je přesně těchto 25 kódů Swiss Ephemeris:

`P` `K` `R` `C` `E` `W` `B` `M` `O` `A` `T` `V` `D` `F` `G` `H` `I` `i` `L` `N` `Q` `S` `U` `X` `Y`

Velikost písmen je významná: `I` je Sunshine podle Makranského, `i` podle Trindla. Název systému (`"Placidus"`, `"Koch"`) vrací `400`. Dříve to fungovalo náhodně, protože engine čte z řetězce pouze první písmeno, a ze stejného důvodu `"Zodiac"` tiše dával Placidus.

## Neznámý čas narození

Místo vymyšleného poledne předávej `timeUnknown: true` a nepředávej `time`. Pak `houses`, `houseAspects`, `chartSect` a `siderealTime` přijdou jako `null`, nikoli vymyšlené. Podrobnosti: [Konvence API](/api-conventions/#невідомий-час-народження).

## Neznámé klíče nejsou odmítnuty

Tělo přijímá nadbytečná pole mlčky: neznámý klíč je jednoduše ignorován. Proto se chyba v názvu pole, která není v seznamu odmítnutí výše, neprojeví. Zkontroluj si specifikaci: [`/v1/openapi.json`](https://api.astroway.info/v1/openapi.json).

## Dále

- [Typické chyby](/agent-setup/mistakes/)
- [Úskalí](/agent-setup/gotchas/)
