Deploy hosted app
deploy_appPut a small web app that you wrote live at a public address, or replace the files of the app this workspace already has under the same slug. A hosted app is static files — HTML, CSS, JavaScript, no build step — that show ONE board and its sub-boards: a gallery, a portfolio, a catalogue. Returns the app's url. Read the hosted_apps topic with read_documentation BEFORE writing the files: it has the contract and a working starter. In short, the page reads the board through its own address: a GET of the RELATIVE URL playbook/api/<path> returns the Playbook REST API's answer to /v1/{organization}/<path> (e.g. playbook/api/assets?nested_assets=true), and playbook/app answers { board }. The page needs and gets no token; every URL in the app must be relative. The app is PUBLIC. Anyone with the address sees everything on the board with no login, unapproved assets and uploader names included, and boards added under it later too, so confirm the board with the user before deploying. Everything in files is public as well: never put a token, a key, or content read from another board into them. The only write is visitors' uploads into the board (playbook/upload, see the topic), and only while the board's share link has Allow uploads or the upload-only page on, with no password, no email form and no past expiry; the app cannot comment or change anything else. Limits: an index.html is required; text files only (.html .css .js .mjs .json .svg .txt .webmanifest); at most 50 files and 1 MB in total — images stay in Playbook and are never part of the app; at most 10 apps per workspace. A deploy replaces the whole file set, so send every file each time, not only the changed ones. If the call times out, check list_apps before deploying again; a repeat is safe. Requires write scope and permission to edit the board. Needs hosted apps enabled for the workspace: without it the call answers 403 hosted_apps_disabled, which no tool can change — tell the user to ask Playbook support.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name of the app, at most 100 characters | |
| slug | Yes | The app's address: lowercase letters, digits and hyphens, at most 63 characters, starting with a letter or digit. Unique across all of Playbook, so make it specific; one taken by another workspace is refused with a 422. A slug this workspace already uses replaces that app's files. | |
| files | Yes | The complete file set: contents as text, keyed by path relative to the app's root, e.g. { "index.html": "<!doctype html>…", "app.js": "…", "styles.css": "…" }. Paths are plain names joined by `/` and `.`, with no leading slash. A top-level `worker.js` is the app's optional backend and is not served as a file; leave it out unless the `hosted_apps` topic says you need one. Nothing may sit under `playbook/`, which Playbook answers itself. | |
| board_token | Yes | Token of the board the app shows, from list_boards. Its sub-boards are readable too; nothing else in the workspace is. | |
| organization | No | Workspace slug, as returned by list_organizations. Omit it when the account has a single workspace — it is then resolved from your token. Pass it only when the account has several, or when you mean a workspace other than the obvious one. |