Jaká data si musí z ReČeK API nakladatel ukládat, aby mohl aktualizovat záznam?
Otázka zněla takto:
Jaká data si musí z ReČeK nakladatel ukládat, aby mohl aktualizovat (tj. editovat, přenastavovat) přes API:
- údaje o titulu,
- údaje o produktu?
Stačí jako klíč pro obojí ISBN? Nebo je nutné ukládat také:
- a) ReČeK ID titulu,
- b) ReČeK ID produktu?
Odpověď:
Stačí ISBN, nebo je potřeba i ReČeK ID? Ani jedno. Systém nakladatele aktualizuje titul i produkt podle svých vlastních identifikátorů (ownerId), které posílá už při založení.
Titul
Klíčem je ownerId titulu v rámci nakladatele, kterého ReČeK určí podle přihlašovacího tokenu.
Produkt
Klíčem je titleOwnerId (vlastní identifikátor titulu, ke kterému produkt patří) spolu s ownerId produktu. Titul musí být do ReČeK zaslaný dřív, jinak API vrátí chybu 404.
Jak API funguje:
- Role pro externí systémy nakladatelů (ExternalPublisher) umí jen zapisovat: POST /titles/receive a /products/receive.
- Obě volání záznam založí, nebo ho aktualizují, pokud se stejným klíčem už existuje.
- Tato role nemůže tituly ani produkty číst ani vyhledávat (mod-br-users Permissions.java:142-147).
Proč ISBN klíčem být nemůže:
- Zpráva o produktu pole pro ISBN vůbec nemá.
- ISBN přiděluje agentura až po založení produktu.
- Produkt nemusí mít ISBN žádné, nebo jich může mít víc (některé koedice).
ReČeK ID: pro aktualizaci přes receive není potřeba. API ho vrací v odpovědi a uložit si ho doporučujeme pro dohledání záznamu. Povinné je jen pro editaci přes PUT /titles/{id} a /products/{id}. Ta je ale určená pro uživatele v roli Nakladatel, ne pro roli ExternalPublisher, a vyžaduje aktuální version a kompletní záznam.
Pravidla pro dodavatele
- OwnerId se nesmí měnit, jelikož nová hodnota založí duplicitní záznam místo aktualizace.
- Když produkt pošle pod jiným titleOwnerId, vznikne nový produkt, původní se nepřesune.
- Posílat vždy úplná data, protože každá zpráva údaje záznamu přepíše.
Stav: Odpověď je jako interní komentář na issue, v resultSummary a připravený je i návrh changelogu. Položka čeká ve stavu awaiting-approval, stav issue jsem neměnil. Uzavřeš ji tlačítkem Done.
Shrnutí
- Titul se při opakovaném zaslání aktualizuje podle vlastního identifikátoru titulu v systému dodavatele (ownerId).
- Produkt se aktualizuje podle identifikátoru titulu (titleOwnerId) a vlastního identifikátoru produktu (ownerId).
- ISBN klíčem být nemůže – přiděluje ho agentura až později, produkt jej nemusí mít nebo jich může mít víc.
- ReČeK ID, které API vrací v odpovědi, není pro aktualizaci nutné; doporučujeme ho uložit pro dohledání záznamu.
- Vlastní identifikátory se nesmí měnit – nová hodnota založí nový záznam.