Skip to main content
Two objects decide what happens in a meeting. Settings hold values: record or not, how the bot records, the transcription language, the summary, the branding. Assignments say where they apply: a scope, a list of conditions that must all hold. Every workspace, member and meeting carries the result as its settings block.

Scopes

A condition is <kind>:<set>: the kind is plural, the set is one item or a group. A scope names exactly one who: your account, a workspace or a member. A meeting condition stands alone: it implies its workspace. A member implies their workspace, and a workspace your account. What you want, as scopes: An accounts: scope takes no other condition yet. A scope with a category sets only recording.enabled. Branding is set on a workspaces: scope alone. A meeting takes no recording.methods.bot.start: the bot’s start is chosen before it is dispatched. A meeting started by a bot keeps what POST /bots sent; it takes no assignment.

Set them

Create settings and assign them in one call. A name helps you find them again:
A scope set is assigned once: a second POST for the same scope answers 409 scope_taken naming the assignment. Change the settings it applies instead:
Reuse one object anywhere, here for one more category:
Delete an assignment to stop applying it there. Delete settings once nothing assigns them (409 settings_in_use until then). Your account starts with its own settings detecting the language (transcription.language: auto), assigned to the account: every workspace you create inherits them, with nothing to set per workspace.

Values and codes

A field is a value or a code, never null (422 invalid): inherit is stored: a member whose language is inherit follows the workspace’s language, now and after you change it.

Which setting wins

For each field of a meeting, the most specific assignment that sets it:
  1. meetings:mtg_…
  2. calendar_event_series:
  3. members: with categories
  4. members:
  5. workspaces: with categories
  6. workspaces:
  7. accounts:
  8. happyscribe_defaults, read with GET /settings/happyscribe_defaults.
Within one step, a scope with more conditions wins. Two assignments that tie on recording.enabled don’t record. Any other field can’t tie: an assignment that would set a different value on the same step as another answers 409 settings_conflict. The settings block on the meeting says what applies and, in sources, which assignment supplied each field. When none did, reason says why: happyscribe_default; for a bot’s meeting, bot_request; and for recording, no_meeting_url, unsupported_platform, no_calendar_event, member_paused and bot_cancelled.