Change items
update_itemsChange existing items of one kind, the same changes on every id.
When to use:
Renaming, moving or retagging items; editing what is inside a playlist, schedule, layout or screen group; screen, web link and data feed settings; swapping a screen's device; closing an alert.
Turning Repeat for each row on, changing its seconds or turning it off on a creative (repeat, useEachRow).
Franchise menus: share a creative live with child workspaces (shareWithWorkspaces), and set one location's own prices on a creative shared to it (localText) while the owner's design keeps updating.
When NOT to use:
Showing content on screens: use set_screen_content.
New items: use create_items. Removing: use delete_items.
What to know:
Per id, changes run as steps in a fixed order and stop at that id's first failure; earlier steps stay and are named; other ids go on. Each id returns the item as it is now.
Content that airs where review is required goes back to draft. Needs the kind's edit permission (screen moves: at both locations).
Changes go live at once: every screen playing an edited playlist, schedule or layout shows the new version at its next sync. There is no undo; overwritten values and removed playlist items are gone, so note the old values with get_items first.
Repeat for each row: one design and one data source play as a slideshow, one slide per row of the sheet. Set dataSourceId and repeat {over:"rows", secondsPerRow:12}; seconds run from 3 to 3600, default 12. A workspace without this feature refuses it with 403 feature_disabled and saves nothing, so tell the person instead of retrying.
Row tags follow the slide: {{row.column}} in a text box's text, row.column in a field box's field, {{row.photo}} as an image box's url or the backgroundUrl. {{rows.0.column}} stays on the sheet's first row on every slide.
The column name in a row tag is the sheet's header in lower case with accents removed, every other character changed to _, repeats collapsed and none at the ends: Date de début is row.date_de_debut, Région (€) is row.region. A missing column or an empty cell reads blank.
A picture cell must be a plain https address; anything else leaves that box empty on that slide.
At most 200 rows and 3 MB of slides play, and each slide is a whole copy of the design, so a large design fits fewer rows. Afterwards read it with get_items: repeatStatus gives rowCount, rowsThatFit, limitedBy, columns, missingColumns and warnings. Tell the person when rowsThatFit is below rowCount.
It reaches screens like any design: set_screen_content or start_takeover with contentKind creative, a schedule block or a layout zone. A playlist item has its own switch: appendItems with refKind creative may answer 403 feature_disabled, and then set_screen_content still works.
repeat:null turns it off and the design plays once; its row tags then have no row to read, so change them to {{rows.0.column}} in the same call's boxes.
Parameters:
kind and ids: every id must be of that kind; get them from list_items. Every id gets identical changes; for different values per item, call once per value.
changes: only the fields to change. Each field's description names the kinds that take it; a field the kind does not take is refused before anything changes.
zones, boxes, config and tags replace the whole value: read it with get_items first. In config, a value that reads •••••••• (sent back or left out) keeps what is stored; a new sign-in value, or clearing one, is refused because a person changes those in the Brix console.
Example: {kind:"screens", ids:["scr_lobby7", "scr_lobby8"], changes:{nodeId:"on_store12", tags:["lobby"]}}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Item ids. | |
| kind | Yes | Kind of the ids. | |
| changes | Yes | Fields to change. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | The kind changed. | |
| failed | No | How many stopped at a failed step. | |
| results | No | One row per id, in the order given. | |
| succeeded | No | How many items changed fully. |