Labels, attributes and user relations¶
Labels¶
Labels (“štítky”) can be attached to almost any object (documents, address book, jobs, …), or even to sub-states (e.g. payment method) — useful for signalling an external system.
A label must first exist in the label codebook before it can be assigned.
Working with labels is technically a relation emulated as an item
collection — the same removeAll="true" mechanism as line items (see
Writing data):
<adresar><id>14</id><stitky removeAll="true"/></adresar> <!-- clears all -->
<stitky removeAll="true">LABEL1,NEW_LABEL</stitky> <!-- replaces the whole set -->
Without removeAll, labels are just added (existing ones kept). JSON:
"stitky@removeAll": "true", "stitky": "LABEL1,NEW_LABEL".
Label groups: a label can belong to a group; if the group is configured
“only one label allowed”, assigning a new label from that group
automatically removes any other label from the same group — a simple way
to emulate a state machine. Export by group:
?skupina-stitku=GROUP1,GROUP2 — the output annotates the <stitky>
element with per-group attributes:
<stitky GROUP1="LABEL1" GROUP2="LABEL2">LABEL1,LABEL2,LABEL3</stitky>
Attributes (custom fields on price list & address book)¶
Free-form custom fields for cenik (price list) and adresar (address
book) records, via a dedicated atribut evidence. Address book
attributes: REST API only for create/edit/delete (though viewing them is
also exposed in the desktop app). Price list attributes: full CRUD in both
API and desktop/web app.
Export attributes of one record (id-only, no general filtering):
GET /c/{company}/cenik/{id}/atributy.xml
GET /c/{company}/adresar/{id}/atributy.xml
Export via the generic atribut evidence (supports normal filtering by
code or id):
GET /c/{company}/atribut/(cenik='code:CENIK').xml
GET /c/{company}/atribut/(adresar='code:FIRMA').xml
Create:
<atribut>
<hodnota>LEATHER</hodnota>
<cenik>code:SUITCASE</cenik> <!-- or <adresar>code:FIRMA</adresar> -->
<typAtributu>code:MATERIAL</typAtributu>
</atribut>
Update: same shape + <id>. Delete: same shape + <id> +
action="delete" on the <atribut> element (see Actions and locking).
User-defined relations¶
Links any object to any other, tagged with a relation type. Two kinds: manual (created via UI/import) and automatic (auto-populated per a saved filter configured on the relation type).
Read: GET /c/{company}/{evidence}/{id}/uzivatelske-vazby. The linked
object can be included directly in the export
(?detail=full&includes=/winstrom/uzivatelska-vazba/object), or via the
owning record’s relations= (?relations=uzivatelske-vazby).
Create (nested under the owning record):
<adresar>
<id>109</id>
<uzivatelske-vazby>
<uzivatelska-vazba>
<id>ext:VAZBA:TESTEXTID-CEN</id>
<evidenceType>cenik</evidenceType>
<object>code:SKL-0001/2022</object>
<popis>description</popis>
<poznam>note</poznam>
<vazbaTyp>code:ADRCEN</vazbaTyp>
</uzivatelska-vazba>
</uzivatelske-vazby>
</adresar>
{"winstrom": {"interni-doklad": [{"id": "1054", "uzivatelske-vazby": [
{"vazbaTyp": "code:INT-FAV", "evidenceType": "faktura-vydana", "object": "code:VF1-0073/2022"}
]}]}}
Delete (standalone on the relation’s own evidence, not nested):
<uzivatelska-vazba action="delete"><id>ext:VAZBA:TESTEXTID-CEN</id></uzivatelska-vazba>