---
title: "Replace a firm's narrative activities (operators only)"
method: PUT
path: "/v1/admin/tenants/{tenant}/narrative-activities"
tags: ["admin"]
---

# Replace a firm's narrative activities (operators only)

`PUT /v1/admin/tenants/{tenant}/narrative-activities`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/admin/tenants/{tenant}/narrative-activities`
- Auth: HTTP bearer

The firm's narrative activities, by rank: the rank is the precedence, the first row whose `when` the evidence meets opens the line. Each row has a key, when it applies (English, stated by instrument) and a pattern per language. `language` is the firm's default narrative language. The body is the whole table in rank order, and it replaces the firm's rows in one transaction: adding, removing, renaming and re-ranking are all this one write. Refused with 400, the rows left as they were, for an empty table, a repeated key, a size past its bound, or a table where no row has a pattern in the firm's default language.

## Path parameters

- `tenant` string, required

## Request body

- object
  - `activities` object[], required
    - `key` string, required
    - `when` string, required
    - `patterns` object, required
      - `nl` string
      - `en` string
      - `de` string
      - `fr` string
      - `es` string
      - `it` string
      - `pt` string
      - `pl` string
      - `sv` string
      - `da` string

## Response `200`

The firm's activities as they now stand.

- object
  - `tenant` object, required
    - `id` string, required
    - `name` string, required
  - `language` 'nl' | 'en' | 'de' | 'fr' | 'es' | 'it' | 'pt' | 'pl' | 'sv' | 'da' | 'en-GB' | 'pt-PT', required
  - `activities` object[], required
    - `key` string, required
    - `when` string, required
    - `patterns` object, required
      - `nl` string
      - `en` string
      - `de` string
      - `fr` string
      - `es` string
      - `it` string
      - `pt` string
      - `pl` string
      - `sv` string
      - `da` string

## Other responses

- `400`: The body, query or path did not validate; `errors` lists the fields.
- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.
- `404`: No such row for this tenant.
- `409`: The id or the email already belongs to something else.
- `503`: A capability this service was not configured with, or a practice system that could not be reached; the `type` says which.

---

[API](https://skmtc.dev/sixminute/apis/sixminute-api.md) - [All operations](https://skmtc.dev/sixminute/apis/sixminute-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sixminute/apis/sixminute-api/revisions/605577eadc10?raw)
