{
  "openapi": "3.0.1",
  "info": {
    "title": "CivicRecap public API",
    "description": "The public read surface of CivicRecap: civic meetings, the bodies that\nheld them, the places those bodies serve, and the agenda-anchored\nhighlight clips and written briefings made from the recordings.\n\nFinding a meeting is public; reading one is not. Every list, profile and\nsearch below answers an anonymous caller. `GET /api/meetings/{id}`\nanswers one too, but with a redacted teaser — the title, the body, the\ndate, the agenda items and the published clips — and marks it\n`\"gated\": true`. The record itself (transcript, briefing, recording)\nneeds either a session cookie (`cr_session`, minted by signing in at\n/signin through the hosted identity provider) or a share grant: `?st=`\non a link a signed-in reader passed on, good for that one meeting for 14\ndays.\n\nMedia is never handed out as a permanent URL. `GET /api/media/{key}` is\nthree tiers in one route: the meeting poster is open, so a share-card\nunfurler can fetch it with no credential; a rendered clip, the web\nrendition, our copy of the agenda PDF and a briefing figure need a\nsignature minted per visit by `GET /api/meetings/{id}/clips`, `/video`,\n`/agenda` and `/graphics`; everything else — the source recording and\nevery pipeline artifact — is 403 whatever is presented. There are no\ndownloads.\n\nAccess is declared where a machine can read it: every gated operation\ncarries `security` against the named schemes in\n`components.securitySchemes` — `session` (the `cr_session` cookie),\n`share_grant` (the `st=` token and its redeemed `cr_share` cookie),\n`media_signature` (the pre-signed media URLs), `email_graphic` (the\nnon-expiring `eg` grant a figure carries when it was mailed rather than\nrendered on a page) and `agent_token` (a bearer token an operator mints\nby hand for the read-only agent surface at `/api/agent/*`). Those five\nare the whole set. There is still no OAuth authorization server, no\ntoken endpoint and therefore deliberately no\n`/.well-known/oauth-protected-resource`: the agent token is minted by a\nperson pressing a button on an operator page, never by an exchange a\ncaller can drive, and publishing scopes nothing can request would\nadvertise doors that do not open. An operation with no `security`\nanswers an anonymous caller in full.\n\nErrors are JSON: `{ \"error\": \"<code>\", \"message\": \"…\", \"hint\": \"…\" }`.\n\nProse versions of the public pages are available by content negotiation\n— send `Accept: text/markdown` to any page URL on the site (or read\n/llms.txt, /sitemap.xml).\n\nThis document is the complete description; the same API written out in\nprose, with an example request and the rest of the machine-readable\nsurfaces, is at https://www.civicrecap.com/developers. `GET /api` is the\nsame set of pointers as JSON.",
    "contact": {
      "name": "CivicRecap",
      "url": "https://www.civicrecap.com/",
      "email": "support@civicrecap.com"
    },
    "version": "625ca5e70"
  },
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/health/ready": {
      "get": {
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/version": {
      "get": {
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/version": {
      "get": {
        "tags": [
          "version"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "What this API is, and where it is described.",
        "description": "An index for a caller that arrived at the API root: the pointers to /openapi.json and the prose documentation, and the endpoints to start from.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/meetings/stream": {
      "get": {
        "tags": [
          "meetings"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/meetings/{id}": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "One meeting, by id.",
        "description": "The full record for a caller who may read it (session cookie, or a `st=` share grant for this meeting); otherwise a redacted teaser marked `gated: true` — title, body, date, agenda items, chapters, published clips, and a taste of the briefing (`newsletter_teaser`: the headline, the Worth watching bullets and the first topic, clamped). 404 means no such meeting.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { },
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{slug}": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "One meeting, by shareable slug.",
        "description": "The same DTO as the id route, addressed the way public links spell it (`2bc89f-samtrans-board-2026-05-12`). A truncated slug still resolves on its leading id.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { },
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/transcript": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "The word-timestamped transcript.",
        "description": "The refined transcript where one exists, `?raw=1` for the untouched ASR output, `?words=0` for the same document without the per-word timestamps. Needs an account or a share grant.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/newsletter": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "The written briefing for this meeting.",
        "description": "Served already edited: sentences the independent claim check could not stand behind are removed here, so every surface publishes the same copy. While the check is enabled and its verdicts have not landed, answers `{\"pending_verification\": true}` rather than the unchecked document. Needs an account or a share grant.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/agenda-summary": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/meetings/{id}/graphics": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/claims": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/media/{key}": {
      "get": {
        "tags": [
          "media"
        ],
        "summary": "Media bytes, by object key.",
        "description": "Range-capable, and three tiers by key shape. The meeting poster (`meetings/{id}/poster.jpg`) is open and answers a caller with no credential at all. A rendered clip, the 720p rendition, our copy of the agenda PDF and a briefing figure need a live `sig` signature, minted by `GET /api/meetings/{id}/clips`, `/video`, `/agenda` and `/graphics`; a figure that was mailed carries a non-expiring `eg` grant instead. Everything else — the source recording and every pipeline artifact — is 403 whichever credential is presented, existing or not. Nothing here is downloadable as a permanent URL.",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { },
          {
            "media_signature": [ ]
          },
          {
            "email_graphic": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/video": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/recap": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/agenda": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/{id}/clips": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "Signed URLs for this meeting's published clips.",
        "description": "One short-lived signature per published clip, minted per visit. Proposals, dismissed clips and alternate analysis versions are not minted.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/meetings/{id}/community-clips": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "Signed URLs for this meeting's community clips.",
        "description": "One short-lived, watch-only signature per ready reader-created clip in the meeting's deduplicated public community set.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/meetings/{id}/share": {
      "get": {
        "tags": [
          "meetings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/share/record": {
      "post": {
        "tags": [
          "share"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/share/redeem": {
      "post": {
        "tags": [
          "share"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/events": {
      "get": {
        "tags": [
          "events"
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          },
          {
            "share_grant": [ ]
          }
        ]
      }
    },
    "/api/meetings/browse": {
      "get": {
        "tags": [
          "meetings"
        ],
        "summary": "Search and browse the meeting corpus.",
        "description": "Faceted: filter by state, county, city, body kind, body or year; facet counts are computed against the other active filters. `group_by=agency` splits the scope by the body that held each meeting.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "county",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "city",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "agency",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "agency_slug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_slug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "follow_agency",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "follow_place",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "group_by",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "per_group",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agencies": {
      "get": {
        "tags": [
          "agencies"
        ],
        "summary": "Every public body on the record.",
        "description": "The whole directory, unpaged, ordered by how much of the record each body holds.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agencies/{slug}": {
      "get": {
        "tags": [
          "agencies"
        ],
        "summary": "One public body.",
        "description": "Name, kind, the places it serves and how many meetings are held. A body merged into another still answers at its retired slug.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/in/{place}/{body}": {
      "get": {
        "tags": [
          "in"
        ],
        "summary": "One public body, addressed under the place it serves.",
        "description": "The same profile as /api/agencies/{slug}, canonical `path` included. A place segment matching two bodies fails closed rather than guessing.",
        "parameters": [
          {
            "name": "place",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "body",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/places": {
      "get": {
        "tags": [
          "places"
        ],
        "summary": "Every place the corpus covers.",
        "description": "Cities and counties with at least one meeting on the record — offering anywhere else would be a dead end.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/search/locations": {
      "get": {
        "tags": [
          "search"
        ],
        "summary": "Find a place or a body by name, address or ZIP.",
        "description": "The home page's front door. An empty query answers with the places holding the most of the record rather than with an error.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/places/{slug}": {
      "get": {
        "tags": [
          "places"
        ],
        "summary": "One place, and the bodies that serve it.",
        "description": "The profile header for /places/{slug}; the meetings under it come from /api/meetings/browse scoped by the same slug.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/geo": {
      "get": {
        "tags": [
          "geo"
        ],
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "region",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/search/geo": {
      "get": {
        "tags": [
          "search"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/search/geo/resolve": {
      "get": {
        "tags": [
          "search"
        ],
        "parameters": [
          {
            "name": "place_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agencies/{slug}/upcoming": {
      "get": {
        "tags": [
          "agencies"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/upcoming": {
      "get": {
        "tags": [
          "upcoming"
        ],
        "summary": "Meetings coming up, scoped by place or body.",
        "description": "The one upcoming list the whole site uses: each body's next few meetings inside the 30-day window the crawl detects in.",
        "parameters": [
          {
            "name": "follow_agency",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "follow_place",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "place_slug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "within_days",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "per_body",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/user-clips": {
      "post": {
        "tags": [
          "user-clips"
        ],
        "summary": "Trim a reader-owned clip out of a meeting.",
        "description": "Renders the span from the watermarked playback rendition. The clip is listed to its owner, keeps its own share slug and download, and appears on the meeting page once ready unless it duplicates a curated clip. At most 300 seconds long and 10 per meeting per account.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserClipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      },
      "get": {
        "tags": [
          "user-clips"
        ],
        "summary": "Your own private clips of one meeting.",
        "parameters": [
          {
            "name": "meeting_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/user-clips/auto": {
      "post": {
        "tags": [
          "user-clips"
        ],
        "summary": "Pre-fill a private clip span around the playhead.",
        "description": "Reads the transcript from the given start, asks the configured cloud model where the discussion starts and finishes, clamps the start to the preceding 30 seconds and the end to at most 180 seconds, and snaps both to transcript boundaries. It creates no row; the editor's Make clip action does that. Requires `pipeline.AutoClips`, a usable cloud route, a transcript and enough recording left after the start point; refuses rather than guessing when any of them is missing. Rate limited in its own bucket, because every press spends provider money.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoUserClipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/user-clips/{id}": {
      "delete": {
        "tags": [
          "user-clips"
        ],
        "summary": "Delete your own clip, and with it its share link.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/user-clips/{id}/download": {
      "get": {
        "tags": [
          "user-clips"
        ],
        "summary": "Download your own clip as an mp4.",
        "description": "The one download this site serves (operator decision, task 185), and only to the account that made the clip. The mp4 carries the same burned-in watermark the meeting's playback rendition does. A share link mints a watch-only signature instead — the download flag is inside the HMAC, so it cannot be added to one.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/user-clips/shared/{slug}": {
      "get": {
        "tags": [
          "user-clips"
        ],
        "summary": "A shared clip, by its slug.",
        "description": "Answers anyone holding the link — the slug is the credential — with a short-lived, watch-only playback URL. Permanent until the clip's owner or an operator deletes it; 404 for a slug that names nothing, a clip that has not rendered, and a clip that is gone alike.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/user-clips/shared/{slug}/share": {
      "post": {
        "tags": [
          "user-clips"
        ],
        "summary": "Count a press of a private clip's share control.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/user-clips/shared/{slug}/visit": {
      "post": {
        "tags": [
          "user-clips"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/session": {
      "get": {
        "tags": [
          "auth"
        ],
        "summary": "Who this caller is.",
        "description": "The account behind the `cr_session` cookie (or none), which sign-in providers this deployment has configured, and — when Clerk is one of them and its publishable key is set — that key, which is public by design and is what lets the sign-in modal open in place.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/logout": {
      "post": {
        "tags": [
          "auth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/oidc/{provider}/start": {
      "get": {
        "tags": [
          "auth"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "return_to",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/oidc/{provider}/callback": {
      "get": {
        "tags": [
          "auth"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/me/follows": {
      "get": {
        "tags": [
          "me"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      },
      "put": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FollowsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/account": {
      "get": {
        "tags": [
          "me"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      },
      "patch": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      },
      "delete": {
        "tags": [
          "me"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/account/email/start": {
      "post": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartEmailChangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/account/email/confirm": {
      "post": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmEmailChangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/account/password": {
      "put": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/account/phone": {
      "put": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPhoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      },
      "delete": {
        "tags": [
          "me"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/export": {
      "get": {
        "tags": [
          "me"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/me/email-prefs": {
      "get": {
        "tags": [
          "me"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      },
      "put": {
        "tags": [
          "me"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEmailPrefsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "session": [ ]
          }
        ]
      }
    },
    "/api/email/unsubscribe": {
      "post": {
        "tags": [
          "email"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/drills/{token}/schedule": {
      "get": {
        "tags": [
          "drills"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/drills/{token}/meeting": {
      "get": {
        "tags": [
          "drills"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agent": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/issues": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/logs": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "sources",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "levels",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "worker_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "meeting_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "task_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/tasks/{id}/events": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/meetings": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "county",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "city",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "gap",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "video",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "attachments",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "summary",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "clips",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "group_by",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "per_group",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "include_upcoming",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "include_bare",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "past",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/meetings/gaps": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/meetings/{id}": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/workers": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/live": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/drills": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/costs": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "group",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/sources": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/agencies": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/places": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/models": {
      "get": {
        "tags": [
          "agent"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/settings/{family}": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "family",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}": {
      "get": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/discovered/{id}/import": {
      "post": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/discovered/{id}/same-body": {
      "post": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/meetings/{id}/rerun/{stage}": {
      "post": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "stage",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/tasks/{id}/retry": {
      "post": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/sources/{id}/bodies": {
      "put": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSourceBodiesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/meetings/{id}/agency": {
      "put": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignMeetingAgencyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    },
    "/api/agent/completion/{runId}/places/{id}/candidates": {
      "post": {
        "tags": [
          "agent"
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCandidatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "agent_token": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptBodyDecision": {
        "required": [
          "mode",
          "agency_id"
        ],
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "nullable": true
          },
          "agency_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "nullable": true
      },
      "AcceptCandidateRequest": {
        "required": [
          "body"
        ],
        "type": "object",
        "properties": {
          "body": {
            "$ref": "#/components/schemas/AcceptBodyDecision"
          }
        },
        "nullable": true
      },
      "AgencyPlaceRef": {
        "required": [
          "name",
          "state"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AnalysisJudgmentEntry": {
        "required": [
          "kind",
          "key",
          "winner"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "winner": {
            "type": "string"
          }
        }
      },
      "AutoUserClipRequest": {
        "required": [
          "meeting_id",
          "start"
        ],
        "type": "object",
        "properties": {
          "meeting_id": {
            "type": "string",
            "format": "uuid"
          },
          "start": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "CaptureChunk": {
        "required": [
          "sequence",
          "started_at",
          "mime_type",
          "data"
        ],
        "type": "object",
        "properties": {
          "sequence": {
            "type": "integer",
            "format": "int32"
          },
          "started_at": {
            "type": "string",
            "format": "date-time"
          },
          "mime_type": {
            "type": "string"
          },
          "data": {
            "type": "string",
            "format": "byte"
          }
        }
      },
      "ChecklistItemRequest": {
        "required": [
          "label",
          "kind",
          "scope",
          "search_hint",
          "enabled",
          "sort_order"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          },
          "search_hint": {
            "type": "string",
            "nullable": true
          },
          "enabled": {
            "type": "boolean",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ClaimRequest": {
        "required": [
          "worker_id",
          "hostname",
          "version",
          "capabilities",
          "accepted_types"
        ],
        "type": "object",
        "properties": {
          "worker_id": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "capabilities": {
            "$ref": "#/components/schemas/WorkerCapabilities"
          },
          "accepted_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "update_status": {
            "$ref": "#/components/schemas/WorkerUpdateStatus"
          }
        }
      },
      "ClientLogBatch": {
        "required": [
          "entries",
          "session"
        ],
        "type": "object",
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientLogEntry"
            },
            "nullable": true
          },
          "session": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ClientLogEntry": {
        "required": [
          "at",
          "level",
          "message",
          "detail",
          "url",
          "meeting_id"
        ],
        "type": "object",
        "properties": {
          "at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "level": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "meeting_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        }
      },
      "ClipReportRequest": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          },
          "aspect": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "note": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "CompleteRequest": {
        "required": [
          "lease_token",
          "result",
          "artifacts"
        ],
        "type": "object",
        "properties": {
          "lease_token": {
            "type": "string",
            "format": "uuid"
          },
          "result": {
            "$ref": "#/components/schemas/NullableOfJsonElement"
          },
          "artifacts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ConfirmEmailChangeRequest": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateAnalysisVersionRequest": {
        "required": [
          "engine",
          "model",
          "label"
        ],
        "type": "object",
        "properties": {
          "engine": {
            "type": "string",
            "nullable": true
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateAttachmentRequest": {
        "required": [
          "kind",
          "source_url"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          }
        }
      },
      "CreateClipRequest": {
        "required": [
          "meeting_id",
          "start",
          "end",
          "title"
        ],
        "type": "object",
        "properties": {
          "meeting_id": {
            "type": "string",
            "format": "uuid"
          },
          "start": {
            "type": "number",
            "format": "double"
          },
          "end": {
            "type": "number",
            "format": "double"
          },
          "title": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateMeetingRequest": {
        "required": [
          "source_url",
          "agenda_url",
          "title",
          "agency",
          "date"
        ],
        "type": "object",
        "properties": {
          "source_url": {
            "type": "string",
            "nullable": true
          },
          "agenda_url": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "agency": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "time": {
            "type": "string",
            "format": "time",
            "default": null,
            "nullable": true
          }
        }
      },
      "CreateNoopRequest": {
        "type": "object",
        "properties": {
          "delay_ms": {
            "type": "integer",
            "format": "int32",
            "default": null,
            "nullable": true
          },
          "fail": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "CreateSourceRequest": {
        "required": [
          "url",
          "label"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateUserClipRequest": {
        "required": [
          "meeting_id",
          "start",
          "end"
        ],
        "type": "object",
        "properties": {
          "meeting_id": {
            "type": "string",
            "format": "uuid"
          },
          "start": {
            "type": "number",
            "format": "double"
          },
          "end": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "DrillRequest": {
        "required": [
          "live_url",
          "label",
          "starts_at",
          "max_capture_minutes",
          "worker_id",
          "phrase",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "live_url": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "max_capture_minutes": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "worker_id": {
            "type": "string",
            "nullable": true
          },
          "phrase": {
            "type": "string",
            "nullable": true
          },
          "timezone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EnrollRequest": {
        "required": [
          "worker_id",
          "hostname",
          "capabilities"
        ],
        "type": "object",
        "properties": {
          "worker_id": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "capabilities": {
            "$ref": "#/components/schemas/WorkerCapabilities"
          }
        }
      },
      "FailRequest": {
        "required": [
          "lease_token",
          "error",
          "retryable"
        ],
        "type": "object",
        "properties": {
          "lease_token": {
            "type": "string",
            "format": "uuid"
          },
          "error": {
            "type": "string"
          },
          "retryable": {
            "type": "boolean"
          },
          "detail": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "FileCandidatesRequest": {
        "required": [
          "token",
          "proposals"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "proposals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceCandidateProposal"
            },
            "nullable": true
          },
          "verification": {
            "$ref": "#/components/schemas/VerificationReport"
          }
        }
      },
      "FollowEmailPrefRequest": {
        "required": [
          "kind",
          "slug",
          "digest_enabled",
          "reminders_enabled",
          "name",
          "state"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "slug": {
            "type": "string",
            "nullable": true
          },
          "digest_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "reminders_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FollowRequest": {
        "required": [
          "kind",
          "slug",
          "name",
          "state"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "slug": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FollowsRequest": {
        "required": [
          "follows"
        ],
        "type": "object",
        "properties": {
          "follows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FollowRequest"
            },
            "nullable": true
          }
        }
      },
      "HeartbeatRequest": {
        "required": [
          "lease_token"
        ],
        "type": "object",
        "properties": {
          "lease_token": {
            "type": "string",
            "format": "uuid"
          },
          "stage": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "percent": {
            "type": "number",
            "format": "double",
            "default": null,
            "nullable": true
          }
        }
      },
      "ImportDiscoveredRequest": {
        "required": [
          "source_url"
        ],
        "type": "object",
        "properties": {
          "source_url": {
            "type": "string",
            "nullable": true
          }
        },
        "nullable": true
      },
      "InvestigateRequest": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MergeAgencyRequest": {
        "required": [
          "into"
        ],
        "type": "object",
        "properties": {
          "into": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "MintAgentTokenRequest": {
        "required": [
          "name",
          "days"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ModelPrice": {
        "required": [
          "input_per_mtok",
          "output_per_mtok",
          "cache_read_per_mtok",
          "cache_write_per_mtok"
        ],
        "type": "object",
        "properties": {
          "input_per_mtok": {
            "type": "number",
            "format": "double"
          },
          "output_per_mtok": {
            "type": "number",
            "format": "double"
          },
          "cache_read_per_mtok": {
            "type": "number",
            "format": "double"
          },
          "cache_write_per_mtok": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "MultipartAbortRequest": {
        "required": [
          "key",
          "upload_id"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "upload_id": {
            "type": "string"
          }
        }
      },
      "MultipartBeginRequest": {
        "required": [
          "key",
          "content_type",
          "part_count"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          },
          "part_count": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MultipartCompleteRequest": {
        "required": [
          "key",
          "upload_id",
          "parts"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "upload_id": {
            "type": "string"
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultipartPart"
            }
          }
        }
      },
      "MultipartPart": {
        "required": [
          "part_number",
          "etag"
        ],
        "type": "object",
        "properties": {
          "part_number": {
            "type": "integer",
            "format": "int32"
          },
          "etag": {
            "type": "string"
          }
        }
      },
      "NewAgencyRequest": {
        "required": [
          "name",
          "kind",
          "city",
          "state"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          }
        },
        "nullable": true
      },
      "NullableOfJsonElement": {
        "nullable": true
      },
      "OnboardPlaceRequest": {
        "required": [
          "name",
          "state",
          "county",
          "google_place_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "google_place_id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ReassignMeetingAgencyRequest": {
        "required": [
          "agency_id"
        ],
        "type": "object",
        "properties": {
          "agency_id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "RecipeProbeRequest": {
        "required": [
          "token",
          "url",
          "recipe"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "recipe": {
            "$ref": "#/components/schemas/NullableOfJsonElement"
          }
        }
      },
      "RecordShareRequest": {
        "required": [
          "meeting_id",
          "token"
        ],
        "type": "object",
        "properties": {
          "meeting_id": {
            "type": "string",
            "format": "uuid"
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "clip_id": {
            "type": "string",
            "format": "uuid",
            "default": null,
            "nullable": true
          }
        }
      },
      "RecordingAttachBody": {
        "required": [
          "url",
          "body_channel"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "body_channel": {
            "type": "boolean",
            "nullable": true
          }
        },
        "nullable": true
      },
      "RedeemShareRequest": {
        "required": [
          "meeting_id",
          "token"
        ],
        "type": "object",
        "properties": {
          "meeting_id": {
            "type": "string",
            "format": "uuid"
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "clip_id": {
            "type": "string",
            "format": "uuid",
            "default": null,
            "nullable": true
          }
        }
      },
      "ReimportBody": {
        "required": [
          "scope"
        ],
        "type": "object",
        "properties": {
          "scope": {
            "type": "string",
            "nullable": true
          }
        },
        "nullable": true
      },
      "ReleaseRequest": {
        "required": [
          "lease_token"
        ],
        "type": "object",
        "properties": {
          "lease_token": {
            "type": "string",
            "format": "uuid"
          },
          "reason": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "ResearchPinRequest": {
        "required": [
          "pinned"
        ],
        "type": "object",
        "properties": {
          "pinned": {
            "type": "boolean",
            "nullable": true
          }
        },
        "nullable": true
      },
      "ResearchProofMeeting": {
        "required": [
          "title",
          "date",
          "page_url",
          "media_url",
          "agenda_url"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "nullable": true
          },
          "page_url": {
            "type": "string",
            "nullable": true
          },
          "media_url": {
            "type": "string",
            "nullable": true
          },
          "agenda_url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ResearchSampleMeeting": {
        "required": [
          "title",
          "date"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ResearchVideoCheck": {
        "required": [
          "downloaded",
          "published",
          "duration_seconds",
          "note"
        ],
        "type": "object",
        "properties": {
          "downloaded": {
            "type": "boolean",
            "nullable": true
          },
          "published": {
            "type": "string",
            "nullable": true
          },
          "duration_seconds": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          }
        },
        "nullable": true
      },
      "ResolveOutcomeRequest": {
        "required": [
          "door",
          "note"
        ],
        "type": "object",
        "properties": {
          "door": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SaveAnalysisJudgmentsRequest": {
        "required": [
          "a",
          "b",
          "judgments"
        ],
        "type": "object",
        "properties": {
          "a": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "b": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "judgments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisJudgmentEntry"
            },
            "nullable": true
          }
        }
      },
      "SetPasswordRequest": {
        "required": [
          "password"
        ],
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SetPhoneRequest": {
        "required": [
          "phone"
        ],
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SocialRenderRequestBody": {
        "required": [
          "clip_id"
        ],
        "type": "object",
        "properties": {
          "clip_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        }
      },
      "SourceBodyAssignment": {
        "required": [
          "body_name",
          "agency_id",
          "new_agency"
        ],
        "type": "object",
        "properties": {
          "body_name": {
            "type": "string",
            "nullable": true
          },
          "agency_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "new_agency": {
            "$ref": "#/components/schemas/NewAgencyRequest"
          },
          "timezone": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "SourceCandidateProposal": {
        "required": [
          "body_name",
          "checklist_item_id",
          "item_label",
          "url",
          "role",
          "platform",
          "has_agendas",
          "has_video",
          "archive_depth",
          "newest_meeting_date",
          "sample_meetings",
          "sample_agenda_url",
          "sample_video_url",
          "sample_video_check",
          "citation_urls"
        ],
        "type": "object",
        "properties": {
          "body_name": {
            "type": "string",
            "nullable": true
          },
          "checklist_item_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "item_label": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "platform": {
            "type": "string",
            "nullable": true
          },
          "has_agendas": {
            "type": "boolean",
            "nullable": true
          },
          "has_video": {
            "type": "boolean",
            "nullable": true
          },
          "archive_depth": {
            "type": "string",
            "nullable": true
          },
          "newest_meeting_date": {
            "type": "string",
            "nullable": true
          },
          "sample_meetings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResearchSampleMeeting"
            },
            "nullable": true
          },
          "sample_agenda_url": {
            "type": "string",
            "nullable": true
          },
          "sample_video_url": {
            "type": "string",
            "nullable": true
          },
          "sample_video_check": {
            "$ref": "#/components/schemas/ResearchVideoCheck"
          },
          "citation_urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "recipe": {
            "default": null
          },
          "proof_meetings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResearchProofMeeting"
            },
            "default": null,
            "nullable": true
          }
        }
      },
      "StartEmailChangeRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TestEmailRequest": {
        "required": [
          "to",
          "subject",
          "mjml"
        ],
        "type": "object",
        "properties": {
          "to": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "mjml": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateAgencyRequest": {
        "required": [
          "name",
          "kind",
          "timezone",
          "jurisdictions"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "nullable": true
          },
          "timezone": {
            "type": "string",
            "nullable": true
          },
          "jurisdictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgencyPlaceRef"
            },
            "nullable": true
          }
        }
      },
      "UpdateAuthSettingsRequest": {
        "required": [
          "signups_enabled",
          "session_days",
          "clerk_domain",
          "clerk_client_id",
          "clerk_client_secret",
          "clear_clerk_client_secret",
          "clerk_secret_key",
          "clear_clerk_secret_key",
          "clerk_publishable_key"
        ],
        "type": "object",
        "properties": {
          "signups_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "session_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clerk_domain": {
            "type": "string",
            "nullable": true
          },
          "clerk_client_id": {
            "type": "string",
            "nullable": true
          },
          "clerk_client_secret": {
            "type": "string",
            "nullable": true
          },
          "clear_clerk_client_secret": {
            "type": "boolean",
            "nullable": true
          },
          "clerk_secret_key": {
            "type": "string",
            "nullable": true
          },
          "clear_clerk_secret_key": {
            "type": "boolean",
            "nullable": true
          },
          "clerk_publishable_key": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateClipRequest": {
        "required": [
          "start",
          "end",
          "title"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "end": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateEmailPrefsRequest": {
        "required": [
          "follows",
          "digest_default",
          "reminders_default"
        ],
        "type": "object",
        "properties": {
          "follows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FollowEmailPrefRequest"
            },
            "nullable": true
          },
          "digest_default": {
            "type": "boolean",
            "nullable": true
          },
          "reminders_default": {
            "type": "boolean",
            "nullable": true
          },
          "auto_import_enabled": {
            "type": "boolean",
            "default": null,
            "nullable": true
          },
          "live_capture_enabled": {
            "type": "boolean",
            "default": null,
            "nullable": true
          }
        }
      },
      "UpdateEmailSettingsRequest": {
        "required": [
          "enabled",
          "from_address",
          "digest_hour_utc",
          "reminder_lead_hours",
          "resend_api_key",
          "clear_resend_api_key"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "nullable": true
          },
          "from_address": {
            "type": "string",
            "nullable": true
          },
          "digest_hour_utc": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reminder_lead_hours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resend_api_key": {
            "type": "string",
            "nullable": true
          },
          "clear_resend_api_key": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "UpdateEmailTemplateRequest": {
        "required": [
          "subject",
          "mjml"
        ],
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "nullable": true
          },
          "mjml": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateListingSettingsRequest": {
        "required": [
          "enabled",
          "crawl_interval_hours",
          "lookback_days",
          "max_import_age_days",
          "auto_preview",
          "auto_import",
          "auto_import_not_before",
          "complete_imported_meetings",
          "recording_lead_every_days",
          "auto_research_recordings",
          "recording_research_every_days",
          "completion_runs",
          "completion_run_hour_utc",
          "completion_run_budget_usd",
          "lookahead_days",
          "recheck_window_days",
          "agenda_only_after_days",
          "auto_approve_research",
          "research_fix_plans",
          "max_pages",
          "crawl_timeout_seconds"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "nullable": true
          },
          "crawl_interval_hours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lookback_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "max_import_age_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "auto_preview": {
            "type": "boolean",
            "nullable": true
          },
          "auto_import": {
            "type": "boolean",
            "nullable": true
          },
          "auto_import_not_before": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "complete_imported_meetings": {
            "type": "boolean",
            "nullable": true
          },
          "recording_lead_every_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "auto_research_recordings": {
            "type": "boolean",
            "nullable": true
          },
          "recording_research_every_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "completion_runs": {
            "type": "boolean",
            "nullable": true
          },
          "completion_run_hour_utc": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "completion_run_budget_usd": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "lookahead_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "recheck_window_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "agenda_only_after_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "auto_approve_research": {
            "type": "string",
            "nullable": true
          },
          "research_fix_plans": {
            "type": "boolean",
            "nullable": true
          },
          "max_pages": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "crawl_timeout_seconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "UpdateLlmSettingsRequest": {
        "required": [
          "cloud_enabled",
          "cloud_provider",
          "cloud_model",
          "anthropic_api_key",
          "openrouter_api_key",
          "clear_anthropic_api_key",
          "clear_openrouter_api_key",
          "openrouter_endpoint",
          "openrouter_app_url",
          "openrouter_app_title",
          "openrouter_providers",
          "openrouter_data_collection",
          "stage_engines",
          "stage_cloud_models",
          "model_reasoning",
          "model_pricing",
          "transcript_refine_enabled",
          "cloud_batch_enabled",
          "cloud_parallelism"
        ],
        "type": "object",
        "properties": {
          "cloud_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "cloud_provider": {
            "type": "string",
            "nullable": true
          },
          "cloud_model": {
            "type": "string",
            "nullable": true
          },
          "anthropic_api_key": {
            "type": "string",
            "nullable": true
          },
          "openrouter_api_key": {
            "type": "string",
            "nullable": true
          },
          "clear_anthropic_api_key": {
            "type": "boolean",
            "nullable": true
          },
          "clear_openrouter_api_key": {
            "type": "boolean",
            "nullable": true
          },
          "openrouter_endpoint": {
            "type": "string",
            "nullable": true
          },
          "openrouter_app_url": {
            "type": "string",
            "nullable": true
          },
          "openrouter_app_title": {
            "type": "string",
            "nullable": true
          },
          "openrouter_providers": {
            "type": "string",
            "nullable": true
          },
          "openrouter_data_collection": {
            "type": "string",
            "nullable": true
          },
          "stage_engines": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "stage_cloud_models": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "model_reasoning": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "model_pricing": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ModelPrice"
            },
            "nullable": true
          },
          "transcript_refine_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "cloud_batch_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "cloud_parallelism": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "UpdatePipelineSettingsRequest": {
        "required": [
          "serialize_imports",
          "verify_claims_enabled",
          "verify_claims_max_claims",
          "graphics_enabled",
          "auto_render_clips",
          "recap_reels",
          "recap_backsweep",
          "recap_rerender",
          "retire_originals",
          "social_renders",
          "social_aspects",
          "social_top_clips",
          "topic_clip_max_seconds",
          "clip_selectivity",
          "social_backsweep",
          "clip_verify_backsweep",
          "merge_duplicate_meetings",
          "user_clips",
          "auto_clips",
          "standardize_titles",
          "clip_cold_read",
          "retry_no_stream_download_days",
          "max_live_capture_hours",
          "live_capture",
          "live_browser_reads",
          "live_display_name",
          "live_join_email",
          "live_join_wait_minutes",
          "live_never_after_windows",
          "live_forecast",
          "live_forecast_hours",
          "live_channel_join",
          "guardrail_quote_tolerance",
          "guardrail_require_quotes",
          "guardrail_confidence_floor",
          "guardrail_figure_policy"
        ],
        "type": "object",
        "properties": {
          "serialize_imports": {
            "type": "boolean",
            "nullable": true
          },
          "verify_claims_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "verify_claims_max_claims": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "graphics_enabled": {
            "type": "boolean",
            "nullable": true
          },
          "auto_render_clips": {
            "type": "boolean",
            "nullable": true
          },
          "recap_reels": {
            "type": "boolean",
            "nullable": true
          },
          "recap_backsweep": {
            "type": "boolean",
            "nullable": true
          },
          "recap_rerender": {
            "type": "boolean",
            "nullable": true
          },
          "retire_originals": {
            "type": "boolean",
            "nullable": true
          },
          "social_renders": {
            "type": "boolean",
            "nullable": true
          },
          "social_aspects": {
            "type": "string",
            "nullable": true
          },
          "social_top_clips": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "topic_clip_max_seconds": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "clip_selectivity": {
            "type": "string",
            "nullable": true
          },
          "social_backsweep": {
            "type": "boolean",
            "nullable": true
          },
          "clip_verify_backsweep": {
            "type": "boolean",
            "nullable": true
          },
          "merge_duplicate_meetings": {
            "type": "boolean",
            "nullable": true
          },
          "user_clips": {
            "type": "boolean",
            "nullable": true
          },
          "auto_clips": {
            "type": "boolean",
            "nullable": true
          },
          "standardize_titles": {
            "type": "boolean",
            "nullable": true
          },
          "clip_cold_read": {
            "type": "boolean",
            "nullable": true
          },
          "retry_no_stream_download_days": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "max_live_capture_hours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "live_capture": {
            "type": "boolean",
            "nullable": true
          },
          "live_browser_reads": {
            "type": "boolean",
            "nullable": true
          },
          "live_display_name": {
            "type": "string",
            "nullable": true
          },
          "live_join_email": {
            "type": "string",
            "nullable": true
          },
          "live_join_wait_minutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "live_never_after_windows": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "live_forecast": {
            "type": "boolean",
            "nullable": true
          },
          "live_forecast_hours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "live_channel_join": {
            "type": "boolean",
            "nullable": true
          },
          "guardrail_quote_tolerance": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "guardrail_require_quotes": {
            "type": "boolean",
            "nullable": true
          },
          "guardrail_confidence_floor": {
            "type": "string",
            "nullable": true
          },
          "guardrail_figure_policy": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        }
      },
      "UpdatePlaceRequest": {
        "required": [
          "county"
        ],
        "type": "object",
        "properties": {
          "county": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateProfileRequest": {
        "required": [
          "display_name"
        ],
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateSourceBodiesRequest": {
        "required": [
          "bodies"
        ],
        "type": "object",
        "properties": {
          "bodies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceBodyAssignment"
            },
            "nullable": true
          }
        }
      },
      "UpdateSourceMediaRequest": {
        "required": [
          "mode",
          "pattern",
          "replacement"
        ],
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "nullable": true
          },
          "pattern": {
            "type": "string",
            "nullable": true
          },
          "replacement": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UpdateSourceRequest": {
        "required": [
          "label",
          "enabled",
          "auto_import"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "enabled": {
            "type": "boolean",
            "nullable": true
          },
          "auto_import": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "UpdateSourceUrlRequest": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserRoleRequest": {
        "required": [
          "role"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "VerificationReport": {
        "required": [
          "summary",
          "listings"
        ],
        "type": "object",
        "properties": {
          "summary": {
            "type": "string",
            "nullable": true
          },
          "listings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerifiedListing"
            },
            "nullable": true
          }
        },
        "default": null,
        "nullable": true
      },
      "VerifiedListing": {
        "required": [
          "url",
          "status",
          "detail"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WorkerCapabilities": {
        "required": [
          "tags"
        ],
        "type": "object",
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "vram_gb": {
            "type": "number",
            "format": "double",
            "default": null,
            "nullable": true
          },
          "llm_model": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "WorkerEventBatch": {
        "required": [
          "worker_id",
          "entries"
        ],
        "type": "object",
        "properties": {
          "worker_id": {
            "type": "string"
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkerEventEntry"
            }
          }
        }
      },
      "WorkerEventEntry": {
        "required": [
          "at",
          "level",
          "message"
        ],
        "type": "object",
        "properties": {
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "level": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "detail": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "task_id": {
            "type": "string",
            "format": "uuid",
            "default": null,
            "nullable": true
          }
        }
      },
      "WorkerLogBatch": {
        "required": [
          "entries"
        ],
        "type": "object",
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkerLogEntry"
            }
          }
        }
      },
      "WorkerLogEntry": {
        "required": [
          "task_id",
          "at",
          "kind",
          "message"
        ],
        "type": "object",
        "properties": {
          "task_id": {
            "type": "string",
            "format": "uuid"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "stderr_tail": {
            "type": "string",
            "default": null,
            "nullable": true
          }
        }
      },
      "WorkerUpdateStatus": {
        "required": [
          "checked_at"
        ],
        "type": "object",
        "properties": {
          "checked_at": {
            "type": "string",
            "format": "date-time"
          },
          "origin_sha": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "origin_commit_at": {
            "type": "string",
            "format": "date-time",
            "default": null,
            "nullable": true
          },
          "deployed_sha": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "commits_behind": {
            "type": "integer",
            "format": "int32",
            "default": null,
            "nullable": true
          },
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "last_error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "last_error_at": {
            "type": "string",
            "format": "date-time",
            "default": null,
            "nullable": true
          }
        },
        "default": null,
        "nullable": true
      }
    },
    "securitySchemes": {
      "session": {
        "type": "apiKey",
        "description": "A signed-in reader's session: the cookie minted by completing the hosted sign-in that https://www.civicrecap.com/signin hands off to. Accounts are free and open. This is the only *account* credential — there is no OAuth token issuance, and the one bearer token this API accepts (`agent_token`) authenticates a machine on one operator-only prefix rather than a person.",
        "name": "cr_session",
        "in": "cookie"
      },
      "share_grant": {
        "type": "apiKey",
        "description": "A share grant: the `st=` token a signed-in reader's share link carries, minted by `GET /api/meetings/{id}/share` and good for that one meeting for 14 days. `POST /api/share/redeem` exchanges it once for the `cr_share` cookie, which the SSE stream and the media mints also honour.",
        "name": "st",
        "in": "query"
      },
      "media_signature": {
        "type": "apiKey",
        "description": "A per-URL HMAC signature. Never constructed by a caller: `GET /api/meetings/{id}/clips`, `/video`, `/agenda` and `/graphics` mint complete URLs, signed for six hours.",
        "name": "sig",
        "in": "query"
      },
      "email_graphic": {
        "type": "apiKey",
        "description": "The non-expiring grant a figure that was *mailed* carries, over that one object key. Accepted by `/api/media` for briefing figures only — never a clip and never the rendition — because a recap opened the next morning, or fetched by an inbox's image proxy, cannot hold a six-hour signature. Minted into recap emails and nowhere else: there is no endpoint that hands one out.",
        "name": "eg",
        "in": "query"
      },
      "agent_token": {
        "type": "http",
        "description": "An operator-minted agent token, `cr_agent_`-prefixed, sent as `Authorization: Bearer <token>`. Valid on `/api/agent/*` and nowhere else — a read-only surface of operational state (what is broken, the log, a task's stderr, a meeting's stages, the fleet, spending, the crawl, the settings) for an agent debugging this deployment. There is no endpoint that issues one and no exchange to negotiate: an operator mints it by hand on /admin/agent-access, it expires, it is revocable, and every request it makes is audited. It carries no account, grants no write, and is not a session substitute.",
        "scheme": "bearer"
      }
    }
  },
  "tags": [
    {
      "name": "CivicReplay.Server"
    }
  ]
}