Create items
create_itemsCreate new items of one kind.
When to use:
Adding anything new, uploading files (media_files for bytes you hold, media_from_urls for public links), pairing a device by its code or inviting a person.
When NOT to use:
Changing an existing item: use update_items.
Showing it on screens: create it, then use set_screen_content or start_takeover.
What to know:
playlists, schedules, locations and creatives are all-or-nothing: one bad row rejects the call and names it (a location whose externalId exists is skipped, so imports re-run safely). Other kinds are created one by one; each reports ok or its error and the rest continue.
New content at a location under review starts as a draft. Needs the kind's create permission there.
Tools never take sign-in values: a data_sources or apps item holding one, or a feed that cannot work without one, is refused and nothing is created. A person connects those in the Brix console; the feed is then used by its id.
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.
Parameters:
Pass exactly one array; its name is the kind and two arrays is an error.
Ids inside items (refId, contentId, nodeId, screenId, appKey, connector) must already exist; get them from list_items.
Example: {playlists:[{name:"Lobby loop", items:[{refKind:"media", refId:"med_logo", durationSec:10}]}]}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| apps | No | App instances (weather, clock, menu board, …), max 50. Find valid appKey values with list_items kind app_types. | |
| people | No | Invite people, max 10. Each gets an email invitation; inviting someone already here adds the missing locations. Roles that manage people, roles, API keys, settings or billing are refused: a person gives those in the Brix console. | |
| layouts | No | Multi-zone layouts, max 50. A new layout starts with one full-screen zone; set zones with update_items (read a layout with get_items to copy its zone shape). | |
| screens | No | Pair new devices, max 20. Each device shows a 6-digit pairing code on its screen; the code pairs it into this workspace. | |
| creatives | No | Creatives to create, max 100 per call. | |
| locations | No | Locations (org-tree nodes) to create, max 1000 per call. List a parent before its children. | |
| playlists | No | Playlists to create, max 500 per call. | |
| schedules | No | Schedules to create, max 200 per call. | |
| web_links | No | Live web pages or dashboards for the media library, max 50. Set crop, scroll and refresh after with update_items kind media. | |
| media_files | No | Files whose bytes you hold (an image you made, a file the person pasted), uploaded straight into the media library, 6 MB each. | |
| celebrations | No | Celebration entries to import, max 100 per call. | |
| data_sources | No | Data feeds that need no sign-in, max 20: a CSV URL, a Google Sheet published to anyone with the link, an iCal feed, a public transit stop, or a public JSON URL. A feed that needs a sign-in or key (POS, Stripe, Shopify, HubSpot, a private sheet) is connected by a person in the Brix console and refused here; use it by its id from list_items kind data_sources. list_items kind connectors shows each type's setup. | |
| media_folders | No | Media library folders, max 50. | |
| screen_groups | No | Screen groups, max 50. A group is a flat label across locations; it grants no permissions. | |
| media_from_urls | No | Files (image, video, PDF, audio) copied from public URLs into the media library, max 20 per call and 500 MB each. Copies land at the workspace root, so a connection limited to one location is refused. | |
| device_test_runs | No | Device Lab test runs, max 10. Each queues at once; read results with get_items kind device_test_runs. Suites content, soak, chaos and full change what the screen plays while they run; chaos and full run only on internal or test-tagged screens. | |
| emergency_templates | No | Pre-armed emergency takeovers (Lockdown, Fire drill, …), max 50. Fire one with start_takeover emergencyTemplateId. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | The kind created. | |
| failed | No | One-by-one kinds: how many failed. | |
| created | No | Bulk kinds: the new records with their ids. | |
| results | No | One row per id or item, in the order given. | |
| succeeded | No | One-by-one kinds: how many were created. |