# Playbooks SDK Methods

> The soat.playbooks methods of the SOAT TypeScript SDK for the Playbooks module, each linked to its REST operation.

# Playbooks

SDK methods for the Playbooks module, accessed via `soat.playbooks`. See the [Playbooks module docs](/docs/modules/playbooks) for permissions and data model, and each method's REST page for the full request/response schema.

### `soat.playbooks.listPlaybooks()`

List playbooks

- Method: `GET`
- Path: `/api/v1/playbooks`

```ts
await soat.playbooks.listPlaybooks({
  query: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbooks)

### `soat.playbooks.createPlaybook()`

Create a playbook

- Method: `POST`
- Path: `/api/v1/playbooks`

```ts
await soat.playbooks.createPlaybook({
  body: { name, definition, /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/create-playbook)

### `soat.playbooks.validatePlaybook()`

Validate a playbook definition

- Method: `POST`
- Path: `/api/v1/playbooks/validate`

```ts
await soat.playbooks.validatePlaybook({
  body: { definition },
});
```

→ [Request & response schema](/docs/api/playbooks/validate-playbook)

### `soat.playbooks.getPlaybook()`

Get a playbook

- Method: `GET`
- Path: `/api/v1/playbooks/{playbook_id}`

```ts
await soat.playbooks.getPlaybook({
  path: { playbook_id },
});
```

→ [Request & response schema](/docs/api/playbooks/get-playbook)

### `soat.playbooks.updatePlaybook()`

Update a playbook

- Method: `PATCH`
- Path: `/api/v1/playbooks/{playbook_id}`

```ts
await soat.playbooks.updatePlaybook({
  path: { playbook_id },
  body: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/update-playbook)

### `soat.playbooks.deletePlaybook()`

Delete a playbook

- Method: `DELETE`
- Path: `/api/v1/playbooks/{playbook_id}`

```ts
await soat.playbooks.deletePlaybook({
  path: { playbook_id },
});
```

→ [Request & response schema](/docs/api/playbooks/delete-playbook)

### `soat.playbooks.listPlaybookVersions()`

List a playbook's versions

- Method: `GET`
- Path: `/api/v1/playbooks/{playbook_id}/versions`

```ts
await soat.playbooks.listPlaybookVersions({
  path: { playbook_id },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbook-versions)

### `soat.playbooks.getPlaybookVersion()`

Fetch an archived playbook version

- Method: `GET`
- Path: `/api/v1/playbooks/{playbook_id}/versions/{version}`

```ts
await soat.playbooks.getPlaybookVersion({
  path: { playbook_id, version },
});
```

→ [Request & response schema](/docs/api/playbooks/get-playbook-version)

### `soat.playbooks.restorePlaybookVersion()`

Restore an archived playbook version

- Method: `POST`
- Path: `/api/v1/playbooks/{playbook_id}/versions/{version}/restore`

```ts
await soat.playbooks.restorePlaybookVersion({
  path: { playbook_id, version },
  body: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/restore-playbook-version)

### `soat.playbooks.createPlaybookCase()`

Create a case

- Method: `POST`
- Path: `/api/v1/playbooks/{playbook_id}/cases`

```ts
await soat.playbooks.createPlaybookCase({
  path: { playbook_id },
  body: { subject },
});
```

→ [Request & response schema](/docs/api/playbooks/create-playbook-case)

### `soat.playbooks.listPlaybookCases()`

List playbook cases

- Method: `GET`
- Path: `/api/v1/playbook-cases`

```ts
await soat.playbooks.listPlaybookCases({
  query: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbook-cases)

### `soat.playbooks.getPlaybookCase()`

Get a case

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}`

```ts
await soat.playbooks.getPlaybookCase({
  path: { case_id },
});
```

→ [Request & response schema](/docs/api/playbooks/get-playbook-case)

### `soat.playbooks.deletePlaybookCase()`

Delete a case

- Method: `DELETE`
- Path: `/api/v1/playbook-cases/{case_id}`

```ts
await soat.playbooks.deletePlaybookCase({
  path: { case_id },
});
```

→ [Request & response schema](/docs/api/playbooks/delete-playbook-case)

### `soat.playbooks.writePlaybookCaseInputs()`

Write a case's inputs

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/inputs`

```ts
await soat.playbooks.writePlaybookCaseInputs({
  path: { case_id },
  body: { inputs, /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/write-playbook-case-inputs)

### `soat.playbooks.getPlaybookCaseMissing()`

List what a node still needs

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/missing`

```ts
await soat.playbooks.getPlaybookCaseMissing({
  path: { case_id },
  query: { node_id },
});
```

→ [Request & response schema](/docs/api/playbooks/get-playbook-case-missing)

### `soat.playbooks.listPlaybookCaseEntries()`

List a case's entries

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/entries`

```ts
await soat.playbooks.listPlaybookCaseEntries({
  path: { case_id },
  query: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbook-case-entries)

### `soat.playbooks.runPlaybookCaseNode()`

Run a node of a case

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/nodes/{node}/run`

```ts
await soat.playbooks.runPlaybookCaseNode({
  path: { case_id, node },
  body: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/run-playbook-case-node)

### `soat.playbooks.listPlaybookCaseExecutions()`

List a case's executions

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/executions`

```ts
await soat.playbooks.listPlaybookCaseExecutions({
  path: { case_id },
  query: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbook-case-executions)

### `soat.playbooks.getPlaybookCaseExecution()`

Get an execution

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/executions/{execution_id}`

```ts
await soat.playbooks.getPlaybookCaseExecution({
  path: { case_id, execution_id },
});
```

→ [Request & response schema](/docs/api/playbooks/get-playbook-case-execution)

### `soat.playbooks.exportPlaybookCaseNode()`

Export a final node

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/nodes/{node}/exports`

```ts
await soat.playbooks.exportPlaybookCaseNode({
  path: { case_id, node },
  body: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/export-playbook-case-node)

### `soat.playbooks.listPlaybookCaseExports()`

List a case's exports

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/exports`

```ts
await soat.playbooks.listPlaybookCaseExports({
  path: { case_id },
  query: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbook-case-exports)

### `soat.playbooks.getPlaybookCaseExport()`

Get an export

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/exports/{export_id}`

```ts
await soat.playbooks.getPlaybookCaseExport({
  path: { case_id, export_id },
});
```

→ [Request & response schema](/docs/api/playbooks/get-playbook-case-export)

### `soat.playbooks.upgradePlaybookCase()`

Upgrade a case

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/upgrade`

```ts
await soat.playbooks.upgradePlaybookCase({
  path: { case_id },
  body: { /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/upgrade-playbook-case)

### `soat.playbooks.listPlaybookCaseUpgrades()`

List a case's upgrades

- Method: `GET`
- Path: `/api/v1/playbook-cases/{case_id}/upgrades`

```ts
await soat.playbooks.listPlaybookCaseUpgrades({
  path: { case_id },
});
```

→ [Request & response schema](/docs/api/playbooks/list-playbook-case-upgrades)

### `soat.playbooks.pausePlaybookCase()`

Pause a case

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/pause`

```ts
await soat.playbooks.pausePlaybookCase({
  path: { case_id },
});
```

→ [Request & response schema](/docs/api/playbooks/pause-playbook-case)

### `soat.playbooks.resumePlaybookCase()`

Resume a case

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/resume`

```ts
await soat.playbooks.resumePlaybookCase({
  path: { case_id },
});
```

→ [Request & response schema](/docs/api/playbooks/resume-playbook-case)

### `soat.playbooks.confirmPlaybookCaseNode()`

Confirm a node of a case

- Method: `POST`
- Path: `/api/v1/playbook-cases/{case_id}/nodes/{node}/confirmation`

```ts
await soat.playbooks.confirmPlaybookCaseNode({
  path: { case_id, node },
  body: { decision, expected_revisions, /* + optional */ },
});
```

→ [Request & response schema](/docs/api/playbooks/confirm-playbook-case-node)
