# Mural on boxd

> Mural is a digital whiteboard platform enabling distributed teams to visually brainstorm, map ideas, and collaborate in real time with sticky notes and diagrams.

- Page: https://boxd.sh/integrations/mural/
- CLI: `run mural` (22 commands, 18 marked common)
- SDK: `import { mural } from "@boxd/run"`; every parameter and response type is at `@boxd/run/mural`
- Triggers: none
- Connect: `run auth mural` (Sign in with Mural), or https://app.boxd.sh/integrations/detail/mural
- All integrations: https://boxd.sh/integrations/ (Markdown: https://boxd.sh/integrations/index.md)

## From the shell

```sh
run auth mural      # once: prints a link to connect your account
run mural           # list its commands
run mural get-current-user
```

Parameters are flags (`--flag value`); object and array parameters take a JSON string. Output is YAML, or JSON with `--json`. Calls use your own connection; `--scope <name>` uses a connection shared with your team.

## From a script

```ts
import { every, mural } from "@boxd/run";

every("1 hour", async () => {
  const result = await mural.getCurrentUser();
  console.log(result);
});
```

Run it with `run mural.run.ts`. Mural has no triggers; `every()` polls on a schedule, keeps the script running as a job, and wakes the machine when it is due.

## Commands

Required flags are listed; `run mural <command> --help` lists the optional ones. "common" marks what `run mural` shows without `--all`.

| Command | SDK method | Required flags | Optional | Description |
|---|---|---|---|---|
| `authorization-request` ·common | `mural.authorizationRequest()` | `--client-id` `--redirect-uri` `--scope` | 2 | Initiate the OAuth 2.0 authorization process |
| `create-sticky-note` ·common | `mural.createStickyNote()` | `--muralId` `--stickies` | 0 | Create one or more sticky note widgets on a mural |
| `get-current-user` ·common | `mural.getCurrentUser()` | — | 0 | Retrieve information about the currently authenticated user |
| `get-files-for-mural` ·common | `mural.getFilesForMural()` | `--muralId` | 2 | Retrieve a list of file widgets in a mural |
| `get-room` ·common | `mural.getRoom()` | `--roomId` | 0 | Retrieve information about a specific room by its ID |
| `get-widgets` ·common | `mural.getWidgets()` | `--muralId` | 4 | Retrieve all widgets within a specified mural |
| `get-workspace` ·common | `mural.getWorkspace()` | `--workspaceId` | 0 | Retrieve information about a specific workspace by its ID |
| `get-workspaces` ·common | `mural.getWorkspaces()` | — | 2 | Retrieve all workspaces the authenticated user is a member of |
| `list-folders` ·common | `mural.listFolders()` | `--roomId` | 2 | List all folders within a room that the authenticated user has access to |
| `list-open-rooms` | `mural.listOpenRooms()` | `--workspaceId` | 2 | List all discoverable open rooms within a workspace |
| `list-recent-murals` ·common | `mural.listRecentMurals()` | `--workspaceId` | 2 | List recently opened active murals for the authenticated user in a workspace |
| `list-recent-templates` | `mural.listRecentTemplates()` | `--workspaceId` | 3 | Retrieve recent templates used by a user for a workspace |
| `list-room-murals` ·common | `mural.listRoomMurals()` | `--roomId` | 5 | List all murals for a room that the authenticated user has read access to |
| `list-room-users` | `mural.listRoomUsers()` | `--roomId` | 2 | List all members and guests for a room |
| `list-rooms` ·common | `mural.listRooms()` | `--workspaceId` | 2 | List all rooms within a workspace |
| `list-tags` ·common | `mural.listTags()` | `--muralId` | 0 | Retrieve all tags in a mural |
| `list-templates` ·common | `mural.listTemplates()` | — | 2 | Retrieve all default templates available in Mural |
| `list-workspace-murals` ·common | `mural.listWorkspaceMurals()` | `--workspaceId` | 4 | List all murals in a workspace that the authenticated user owns or is a member of |
| `list-workspace-templates` | `mural.listWorkspaceTemplates()` | `--workspaceId` | 3 | Get default and custom templates for a workspace |
| `search-murals` ·common | `mural.searchMurals()` | `--q` `--workspaceId` | 3 | Search for murals within a workspace |
| `search-rooms` ·common | `mural.searchRooms()` | `--q` `--workspaceId` | 2 | Search for rooms within a workspace by name or description |
| `search-templates` ·common | `mural.searchTemplates()` | `--q` `--workspaceId` | 2 | Search templates within a workspace that the authenticated user owns or has access to |

## Docs

- [run CLI](https://docs.boxd.sh/cli/run): Call connected integrations from the shell, connect new ones, and run automations.
- [Quickstart](https://docs.boxd.sh/guides/integrations/quickstart): Connect an integration, call it from the shell, and turn a script into an automation.
- [Connections](https://docs.boxd.sh/guides/integrations/connections): Connect an account once, for yourself or for your whole organization.
- [Scripts](https://docs.boxd.sh/guides/automations/scripts): Typed integrations, triggers, schedules and state in a .run.ts file.
- [Jobs](https://docs.boxd.sh/guides/automations/jobs): How a script becomes a background job: states, retries, sleep and wake.
- [Beyond the catalog](https://docs.boxd.sh/guides/automations/beyond-the-catalog): Reach your own APIs, databases and cloud accounts from a script.
