JSON formáty
⚠
Tohle není veřejné API. Eutepio nemá žádný endpoint, ke kterému by šlo zvenčí přistupovat. Popsané struktury jsou interní formáty — dokumentujeme je proto, aby sis mohl přečíst obsah vlastní zálohy, ne proto, abys proti nim stavěl integraci. Mohou se mezi verzemi změnit.
K čemu tahle stránka je
Existují dvě místa, kde v Eutepiu narazíš na JSON:
- Synchronizace — co si zařízení mezi sebou posílají, když si vyžádají píseň nebo setlist
- Záloha
.eutbackup— souborysongs.jsonasetlists.jsonuvnitř archivu
Liší se záměrně: přes síť jde jen to, co má smysl sdílet, kdežto do zálohy jde všechno.
Píseň v synchronizaci
json
{
"leaderSongId": 42,
"syncId": "e3b0c442-98fc-1c14-9afb-f4c8996fb924",
"title": "Ukázková píseň",
"artist": "Kapela",
"variantName": "akustická",
"key": "G",
"bpm": 120,
"timeSignature": "4/4",
"capo": 2,
"tags": ["rock", "koncert"],
"chordProContent": "{c: Sloka}\n[G]Ráno jsem [D]vstal…",
"durationSeconds": 225,
"autoScrollMode": "continuous",
"autoScrollDelaySeconds": 3,
"version": 4
}
Všimni si, co tam není: osobní poznámky, transpozice, velikost písma, rychlosti autoscrollu, cesty k přílohám ani MIDI příkaz. Ta pole se přes síť neposílají vůbec — proto je nemá jak nikdo přepsat.
Setlist v synchronizaci
json
{
"name": "Klub Fléda, sobota",
"eventDateIso": "2026-09-12",
"songs": [
{
"leaderSongId": 42,
"title": "Ukázková píseň",
"artist": "Kapela",
"variantName": "akustická",
"syncId": "e3b0c442-98fc-1c14-9afb-f4c8996fb924"
}
]
}
Setlist nese jen odkazy na písně, ne jejich obsah. Píseň, kterou člen nemá, se dotahuje zvlášť.
Píseň v záloze
Záloha odděluje sdílená a osobní data do dvou bloků:
json
{
"syncId": "e3b0c442-98fc-1c14-9afb-f4c8996fb924",
"matchKey": "ukazkova-pisen|kapela|akusticka",
"contentHash": "9f86d081884c7d65…",
"version": 4,
"createdAt": "2026-05-14T18:22:04.000Z",
"updatedAt": "2026-07-02T09:41:11.000Z",
"deletedAt": null,
"shared": {
"title": "Ukázková píseň",
"artist": "Kapela",
"variantName": "akustická",
"key": "G",
"bpm": 120,
"timeSignature": "4/4",
"capo": 2,
"tags": ["rock", "koncert"],
"chordProContent": "{c: Sloka}\n[G]Ráno jsem [D]vstal…",
"durationSeconds": 225,
"autoScrollMode": "continuous",
"autoScrollDelaySeconds": 3
},
"perDevice": {
"privateNotes": "druhá sloka o půl tónu níž",
"localTranspose": -2,
"fontSizeScale": 1.2
}
}
| Pole | Význam |
|---|---|
syncId | Trvalý identifikátor písně napříč zařízeními |
matchKey | Odvozený klíč z názvu, interpreta a varianty — slouží k párování |
contentHash | SHA-256 sdílených polí; podle něj se pozná, že se obsah nezměnil |
version | Zvyšuje se při každé úpravě sdílených polí |
deletedAt | Vyplněné = měkce smazaná píseň |
Setlist v záloze
json
{
"matchKey": "klub-fleda-sobota|2026-09-12",
"name": "Klub Fléda, sobota",
"eventDate": "2026-09-12T00:00:00.000Z",
"venue": "Klub Fléda",
"startTime": "20:30",
"estimatedDurationMin": 90,
"version": 2,
"createdAt": "2026-08-01T12:00:00.000Z",
"deletedAt": null,
"customFieldsJson": "{}",
"songRefs": ["e3b0c442-98fc-1c14-9afb-f4c8996fb924"],
"breaks": [
{ "afterSongIndex": 7, "durationMinutes": 15, "label": "Přestávka" }
],
"songNotes": [
{ "songId": 42, "note": "začíná Petr sám" }
],
"perDevice": { "sortOrder": 3 }
}
Poznámky ke kompatibilitě
- Aktuální verze formátu zálohy je 2. Aplikace umí načíst i verzi 1 z dřívějších buildů.
- Zálohu s vyšší verzí schématu než umí aktuální build aplikace obnova odmítne — raději nic než poloviční import.
- Čísla s desetinnou částí načtená ze starších záznamů mohou chybět; při obnově se nahrazují výchozí hodnotou.
- Přílohy v JSONu nejsou. Jsou to samostatné soubory v archivu a JSON na ně odkazuje jménem.
- MIDI příkaz u písně v záloze není. Zůstává jen na zařízení, kde jsi ho nastavil.