add_user
ChatGPTAdd a person to the company with a role: admin (everything incl. users), editor (media, playlists, modules), subscriber (read only) or clerk (ticket counter only). A new address gets an invitation e-mail to set a password; an existing account gets a notice and sees the company at its next sign-in. Members already in the company are refused. Needs admin rights. Ask the user to confirm before calling it.
add_web_page
ChatGPTAdd a public web page (https address) to the library as a NEW item; screens show the live page, the library keeps a screenshot as thumbnail. Put it in a playlist with update_playlist or show it on touch with set_device_interactive. Pages that refuse to be framed may stay blank on screens. Private addresses are refused. Ask the user to confirm before calling it.
api_reference
ChatGPTThe OpenAPI document of the Touchbud Play client API (routes, fields, limits). Static reference, read-only.
check_upload
ChatGPTState of an upload link from request_upload_link: open (nothing uploaded yet - ask the user to finish, then call again), done (returns the media with its id), or expired. Read-only.
clear_device_cache
ChatGPTDelete the downloaded files of an ONLINE screen's player; it downloads its content again and may show less until then. Refused while a previous command still runs or when the screen is offline. Ask the user to confirm before calling it.
create_catalog_category
ChatGPTCreate a kiosk catalog category: a name and the fields its items fill in (text, textarea, number, price, color, select with options, image, gallery, pdf, table). parent makes it a subcategory. Catalog modules showing the parent show it too; screens update by themselves. Ask the user to confirm before calling it.
create_catalog_item
ChatGPTAdd an item (a product, a menu entry) to a category of the kiosk catalog. A layout item fills the category's fields under their labels; an image, video or pdf item shows one asset. Screens update by themselves. Ask the user to confirm before calling it.
create_module
ChatGPTCreate a NEW module that renders content on screens. Types: clock, text, qr, countdown, headliner, splitflap, weather, airport-weather, fuel, menu-board. Fields per type - clock: use24h, showSeconds, showDate (booleans), style digital|analog; text: headline, body, fontFamily sans|serif|mono, size small|medium|large, align center|left, backgroundImage (https url); qr: headline, body, url (max 106 chars, required); countdown: headline, target 'YYYY-MM-DDTHH:mm' local time (required), doneText; headliner: hlText (up to 8 lines), hlPreset marquee|marquee5|diagonal|outline|pulse|neon|blink|zoom|wave|drop|flip|slide|type|ticker|spot, hlSpeed 1-10, hlFont sans|serif|mono|display, hlCaps; splitflap: sfText (rows up to 32 chars, 10 rows a page, blank line = next page, 8 pages), sfTheme black|white, sfCols 0-32 (0 auto), sfHold 2-60 s, sfSpeed 1-10, sfAlign center|left, sfCaps; weather: place (looked up) or wxLat + wxLon (required), wxName, wxTz (IANA), wxLang de|en|fr|hu, wxTheme sky|dark|light, wxUnits metric|imperial, wxDays 3-7, wxHourly; airport-weather: awIcao (required), place or wxLat + wxLon, awMetar (other station), awRunways ['09/27', '16/34:163'], awTaf, awModel, awLocal hu:NNNNN, wxTheme, wxLang, wxUnits, wxTz; fuel: fuName, fuIcao, fuItems [{g: grade, p: price or null, a: available, n: note}] up to 6, fuCurrency EUR|HUF|USD|CHF|CZK|PLN|RON|GBP|SEK, fuUnit l|USG, fuVat gross|net|all|none, fuUpdated YYYY-MM-DD, fuHours, fuPay, fuContact, fuTheme, fuLang, fuFeedUrl (https), fuRefreshMin 5-1440; menu-board: headline, columns 1-3, sections [{title, rows: [{name, description, price, badge}]}]; colours (backgroundColor, textColor, accent) are #hex. Afterwards add it to a playlist with update_playlist (addItems, media = the module id). Use idempotencyKey to make a retry safe.
create_playlist
ChatGPTCreate a NEW playlist from library media. Items play in order (or shuffled); each item may carry a date range, a daily time window and weekdays. It only creates the playlist; to show it on screens afterwards use set_playlist_devices or set_device_playlist. Use idempotencyKey to make a retry safe.
delete_catalog_category
ChatGPTDelete a category. Refused while it has subcategories; refused while it has items unless force is true, which deletes the items too. Ask the user to confirm before calling it.
delete_catalog_item
ChatGPTDelete an item from the kiosk catalog. Ask the user to confirm before calling it.
delete_media
ChatGPTPermanently delete an image or video and its file. Refused (409) while playlists use it unless force is true, which removes it from those playlists first. dryRun shows what would happen without deleting. Ask the user to confirm before calling it.
delete_module
ChatGPTPermanently delete a module. Refused (409) while playlists use it unless force is true, which removes it from them first; always refused while a screen shows it as interactive content. dryRun shows what would happen. Ask the user to confirm before calling it.
delete_pdf
ChatGPTDelete a PDF and all its page images from the library. Refused while playlists use it unless force is true (then it is removed from them, needs playlist permission). Ask the user to confirm before calling it.
delete_playlist
ChatGPTPermanently delete a playlist. Refused (409) while screens show it unless force is true, which detaches them first (they then show nothing). dryRun shows what would happen. Ask the user to confirm before calling it.
delete_web_page
ChatGPTDelete a web page from the library. Refused while playlists use it unless force is true (then it is removed from them, needs playlist permission) and while a screen shows it as touch content. Ask the user to confirm before calling it.
device_screenshot
ChatGPTAsk an ONLINE screen to capture what it shows right now; the picture is stored in the company's account and returned here (plus its URL). Takes up to 45 s; offline screens answer 409 - check list_devices first.
get_catalog_item
ChatGPTOne kiosk catalog item with all its values. Read-only.
get_device
ChatGPTOne screen by id. Read-only.
get_device_settings
ChatGPTA screen's settings: heartbeat (minutes between check-ins: 5, 30, 60 or 240), rotation of the content (0, 90, 180, 270 = landscape, portrait, landscape-flipped, portrait-flipped), whether the debug overlay is shown, the interactive (touch) content and a scheduled playlist switch. Read-only.
get_media
ChatGPTOne library item by id. Read-only.
get_module
ChatGPTOne module with its settings (a summary for types that are edited in the admin). Read-only.
get_offline_alarm
ChatGPTThe signed-in person's offline alarm in the company: whether they get an e-mail when a screen stays offline, and after how many hours. Read-only.
get_overview
ChatGPTThe company at a glance: how many screens are online, offline (and which) or inactive, plus the most played media and playlist of the last 30 days. Read-only.
get_playlist
ChatGPTOne playlist by id with its items, schedules and screens. Read-only.
get_statistics
ChatGPTHow often and how long the screens showed each media in a date range (from / to YYYY-MM-DD, at most 92 days; default the last 30), with totals per screen, per playlist and per day and the kiosk taps. Optionally for one screen or one playlist. Days are the screens' local dates, media are counted by name, seconds are the configured display time per play. Read-only.
list_catalog_categories
ChatGPTThe kiosk catalog's categories (the CMS schemas): id, name, parent (subcategories), fields with key, label and type, picture, translations and how many items each has. Read-only.
list_catalog_items
ChatGPTThe kiosk catalog's items (products, entries) with their values under the field labels, type, barcode and translations; optionally of one category (id or exact name) or matching q (name part or exact barcode). Read-only.
list_catalog_styles
ChatGPTThe kiosk designs (made in the admin) a category or item may use, with id, name and kind (start, category, item). Read-only.
list_companies
ChatGPTThe companies this sign-in reaches, with the person's role and the permissions in each (id, name, role, scopes). Use an id or name from here as the company argument of the other tools. q filters by part of the name. Read-only.
list_devices
ChatGPTAll screens with id, name, online state (heartbeat within two hours), player version and the playlist they show. Read-only.
list_media
ChatGPTThe company's library with id, name, kind, url, thumbnail, duration and the playlists using them: images and videos by default; kind web, pdf (with the page count) or all for the rest. Modules are listed by list_modules. Read-only. To add: upload_media_file / upload_media_from_url / request_upload_link (images, videos), add_web_page, upload_pdf_file / upload_pdf_from_url.
list_modules
ChatGPTThe company's modules (clock, weather, split-flap board, menu board, headliner, ...) with id, name, type, whether the API can edit them and the playlists using them. A module id goes into a playlist like any media id. Read-only.
list_playlists
ChatGPTAll playlists with their items (display seconds, weekdays 1 = Monday ... 7 = Sunday, daily time window, date range) and the screens showing them. Read-only.
list_users
ChatGPTThe company's members with id, e-mail, name, role (admin, editor, subscriber, clerk) and whether the account is confirmed. Needs admin rights in the company. Read-only.
remove_user
ChatGPTRemove a member from the company; they lose access at once and get an e-mail. When this was their ONLY company the whole account is deleted - run with dryRun first, it says so (deletesAccount). Refused for your own account, platform owners and the last admin. Needs admin rights. Ask the user to confirm before calling it.
rename_device
ChatGPTOverwrite a screen's display name; what it shows stays unchanged.
rename_media
ChatGPTOverwrite the display name of a library item; the file and its use in playlists stay unchanged.
request_upload_link
ChatGPTCreate a one-time link (valid 30 minutes, one file) that the user opens on their phone or computer to pick an image or video; it lands in the library as a new item. Show the url as a clickable link and tell the user to open it, choose the file and press upload. Afterwards call check_upload with the ticket to get the new media id.
restart_device
ChatGPTRestart the player app of an ONLINE screen; the screen is blank for a few seconds. Refused while a previous command still runs or when the screen is offline. Ask the user to confirm before calling it.
schedule_device_playlist
ChatGPTLet a screen switch to another playlist by itself at a set time (2 minutes to 30 days ahead), e.g. the evening menu at 17:00. startAt is 'YYYY-MM-DDTHH:mm' in timeZone (default Europe/Vienna; use the screen's location zone) or an ISO time with offset. One switch per screen: a new one replaces the scheduled one. playlist null cancels it. To switch now use set_device_playlist. Ask the user to confirm before calling it.
set_device_interactive
ChatGPTWhat a screen shows when someone touches it: an image, video, web page or module from the library (list_media, list_modules; PDFs cannot). It closes after duration seconds without a touch and the playlist continues. touchHint draws an invitation to touch (pulse, ripple, touch; none hides it) at touchPos in touchSize. interactiveOnly: true makes the screen show only this content instead of a playlist (Android players only). content null turns it off. Options you leave out keep their current value. Ask the user to confirm before calling it.
set_device_playlist
ChatGPTMake a screen show a playlist (replacing its current one), or detach it with playlist = null. Ask the user to confirm before calling it.
set_offline_alarm
ChatGPTTurn the offline alarm on or off: an e-mail when a screen of the company stays offline for at least thresholdHours (1-168, default 4; checked hourly, one mail per offline episode). Without user it is the signed-in person's own alarm; with user (an id from list_users) an admin sets it for that member. Ask the user to confirm before calling it.
set_playlist_devices
ChatGPTMake exactly these screens show the playlist: listed screens switch to it (replacing what they showed), screens not listed are detached from it. An empty list detaches every screen. Ask the user to confirm before calling it.
set_user_role
ChatGPTChange a member's role (admin, editor, subscriber, clerk). Refused for your own account, for platform owners and for the company's last admin. Needs admin rights. Ask the user to confirm before calling it.
update_catalog_category
ChatGPTChange a category: name, description, parent, picture, translations, style, or the fields. fields REPLACES the list: send every field to keep with its key (labels and types may change); a field left out is no longer shown (its values stay stored). Screens update by themselves. Ask the user to confirm before calling it.
update_catalog_item
ChatGPTChange an item: name, values (only the fields you send change; null removes a value), translations, asset, barcode or style. It stays in its category. Screens update by themselves. Ask the user to confirm before calling it.
update_device_settings
ChatGPTChange a screen's heartbeat, content rotation (rotation 0/90/180/270 or orientation landscape / portrait / landscape-flipped / portrait-flipped) or debug overlay. The player applies them within seconds, no restart. Only the fields you send change. dryRun shows before and after. Ask the user to confirm before calling it.
update_module
ChatGPTChange a module's name or settings; only the fields you send change, the rest stays. Screens showing it (in playlists or as interactive content) switch to the new content. Fields per type - clock: use24h, showSeconds, showDate (booleans), style digital|analog; text: headline, body, fontFamily sans|serif|mono, size small|medium|large, align center|left, backgroundImage (https url); qr: headline, body, url (max 106 chars, required); countdown: headline, target 'YYYY-MM-DDTHH:mm' local time (required), doneText; headliner: hlText (up to 8 lines), hlPreset marquee|marquee5|diagonal|outline|pulse|neon|blink|zoom|wave|drop|flip|slide|type|ticker|spot, hlSpeed 1-10, hlFont sans|serif|mono|display, hlCaps; splitflap: sfText (rows up to 32 chars, 10 rows a page, blank line = next page, 8 pages), sfTheme black|white, sfCols 0-32 (0 auto), sfHold 2-60 s, sfSpeed 1-10, sfAlign center|left, sfCaps; weather: place (looked up) or wxLat + wxLon (required), wxName, wxTz (IANA), wxLang de|en|fr|hu, wxTheme sky|dark|light, wxUnits metric|imperial, wxDays 3-7, wxHourly; airport-weather: awIcao (required), place or wxLat + wxLon, awMetar (other station), awRunways ['09/27', '16/34:163'], awTaf, awModel, awLocal hu:NNNNN, wxTheme, wxLang, wxUnits, wxTz; fuel: fuName, fuIcao, fuItems [{g: grade, p: price or null, a: available, n: note}] up to 6, fuCurrency EUR|HUF|USD|CHF|CZK|PLN|RON|GBP|SEK, fuUnit l|USG, fuVat gross|net|all|none, fuUpdated YYYY-MM-DD, fuHours, fuPay, fuContact, fuTheme, fuLang, fuFeedUrl (https), fuRefreshMin 5-1440; menu-board: headline, columns 1-3, sections [{title, rows: [{name, description, price, badge}]}]; colours (backgroundColor, textColor, accent) are #hex. Ask the user to confirm before calling it.
update_playlist
ChatGPTChange an existing playlist. To ADD media keep the current items and pass only the new ones in addItems (items already in the playlist with the same schedule are skipped). items REPLACES the whole list - use it only to reorder, remove or edit items, and always send every item that should remain. name and the shuffle/synchronized flags are overwritten when given. Screens are changed with set_playlist_devices. Ask the user to confirm before calling it.
update_web_page
ChatGPTGive a web page of the library a new address (a new screenshot thumbnail is taken) or a new name. Playlists and screens using it follow. Ask the user to confirm before calling it.
upload_media_file
ChatGPTAdd an image or video the user ATTACHED IN THIS CHAT to the library as a NEW item - no link, no page. Use this whenever the user has attached the file; use request_upload_link only when there is no attachment. Images up to 12 MB (jpg, png, webp), videos up to 50 MB (mp4, webm).
upload_media_from_url
ChatGPTAdd a NEW image (jpg, png, webp, up to 12 MB) or video (mp4, webm, up to 50 MB) to the library from a PUBLIC http(s) URL the user gives you. The server downloads it; private addresses are refused. Each call adds another item. For a file attached in the chat use upload_media_file; for a file on the user's phone or computer use request_upload_link.
upload_pdf_file
ChatGPTAdd a PDF the user ATTACHED IN THIS CHAT to the library as a NEW item (up to 25 MB and 40 pages). Every page becomes an image; screens page through them, about 5 s each.
upload_pdf_from_url
ChatGPTAdd a PDF from a PUBLIC http(s) URL to the library as a NEW item (up to 25 MB and 40 pages). Every page becomes an image; screens page through them, about 5 s each. For a PDF attached in the chat use upload_pdf_file. Private addresses are refused. Ask the user to confirm before calling it.
whoami
ChatGPTThe Touchbud Play company, the signed-in account (or API key) and the permissions granted to this connection. Read-only.