/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { "/api/auth/login": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Login */ post: operations["login_api_auth_login_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/auth/logout": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Logout */ post: operations["logout_api_auth_logout_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/auth/me": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Me */ get: operations["me_api_auth_me_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/account/password": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Change Password * @description Change your own password, proving the current one first. * * Every other session of this user is revoked — a * password change is how someone reacts to a suspected compromise, so * other devices must lose access. The session doing the change survives, * otherwise the user is thrown out of the app they are standing in. */ post: operations["change_password_api_account_password_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/account/locale": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Set Locale * @description Pin the interface language, or clear it to follow the browser again. * * The backend only stores the choice — it never renders UI-language * strings (see docs/architecture.md); the frontend does the translating. */ put: operations["set_locale_api_account_locale_put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/account/document": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Personal Document * @description What the profile page needs to show: your document about yourself, or * the way to start it. Self-scoped, and authorship is the whole rule — a * document someone else wrote about you is not this. */ get: operations["personal_document_api_account_document_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/llm/test": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Llm Test * @description First-line support tool: pings all three roles, or one candidate * configuration without persisting anything. */ post: operations["llm_test_api_admin_llm_test_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/llm/settings": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Llm Settings */ get: operations["llm_settings_api_admin_llm_settings_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/llm/settings/{role}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Update Llm Setting * @description Change a role's stored config and apply it without a restart. * * Writing a field marks it as changed here; resetting it writes back what * `.env` currently says and marks it as coming from the environment * again. */ put: operations["update_llm_setting_api_admin_llm_settings__role__put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/llm/models/{role}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Llm Models * @description List what the endpoint serves, so the model field can be a dropdown. */ post: operations["llm_models_api_admin_llm_models__role__post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/prompts": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Prompt Settings * @description Every editable system prompt with its effective text and whether it is * still the shipped default. */ get: operations["prompt_settings_api_admin_prompts_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/prompts/{key}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Update Prompt Setting * @description Override a system prompt (applied without a restart) or reset it to the * shipped default. Resetting deletes the override row. */ put: operations["update_prompt_setting_api_admin_prompts__key__put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/users": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Users * @description Paged, because the admin screen is the one place that scales with * headcount: a company with two hundred employees would otherwise get two * hundred rows and no way to find anyone. * * Departments deliberately stay unpaged: an SME has a handful, and a * pager over five rows is furniture. */ get: operations["list_users_api_admin_users_get"]; put?: never; /** Create User */ post: operations["create_user_api_admin_users_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/users/{user_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; post?: never; /** * Delete User * @description Offboarding: sessions and conversations cascade, documents survive * with author set to NULL. */ delete: operations["delete_user_api_admin_users__user_id__delete"]; options?: never; head?: never; /** Update User */ patch: operations["update_user_api_admin_users__user_id__patch"]; trace?: never; }; "/api/admin/departments": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Create Department */ post: operations["create_department_api_admin_departments_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/departments/{department_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; post?: never; /** * Delete Department * @description Delete a department. Members and owned documents survive with their * `department_id` set to NULL, but this department's `doc_permissions` grants * CASCADE away — silently dropping the shared read access they gave. Because * that access loss is invisible, deleting a department that still has members, * owned documents or grants requires `?confirm=true` (409 `department_in_use` * otherwise). */ delete: operations["delete_department_api_admin_departments__department_id__delete"]; options?: never; head?: never; /** Rename Department */ patch: operations["rename_department_api_admin_departments__department_id__patch"]; trace?: never; }; "/api/admin/metrics": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Metrics Snapshot * @description The in-process metrics registry as JSON. * * Per process by design (the app runs one worker), and admin-only: the * counters name models and durations, which is operational detail rather * than something to expose publicly. */ get: operations["metrics_snapshot_api_admin_metrics_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/conversations": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Conversations * @description The sidebar list, newest activity first. The title is the first message, * fetched as a correlated subquery so one statement answers the whole list. */ get: operations["list_conversations_api_conversations_get"]; put?: never; /** Create Conversation */ post: operations["create_conversation_api_conversations_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/conversations/{conversation_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Get Conversation */ get: operations["get_conversation_api_conversations__conversation_id__get"]; put?: never; post?: never; /** * Delete Conversation * @description GDPR: users delete their own conversations; messages cascade. */ delete: operations["delete_conversation_api_conversations__conversation_id__delete"]; options?: never; head?: never; patch?: never; trace?: never; }; "/api/conversations/{conversation_id}/messages": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Send Message */ post: operations["send_message_api_conversations__conversation_id__messages_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/departments": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Departments * @description Department names for filters and pickers — not secret, any user. */ get: operations["list_departments_api_departments_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Documents * @description Browse readable documents. * * Paginated server-side: the list is the one screen that grows without * bound as a knowledge base fills up. Search has its own endpoint and is * ranked rather than paged. */ get: operations["list_documents_api_documents_get"]; put?: never; /** * Create Document * @description Open a new document to write in. * * A `draft` is the author's private working copy: `readable_documents_filter` * shows it to no one else (bar a colleague asked to check it) and only * `published` documents are indexed, so a draft never reaches another user * or an LLM prompt. */ post: operations["create_document_api_documents_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/search": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Search Documents * @description Find documents through the same hybrid retrieval the chat uses. * * Permission-safe by construction: `search()` requires a user and applies * the shared filter. Drafts and pending documents are readable * but never indexed, so a title fallback covers them — the one asymmetry * between this endpoint and chat retrieval. */ get: operations["search_documents_api_documents_search_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/export": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Export Documents * @description The readable knowledge base as a ZIP of Markdown files with YAML * frontmatter. Permission-filtered by construction (`readable_documents_filter` * — an admin exports what they can read, anyone else the same); built-in help * pages are excluded (product content, not the company's knowledge). stdlib * only, streamed, no temp files. */ get: operations["export_documents_api_documents_export_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/stats": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Document Stats * @description Is this a fresh install or a filled one? Read by the landing page's * first-run guide. */ get: operations["document_stats_api_documents_stats_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Get Document */ get: operations["get_document_api_documents__document_id__get"]; put?: never; post?: never; /** Delete Document */ delete: operations["delete_document_api_documents__document_id__delete"]; options?: never; head?: never; /** Update Document */ patch: operations["update_document_api_documents__document_id__patch"]; trace?: never; }; "/api/documents/{document_id}/history": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Document History * @description The document's audit trail, newest first: who changed or reviewed it, * when, and whether a content snapshot exists to diff against. Same read gate * as the document itself, so history never leaks to a user who cannot read the * document. */ get: operations["document_history_api_documents__document_id__history_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/versions/{event_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Document Version * @description A single past version's frozen content plus the content it replaced, so * the caller can show what this event changed. Same read gate as the * document. */ get: operations["document_version_api_documents__document_id__versions__event_id__get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/publish": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Publish Document * @description Make a draft readable and searchable for everyone its visibility allows. * * The author's own call — an open question about the content does not block * it, it travels with the document instead (`open_reviews`), which is what * lets a colleague read it AND know it is not settled. * * Author or admin, deliberately not every editor: a colleague asked to check * a draft may fix what is wrong in it, but whether the company gets to read * it at all is not their call. */ post: operations["publish_document_api_documents__document_id__publish_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/reviewers": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Reviewers * @description Who can be asked: everyone who could read this document once published, * minus the author. Permission-safe and non-admin (unlike /admin/users), and * only id + name leave the server. */ get: operations["list_reviewers_api_documents__document_id__reviewers_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/reviews": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Request Review * @description Ask a colleague to check this document, optionally about something * specific. The request grants them the right to read and edit it until it * is answered. */ post: operations["request_review_api_documents__document_id__reviews_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/reviews/{review_id}/resolve": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Resolve Review * @description Answer a request: the content was checked. * * The reviewer answers their own request; the author (or an admin) can close * one that has become moot, because a question nobody will answer should not * mark a document forever. */ post: operations["resolve_review_api_documents__document_id__reviews__review_id__resolve_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/departments": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Set Shared Departments * @description Replace the full set of ADDITIONAL departments this document is shared * with. Author or admin only. */ put: operations["set_shared_departments_api_documents__document_id__departments_put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/suggest-title": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Suggest Title * @description Suggest a concise title from the document's content (review step for a * new document). Owner-scoped; content in, title out, nothing logged. */ post: operations["suggest_title_api_documents__document_id__suggest_title_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/suggest-similar": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Suggest Similar * @description Existing documents that match the conversation a capture is starting * from — found over an LLM TOPIC SUMMARY of the chat (not the raw last * message), permission-filtered, help pages excluded. Empty list when the * conversation is unknown, empty, or nothing is close enough. */ post: operations["suggest_similar_api_documents_suggest_similar_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/documents/{document_id}/refine": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Refine Section * @description Stream a matured version of the section at the cursor. * * SSE frames: one `section` frame with the exact line range the suggestion * replaces, then `token` frames, then `done` (or `error`). */ post: operations["refine_section_api_documents__document_id__refine_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/people": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List People * @description Every colleague, ordered by name. Visible to any authenticated user. */ get: operations["list_people_api_people_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/people/{person_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Person * @description One colleague's profile. */ get: operations["get_person_api_people__person_id__get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/templates/catalog": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Catalog * @description The blueprints shipped with Pablan, each marked with whether this * instance has already added it. */ get: operations["list_catalog_api_templates_catalog_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/templates/catalog/{catalog_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Catalog Blueprint * @description Read a blueprint before adding it — the whole point of "view" is that * an admin can see its structure before committing to it. */ get: operations["get_catalog_blueprint_api_templates_catalog__catalog_id__get"]; put?: never; /** * Add From Catalog * @description Copy a blueprint into this instance. The result is an ordinary * template row: editable, and never touched by the catalog again. */ post: operations["add_from_catalog_api_templates_catalog__catalog_id__post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/templates/build": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Build Template * @description Save a template from the structured form builder. Creates a new row * (template_id null) or updates one in place. */ post: operations["build_template_api_templates_build_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/templates/{template_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Get Template */ get: operations["get_template_api_templates__template_id__get"]; /** * Update Template * @description Replace a template's YAML. Validated against the schema on save. */ put: operations["update_template_api_templates__template_id__put"]; post?: never; /** * Delete Template * @description Remove a template. Documents created from it are independent and * survive (a template is only a starting point). If it came from the * catalog it can always be added back. */ delete: operations["delete_template_api_templates__template_id__delete"]; options?: never; head?: never; patch?: never; trace?: never; }; "/api/templates/{template_id}/duplicate": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Duplicate Template * @description Fork a template — for trying a variant without losing the original. * The copy gets a fresh config id so the two never collide. */ post: operations["duplicate_template_api_templates__template_id__duplicate_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/templates": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Templates * @description Templates the picker offers. Templates in the reader's language come * first — they are customer content, so a mismatched one is still listed * rather than hidden. */ get: operations["list_templates_api_templates_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/health": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Health */ get: operations["health_api_health_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { /** * AccessReason * @description Why a document is visible to the requesting user. * * API-only (never stored): computed per request so the UI can explain * access instead of leaving visibility rules implicit. * @enum {string} */ AccessReason: "author" | "public" | "department" | "granted" | "review"; /** AdminDepartmentOut */ AdminDepartmentOut: { /** * Id * Format: uuid */ id: string; /** Name */ name: string; }; /** AdminUserOut */ AdminUserOut: { /** * Id * Format: uuid */ id: string; /** Email */ email: string; /** Name */ name: string; role: components["schemas"]["UserRole"]; /** Department Id */ department_id: string | null; }; /** AdminUserPage */ AdminUserPage: { /** Items */ items: components["schemas"]["AdminUserOut"][]; /** Total */ total: number; /** Per Page */ per_page: number; }; /** AuthoringTemplate */ AuthoringTemplate: { /** Id */ id: string; /** Name */ name: string; /** Version */ version: string; /** * Kind * @default authoring * @constant */ kind: "authoring"; /** Locale */ locale?: ("de" | "en") | null; /** * Description * @default */ description: string; /** * @default { * "temperature": 0.4 * } */ model: components["schemas"]["TemplateModelHints"]; /** Persona */ persona: string; /** Skeleton */ skeleton: string; /** * Sections * @default [] */ sections: components["schemas"]["SectionHint"][]; /** Title Template */ title_template: string; /** * @default { * "visibility": "department" * } */ metadata: components["schemas"]["TemplateMetadata"]; }; /** CatalogDetail */ CatalogDetail: { /** Id */ id: string; /** Name */ name: string; /** Description */ description: string; /** Sections */ sections: number; /** Added */ added: boolean; /** Yaml */ yaml: string; }; /** * CatalogSummary * @description A blueprint on disk. `id` is the config id, NOT a row id — a catalog * entry has no row until someone adds it. */ CatalogSummary: { /** Id */ id: string; /** Name */ name: string; /** Description */ description: string; /** Sections */ sections: number; /** Added */ added: boolean; }; /** ConversationCreate */ ConversationCreate: { mode: components["schemas"]["ConversationMode"]; }; /** ConversationDetail */ ConversationDetail: { /** * Id * Format: uuid */ id: string; /** Title */ title?: string | null; /** * Messages * @default [] */ messages: components["schemas"]["MessageOut"][]; }; /** * ConversationMode * @enum {string} */ ConversationMode: "query" | "insight"; /** ConversationSummary */ ConversationSummary: { /** * Id * Format: uuid */ id: string; /** Title */ title?: string | null; }; /** DepartmentCreate */ DepartmentCreate: { /** Name */ name: string; }; /** DepartmentOut */ DepartmentOut: { /** * Id * Format: uuid */ id: string; /** Name */ name: string; }; /** DepartmentRef */ DepartmentRef: { /** * Id * Format: uuid */ id: string; /** Name */ name: string; }; /** * DocumentCreate * @description Start a new document the user will write in the editor. * * With a `template_id` the draft opens on that template's Markdown skeleton * and title; without one it starts blank and `title` is required. The result * is a `draft` — author-only and never indexed until it is published. */ DocumentCreate: { /** Template Id */ template_id?: string | null; /** Title */ title?: string | null; visibility?: components["schemas"]["DocumentVisibility"] | null; /** Conversation Id */ conversation_id?: string | null; }; /** * DocumentDepartments * @description The full set of ADDITIONAL departments the document is shared with (on * top of the owning department) — replaces the existing grants. */ DocumentDepartments: { /** Department Ids */ department_ids: string[]; /** Confirm Lockout */ confirm_lockout?: boolean | null; }; /** DocumentDetail */ DocumentDetail: { /** * Id * Format: uuid */ id: string; /** Title */ title: string; status: components["schemas"]["DocumentStatus"]; visibility: components["schemas"]["DocumentVisibility"]; /** Department Id */ department_id: string | null; /** * Created At * Format: date-time */ created_at: string; /** * Updated At * Format: date-time */ updated_at: string; access_reason: components["schemas"]["AccessReason"]; /** Can Edit */ can_edit: boolean; /** Open Reviews */ open_reviews: number; /** Is Builtin */ is_builtin: boolean; /** Content Md */ content_md: string; /** * Reviews * @default [] */ reviews: components["schemas"]["ReviewOut"][]; /** * Shared Departments * @default [] */ shared_departments: components["schemas"]["DepartmentRef"][]; }; /** * DocumentEventAction * @description A recorded step in a document's audit history. * * Content-bearing actions (created / edited) snapshot the Markdown source of * truth; the rest record only who did what and when. * @enum {string} */ DocumentEventAction: "created" | "edited" | "published" | "archived" | "visibility_changed" | "review_requested" | "review_resolved"; /** * DocumentEventOut * @description One entry in a document's history timeline — metadata only. */ DocumentEventOut: { /** * Id * Format: uuid */ id: string; action: components["schemas"]["DocumentEventAction"]; /** Actor Id */ actor_id: string | null; /** Actor Name */ actor_name: string | null; visibility: components["schemas"]["DocumentVisibility"] | null; /** * Created At * Format: date-time */ created_at: string; /** Has Snapshot */ has_snapshot: boolean; }; /** DocumentPage */ DocumentPage: { /** Items */ items: components["schemas"]["DocumentSummary"][]; /** Total */ total: number; /** Per Page */ per_page: number; }; /** * DocumentSearchHit * @description A search result: the document plus the section that matched. * * Empty `heading_path` means the match was on the title, not a section. */ DocumentSearchHit: { /** * Id * Format: uuid */ id: string; /** Title */ title: string; status: components["schemas"]["DocumentStatus"]; visibility: components["schemas"]["DocumentVisibility"]; /** Department Id */ department_id: string | null; /** * Created At * Format: date-time */ created_at: string; /** * Updated At * Format: date-time */ updated_at: string; access_reason: components["schemas"]["AccessReason"]; /** Can Edit */ can_edit: boolean; /** Open Reviews */ open_reviews: number; /** Is Builtin */ is_builtin: boolean; /** * Heading Path * @default */ heading_path: string; }; /** * DocumentSort * @description How the browse list is ordered. Deliberately two options: "what * changed" and "what is new" are the two questions people actually ask of * a document list. * @enum {string} */ DocumentSort: "updated" | "created"; /** * DocumentStats * @description Company-wide counts, read by the landing page's first-run guide. * * Aggregates only — no titles, no per-user data. Deliberately not * permission-filtered: a bare count reveals nothing about content. */ DocumentStats: { /** Documents Total */ documents_total: number; /** Departments Total */ departments_total: number; }; /** * DocumentStatus * @description Where a document stands. * * Three states, because publishing is the author's own decision: a draft is * private, a published document is visible and indexed, an archived one is * neither. Uncertainty about CONTENT is not a status — it is an open review * request (`ReviewRequest`), which can sit on a published document too. * @enum {string} */ DocumentStatus: "draft" | "published" | "archived"; /** DocumentSummary */ DocumentSummary: { /** * Id * Format: uuid */ id: string; /** Title */ title: string; status: components["schemas"]["DocumentStatus"]; visibility: components["schemas"]["DocumentVisibility"]; /** Department Id */ department_id: string | null; /** * Created At * Format: date-time */ created_at: string; /** * Updated At * Format: date-time */ updated_at: string; access_reason: components["schemas"]["AccessReason"]; /** Can Edit */ can_edit: boolean; /** Open Reviews */ open_reviews: number; /** Is Builtin */ is_builtin: boolean; }; /** DocumentUpdate */ DocumentUpdate: { /** Title */ title?: string | null; /** Content Md */ content_md?: string | null; visibility?: components["schemas"]["DocumentVisibility"] | null; status?: components["schemas"]["DocumentStatus"] | null; /** Confirm Lockout */ confirm_lockout?: boolean | null; /** Conversation Id */ conversation_id?: string | null; }; /** * DocumentVersion * @description A past version's frozen content, for viewing or diffing. * * A snapshot is taken *after* its event, so `content_md` is the state this * event produced and `previous_content_md` the state it started from — the * pair is what "what did this change do?" needs. `previous_content_md` is * null for the first snapshot, where everything was added. */ DocumentVersion: { /** * Id * Format: uuid */ id: string; action: components["schemas"]["DocumentEventAction"]; /** Actor Id */ actor_id: string | null; /** Actor Name */ actor_name: string | null; /** * Created At * Format: date-time */ created_at: string; /** Title */ title: string | null; /** Content Md */ content_md: string | null; /** Previous Content Md */ previous_content_md: string | null; visibility: components["schemas"]["DocumentVisibility"] | null; }; /** * DocumentVisibility * @enum {string} */ DocumentVisibility: "public" | "department" | "restricted"; /** HTTPValidationError */ HTTPValidationError: { /** Detail */ detail?: components["schemas"]["ValidationError"][]; }; /** * LLMModelsRequest * @description Optional candidate endpoint, so an admin can list the models of a * URL they have typed but not saved. */ LLMModelsRequest: { /** Base Url */ base_url?: string | null; /** Api Key */ api_key?: string | null; }; /** LLMModelsResponse */ LLMModelsResponse: { /** Models */ models: string[]; /** Supported */ supported: boolean; /** Error */ error?: string | null; }; /** LLMRoleStatus */ LLMRoleStatus: { /** * Role * @enum {string} */ role: "chat" | "utility" | "embedding"; /** Ok */ ok: boolean; /** Base Url */ base_url: string; /** Model */ model: string; /** Latency Ms */ latency_ms: number | null; /** Code */ code: string | null; /** Error */ error: string | null; }; /** * LLMSettingOut * @description Stored config for one role. * * The api_key is NEVER returned — only whether one is set, and where each * field's value came from. `*_from_env` drives the per-field * "taken from .env" / "changed here" label and the reset action; it is * provenance, not a fallback. */ LLMSettingOut: { /** * Role * @enum {string} */ role: "chat" | "utility" | "embedding"; /** Base Url */ base_url: string; /** Model */ model: string; /** Base Url From Env */ base_url_from_env: boolean; /** Model From Env */ model_from_env: boolean; /** Api Key Set */ api_key_set: boolean; /** Api Key From Env */ api_key_from_env: boolean; }; /** LLMSettingUpdate */ LLMSettingUpdate: { /** Base Url */ base_url?: string | null; /** Model */ model?: string | null; /** Api Key */ api_key?: string | null; /** Reset Base Url */ reset_base_url?: boolean | null; /** Reset Model */ reset_model?: boolean | null; /** Reset Api Key */ reset_api_key?: boolean | null; }; /** * LLMTestRequest * @description Optional candidate config: test an endpoint BEFORE saving it. */ LLMTestRequest: { /** Role */ role?: ("chat" | "utility" | "embedding") | null; /** Base Url */ base_url?: string | null; /** Model */ model?: string | null; /** Api Key */ api_key?: string | null; }; /** LLMTestResponse */ LLMTestResponse: { /** Roles */ roles: components["schemas"]["LLMRoleStatus"][]; }; /** * LocalePreference * @description The languages the interface ships in — the frontend bundles must * cover exactly these. */ LocalePreference: { /** Locale */ locale?: ("de" | "en") | null; }; /** LoginRequest */ LoginRequest: { /** Email */ email: string; /** Password */ password: string; }; /** MessageOut */ MessageOut: { /** * Id * Format: uuid */ id: string; role: components["schemas"]["MessageRole"]; /** Content */ content: string; /** * Created At * Format: date-time */ created_at: string; /** * Sources * @default [] */ sources: components["schemas"]["MessageSource"][]; /** Fallback */ fallback?: string | null; }; /** * MessageRole * @enum {string} */ MessageRole: "user" | "assistant" | "system"; /** MessageSource */ MessageSource: { /** * Document Id * Format: uuid */ document_id: string; /** Title */ title: string; /** Heading Path */ heading_path: string; /** * Excerpt * @default */ excerpt: string; /** * Used * @default true */ used: boolean; /** * Review Pending * @default false */ review_pending: boolean; }; /** PasswordChange */ PasswordChange: { /** Current Password */ current_password: string; /** New Password */ new_password: string; }; /** * PersonOut * @description A colleague as the directory shows them — never email or credentials. */ PersonOut: { /** * Id * Format: uuid */ id: string; /** Name */ name: string; role: components["schemas"]["UserRole"]; /** Department */ department: string | null; }; /** * PersonalDocument * @description The caller's own document about themselves. * * Either they wrote one — then it is opened and edited like any other * document — or they have not, and `template_id` says what to start it from. * Both are null when the blueprint is not in this instance and nothing was * written yet; the frontend falls back to the ordinary template picker. */ PersonalDocument: { /** Document Id */ document_id?: string | null; /** Title */ title?: string | null; status?: components["schemas"]["DocumentStatus"] | null; /** Template Id */ template_id?: string | null; }; /** PromptSettingOut */ PromptSettingOut: { /** Key */ key: string; /** Content */ content: string; /** Is Default */ is_default: boolean; }; /** PromptSettingUpdate */ PromptSettingUpdate: { /** Content */ content?: string | null; /** Reset */ reset?: boolean | null; }; /** RefineRequest */ RefineRequest: { /** Content Md */ content_md: string; /** Cursor Line */ cursor_line: number; }; /** * ReviewOut * @description One request to check this document. Open while `resolved_at` is null. */ ReviewOut: { /** * Id * Format: uuid */ id: string; /** Question */ question: string | null; /** Requester Name */ requester_name: string | null; /** Reviewer Id */ reviewer_id: string | null; /** Reviewer Name */ reviewer_name: string | null; /** * Created At * Format: date-time */ created_at: string; /** Resolved At */ resolved_at: string | null; /** Resolved By Name */ resolved_by_name: string | null; /** Is Mine */ is_mine: boolean; }; /** * ReviewRequestBody * @description Ask someone to check this document, optionally about something specific * ("do the holiday numbers still hold?"). */ ReviewRequestBody: { /** * Reviewer Id * Format: uuid */ reviewer_id: string; /** Question */ question?: string | null; }; /** * ReviewerCandidate * @description A user the author may ask to check a document — id + name only. */ ReviewerCandidate: { /** * Id * Format: uuid */ id: string; /** Name */ name: string; }; /** * SectionHint * @description Steers what the refinement model should draw out of one section. * * `heading` is matched to a skeleton heading by its exact text, so the hint * only reaches the model while the author is writing under that heading. */ SectionHint: { /** Heading */ heading: string; /** Hint */ hint: string; }; /** SendMessage */ SendMessage: { /** Content */ content: string; }; /** SimilarDocumentOut */ SimilarDocumentOut: { /** * Document Id * Format: uuid */ document_id: string; /** Title */ title: string; }; /** SuggestSimilarRequest */ SuggestSimilarRequest: { /** * Conversation Id * Format: uuid */ conversation_id: string; }; /** * TemplateBuildRequest * @description A template assembled by the form builder. The config is the same schema * a pasted YAML parses into, so both paths get one validation guarantee — * the frontend has no YAML library and must not gain one, so it sends the * structured config instead of serializing it. */ TemplateBuildRequest: { /** Template Id */ template_id?: string | null; config: components["schemas"]["AuthoringTemplate"]; }; /** TemplateDetail */ TemplateDetail: { /** * Id * Format: uuid */ id: string; /** Config Id */ config_id: string; /** Name */ name: string; /** Version */ version: string; /** * Description * @default */ description: string; /** Config */ config: { [key: string]: unknown; }; /** Yaml */ yaml: string; }; /** TemplateImportRequest */ TemplateImportRequest: { /** Yaml */ yaml: string; }; /** TemplateMetadata */ TemplateMetadata: { /** * Visibility * @default department * @enum {string} */ visibility: "public" | "department" | "restricted"; }; /** TemplateModelHints */ TemplateModelHints: { /** * Temperature * @default 0.4 */ temperature: number; /** Min Class Hint */ min_class_hint?: string | null; }; /** TemplateSummary */ TemplateSummary: { /** * Id * Format: uuid */ id: string; /** Config Id */ config_id: string; /** Name */ name: string; /** Version */ version: string; /** * Description * @default */ description: string; }; /** TitleSuggestion */ TitleSuggestion: { /** Title */ title: string; }; /** UserCreate */ UserCreate: { /** Email */ email: string; /** Name */ name: string; /** @default member */ role: components["schemas"]["UserRole"]; /** Department Id */ department_id?: string | null; /** Password */ password: string; }; /** UserOut */ UserOut: { /** * Id * Format: uuid */ id: string; /** Email */ email: string; /** Name */ name: string; role: components["schemas"]["UserRole"]; /** Department Id */ department_id: string | null; /** Locale */ locale?: ("de" | "en") | null; }; /** * UserRole * @enum {string} */ UserRole: "member" | "admin"; /** UserUpdate */ UserUpdate: { /** Name */ name?: string | null; /** Email */ email?: string | null; role?: components["schemas"]["UserRole"] | null; /** Department Id */ department_id?: string | null; /** Clear Department */ clear_department?: boolean | null; /** Password */ password?: string | null; }; /** ValidationError */ ValidationError: { /** Location */ loc: (string | number)[]; /** Message */ msg: string; /** Error Type */ type: string; /** Input */ input?: unknown; /** Context */ ctx?: Record; }; }; responses: never; parameters: never; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { login_api_auth_login_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["LoginRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; logout_api_auth_logout_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; me_api_auth_me_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserOut"]; }; }; }; }; change_password_api_account_password_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["PasswordChange"]; }; }; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; set_locale_api_account_locale_put: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["LocalePreference"]; }; }; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; personal_document_api_account_document_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PersonalDocument"]; }; }; }; }; llm_test_api_admin_llm_test_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["LLMTestRequest"] | null; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LLMTestResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; llm_settings_api_admin_llm_settings_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LLMSettingOut"][]; }; }; }; }; update_llm_setting_api_admin_llm_settings__role__put: { parameters: { query?: never; header?: never; path: { role: "chat" | "utility" | "embedding"; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["LLMSettingUpdate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LLMSettingOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; llm_models_api_admin_llm_models__role__post: { parameters: { query?: never; header?: never; path: { role: "chat" | "utility" | "embedding"; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["LLMModelsRequest"] | null; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LLMModelsResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; prompt_settings_api_admin_prompts_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PromptSettingOut"][]; }; }; }; }; update_prompt_setting_api_admin_prompts__key__put: { parameters: { query?: never; header?: never; path: { key: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["PromptSettingUpdate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PromptSettingOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; list_users_api_admin_users_get: { parameters: { query?: { search?: string | null; page?: number; per_page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminUserPage"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; create_user_api_admin_users_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["UserCreate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminUserOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; delete_user_api_admin_users__user_id__delete: { parameters: { query?: never; header?: never; path: { user_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; update_user_api_admin_users__user_id__patch: { parameters: { query?: never; header?: never; path: { user_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["UserUpdate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminUserOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; create_department_api_admin_departments_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["DepartmentCreate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminDepartmentOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; delete_department_api_admin_departments__department_id__delete: { parameters: { query?: { confirm?: boolean; }; header?: never; path: { department_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; rename_department_api_admin_departments__department_id__patch: { parameters: { query?: never; header?: never; path: { department_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["DepartmentCreate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminDepartmentOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; metrics_snapshot_api_admin_metrics_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: unknown; }; }; }; }; }; list_conversations_api_conversations_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ConversationSummary"][]; }; }; }; }; create_conversation_api_conversations_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["ConversationCreate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ConversationSummary"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_conversation_api_conversations__conversation_id__get: { parameters: { query?: never; header?: never; path: { conversation_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ConversationDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; delete_conversation_api_conversations__conversation_id__delete: { parameters: { query?: never; header?: never; path: { conversation_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; send_message_api_conversations__conversation_id__messages_post: { parameters: { query?: never; header?: never; path: { conversation_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["SendMessage"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": unknown; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; list_departments_api_departments_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DepartmentOut"][]; }; }; }; }; list_documents_api_documents_get: { parameters: { query?: { department?: string | null; status?: components["schemas"]["DocumentStatus"] | null; assigned_to_me?: boolean; search?: string | null; sort?: components["schemas"]["DocumentSort"]; page?: number; per_page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentPage"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; create_document_api_documents_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["DocumentCreate"]; }; }; responses: { /** @description Successful Response */ 201: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; search_documents_api_documents_search_get: { parameters: { query: { q: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentSearchHit"][]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; export_documents_api_documents_export_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": unknown; }; }; }; }; document_stats_api_documents_stats_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentStats"]; }; }; }; }; get_document_api_documents__document_id__get: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; delete_document_api_documents__document_id__delete: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; update_document_api_documents__document_id__patch: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["DocumentUpdate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; document_history_api_documents__document_id__history_get: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentEventOut"][]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; document_version_api_documents__document_id__versions__event_id__get: { parameters: { query?: never; header?: never; path: { document_id: string; event_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentVersion"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; publish_document_api_documents__document_id__publish_post: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; list_reviewers_api_documents__document_id__reviewers_get: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ReviewerCandidate"][]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; request_review_api_documents__document_id__reviews_post: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["ReviewRequestBody"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; resolve_review_api_documents__document_id__reviews__review_id__resolve_post: { parameters: { query?: never; header?: never; path: { document_id: string; review_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; set_shared_departments_api_documents__document_id__departments_put: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["DocumentDepartments"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DocumentDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; suggest_title_api_documents__document_id__suggest_title_post: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TitleSuggestion"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; suggest_similar_api_documents_suggest_similar_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["SuggestSimilarRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["SimilarDocumentOut"][]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; refine_section_api_documents__document_id__refine_post: { parameters: { query?: never; header?: never; path: { document_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["RefineRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": unknown; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; list_people_api_people_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PersonOut"][]; }; }; }; }; get_person_api_people__person_id__get: { parameters: { query?: never; header?: never; path: { person_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PersonOut"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; list_catalog_api_templates_catalog_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["CatalogSummary"][]; }; }; }; }; get_catalog_blueprint_api_templates_catalog__catalog_id__get: { parameters: { query?: never; header?: never; path: { catalog_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["CatalogDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; add_from_catalog_api_templates_catalog__catalog_id__post: { parameters: { query?: never; header?: never; path: { catalog_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TemplateDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; build_template_api_templates_build_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["TemplateBuildRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TemplateDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_template_api_templates__template_id__get: { parameters: { query?: never; header?: never; path: { template_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TemplateDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; update_template_api_templates__template_id__put: { parameters: { query?: never; header?: never; path: { template_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["TemplateImportRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TemplateDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; delete_template_api_templates__template_id__delete: { parameters: { query?: never; header?: never; path: { template_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; duplicate_template_api_templates__template_id__duplicate_post: { parameters: { query?: never; header?: never; path: { template_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TemplateDetail"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; list_templates_api_templates_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TemplateSummary"][]; }; }; }; }; health_api_health_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: string; }; }; }; }; }; }