194 lines
4.2 KiB
Markdown
194 lines
4.2 KiB
Markdown
---
|
|
title: "API Dokumentace - Verze 2"
|
|
date: 2026-01-28
|
|
tags: ["api", "docs", "v2"]
|
|
hiddenInHomelist: true
|
|
---
|
|
|
|
Tato stránka detailně popisuje **Verzi 2 (v2)** API Ječná Rozvrh.
|
|
|
|
## Endpoint: `GET /versioned/v3`
|
|
|
|
Toto je hlavní endpoint, který poskytuje veškerá data o rozvrhu pro v2.
|
|
|
|
### Struktura Odpovědi
|
|
|
|
Odpověď je JSON objekt, který obsahuje dva hlavní klíče: `schedule` a `status`.
|
|
|
|
<details>
|
|
<summary>Zobrazit příklad struktury odpovědi</summary>
|
|
|
|
```json
|
|
{
|
|
"schedule": { /* objekt denních rozvrhů */ },
|
|
"status": { /* objekt stavu */ }
|
|
}
|
|
```
|
|
</details>
|
|
|
|
---
|
|
|
|
### Datové Struktury
|
|
|
|
#### Sekce: `schedule`
|
|
|
|
Tato sekce je objekt, kde každý klíč představuje datum ve formátu `YYYY-MM-DD` a prvek představuje jeden den. Každý den je objekt, jehož klíče jsou `info`, `changes`, `absence`, `takesPlace` a `reservedRooms`
|
|
|
|
##### `changes`
|
|
- Objekt
|
|
- **Klíč:** Název třídy (např. `"A1"`)
|
|
- **Hodnota:** Pole s 10 prvky, které reprezentují 10 vyučovacích hodin.
|
|
- Objekt: Pokud je hodina normálně vyučována, obsahuje název předmětu nebo informaci o změně.
|
|
- `null`: Pokud pro ni není záznam.
|
|
|
|
Hodnota je následující objekt
|
|
|
|
```ts
|
|
{
|
|
text: string,
|
|
backgroundColor?: string,
|
|
foregroundColor?: string,
|
|
willBeSpecified?: boolean
|
|
}
|
|
```
|
|
|
|
<details>
|
|
<summary>Zobrazit příklad rozvrhu pro třídu A1</summary>
|
|
|
|
```json
|
|
"A1": [
|
|
{
|
|
"text": "M 5 Kp(Ng)"
|
|
},
|
|
null,
|
|
null,
|
|
{
|
|
"text": "M 5 odpadá",
|
|
"backgroundColor": "#DCEDD5",
|
|
"foregroundColor": "#FF000000"
|
|
},
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null
|
|
]
|
|
```
|
|
</details>
|
|
|
|
##### `absence`
|
|
- Pole objektů, kde každý objekt specifikuje jednu absenci. Struktura objektu je následující:
|
|
- `teacher` (string | null): Celé jméno učitele, pokud je známé.
|
|
- `teacherCode` (string | null): Zkratka jména učitele (např. "me", "ad").
|
|
- `type` (string): Typ absence. Může nabývat následujících hodnot:
|
|
- `"wholeDay"`: Učitel chybí celý den.
|
|
- `"single"`: Učitel chybí jednu vyučovací hodinu.
|
|
- `"range"`: Učitel chybí v rozmezí několika hodin.
|
|
- `"exkurze"`: Učitel je na exkurzi.
|
|
- `"invalid"`: Záznam o absenci se nepodařilo zpracovat.
|
|
- `hours` (object | number | null): Specifikuje hodiny absence.
|
|
- `null`: Pro typy `wholeDay`, `exkurze`, a `invalid`.
|
|
- `number` (např. `3`): Pro typ `single`.
|
|
- `object` (např. `{ "from": 2, "to": 4 }`): Pro typ `range`.
|
|
- `original` (string | null): Pouze pro typ `invalid`, obsahuje původní nezpracovaný text.
|
|
|
|
<details>
|
|
<summary>Zobrazit příklady absencí</summary>
|
|
|
|
**Celý den:**
|
|
```json
|
|
{
|
|
"teacher": "Jan Novák",
|
|
"teacherCode": "no",
|
|
"type": "wholeDay",
|
|
"hours": null
|
|
}
|
|
```
|
|
|
|
**Jedna hodina:**
|
|
```json
|
|
{
|
|
"teacher": "Jan Novák",
|
|
"teacherCode": "no",
|
|
"type": "single",
|
|
"hours": 1
|
|
}
|
|
```
|
|
|
|
**Rozsah hodin:**
|
|
```json
|
|
{
|
|
"teacher": "Jan Novák",
|
|
"teacherCode": "no",
|
|
"type": "range",
|
|
"hours": { "from": 2, "to": 4 }
|
|
}
|
|
```
|
|
|
|
**Exkurze:**
|
|
```json
|
|
{
|
|
"teacher": "Jan Novák",
|
|
"teacherCode": "no",
|
|
"type": "exkurze",
|
|
"hours": null
|
|
}
|
|
```
|
|
|
|
**Zastupuje:**
|
|
```json
|
|
{
|
|
"teacher": "Ing. Zdeněk Vondra",
|
|
"teacherCode": "vn",
|
|
"type": "zastoupen",
|
|
"hours": null,
|
|
"zastupuje": {
|
|
"teacher": "David Janoušek",
|
|
"teacherCode": "jk",
|
|
},
|
|
},
|
|
```
|
|
|
|
**Neplatný záznam:**
|
|
```json
|
|
{
|
|
"type": "invalid",
|
|
"teacher": null,
|
|
"teacherCode": null,
|
|
"hours": null,
|
|
"original": "Nezpracovatelný text"
|
|
}
|
|
```
|
|
</details>
|
|
|
|
##### `takesPlace`
|
|
|
|
String obsahující aktuálně probíhající akce ten den.
|
|
|
|
#### `reservedRooms`
|
|
|
|
Pole 10 prvků (string | null) pro jakou hodinu jsou rezervované jaké místnosti.
|
|
|
|
#### `info.inWork`
|
|
|
|
Boolean jestli je daná tabulka in work (příprava).
|
|
|
|
#### Sekce: `status` - Stav a Metadata
|
|
|
|
Objekt poskytující informace o aktuálnosti dat.
|
|
|
|
- `lastUpdated` (string): Čas poslední úspěšné aktualizace dat ve formátu `HH:MM`.
|
|
- `currentUpdateSchedule` (number): Interval v **minutách**, ve kterém scraper interně kontroluje a stahuje novou verzi rozvrhu. Tento interval se dynamicky mění v závislosti na denní době (kratší během vyučování, delší v noci).
|
|
|
|
<details>
|
|
<summary>Zobrazit příklad status</summary>
|
|
|
|
```json
|
|
"status": {
|
|
"lastUpdated": "08:30",
|
|
"currentUpdateSchedule": 5
|
|
}
|
|
```
|
|
</details>
|