Přeskočit na hlavní obsah

Rozdíl mezi action=delete a metodou DELETE

Jaký je rozdíl mezi action=delete a metodou DELETE?

Autor: Petr Pech

Záznam lze přes API smazat dvěma způsoby — metodou DELETE na jeho adresu, nebo atributem action="delete" v importním XML či JSON. V jádru dělají obě totéž, liší se tím, co všechno umí obsloužit.


Metoda DELETE

Smaže jeden záznam určený adresou:

DELETE /c/{firma}/faktura-vydana/123

Úspěch potvrdí odpověď 200. Na adresu vnořené evidence (například /faktura-vydana/123/polozkyDokladu) ji ale použít nelze — server odpoví 405.


Atribut action="delete"

Mazání je součástí běžného importu, takže v jednom požadavku lze smazat i několik záznamů zároveň — a spojit mazání s dalšími změnami:

<winstrom version="1.0">
<faktura-vydana action="delete">
<id>code:VF1-0001/2026</id>
</faktura-vydana>
<faktura-vydana action="delete">
<id>ext:SHOP:1234</id>
</faktura-vydana>
</winstrom>

Odpověď má tvar běžného importu — 201 a ve statistikách počet smazaných záznamů:

<stats><created>0</created><updated>0</updated><deleted>2</deleted> … </stats>

Týž zápis ve formátu JSON — každý mazaný záznam je vlastní objekt v poli:

{
"winstrom": {
"@version": "1.0",
"faktura-vydana": [
{ "@action": "delete", "id": "code:VF1-0001/2026" },
{ "@action": "delete", "id": "ext:SHOP:1234" }
]
}
}

ℹ️ Pozor na rozdíl: pole id uvnitř jednoho objektu neznamená víc záznamů, ale jeden záznam určený několika identifikátory zároveň — "id": [ "code:VF1-0001/2026", "ext:SHOP:1234" ] smaže jediný doklad a všechny uvedené identifikátory musí ukazovat na tentýž záznam.

💡 action="delete" umí smazat i vnořený záznam, což metodou DELETE nejde. Atribut se uvádí přímo na konkrétní položce:

<winstrom version="1.0">
<faktura-vydana>
<id>code:VF1-0001/2026</id>
<polozkyDokladu>
<faktura-vydana-polozka action="delete">
<id>1372</id>
</faktura-vydana-polozka>
</polozkyDokladu>
</faktura-vydana>
</winstrom>

Smazaná položka se ve statistikách projeví jako aktualizace nadřízeného dokladu, ne jako deleted.

⚠️ Mazání se řídí vazbami dokladu: podle jejich druhu Flexi buď smaže i navázané záznamy, zruší vazby, nebo akci nepovolí. U systémových záznamů (například uživatelů nebo standardních přehledů) akci provést nelze. Nechcete-li doklad ztratit z evidence, zvažte místo mazání storno.


Související

Dostali jste odpověď na svou otázku?