diff --git "a/openapi_pretty.json" "b/openapi_pretty.json" new file mode 100644--- /dev/null +++ "b/openapi_pretty.json" @@ -0,0 +1,7057 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Open Notebook API", + "description": "API for Open Notebook - Research Assistant", + "version": "0.2.2" + }, + "paths": { + "/api/auth/status": { + "get": { + "tags": [ + "auth", + "auth" + ], + "summary": "Get Auth Status", + "description": "Check if authentication is enabled.\nReturns whether a password is required to access the API.", + "operationId": "get_auth_status_api_auth_status_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/api/config": { + "get": { + "tags": [ + "config" + ], + "summary": "Get Config", + "description": "Get frontend configuration.\n\nReturns version information and health status.\nNote: The frontend determines the API URL via its own runtime-config endpoint,\nso this endpoint no longer returns apiUrl.\n\nAlso checks for version updates from GitHub (with caching and error handling).", + "operationId": "get_config_api_config_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/api/notebooks": { + "get": { + "tags": [ + "notebooks" + ], + "summary": "Get Notebooks", + "description": "Get all notebooks with optional filtering and ordering.", + "operationId": "get_notebooks_api_notebooks_get", + "parameters": [ + { + "name": "archived", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Filter by archived status", + "title": "Archived" + }, + "description": "Filter by archived status" + }, + { + "name": "order_by", + "in": "query", + "required": false, + "schema": { + "type": "string", + "description": "Order by field and direction", + "default": "updated desc", + "title": "Order By" + }, + "description": "Order by field and direction" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotebookResponse" + }, + "title": "Response Get Notebooks Api Notebooks Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "notebooks" + ], + "summary": "Create Notebook", + "description": "Create a new notebook.", + "operationId": "create_notebook_api_notebooks_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotebookCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotebookResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/notebooks/{notebook_id}": { + "get": { + "tags": [ + "notebooks" + ], + "summary": "Get Notebook", + "description": "Get a specific notebook by ID.", + "operationId": "get_notebook_api_notebooks__notebook_id__get", + "parameters": [ + { + "name": "notebook_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Notebook Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotebookResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "notebooks" + ], + "summary": "Update Notebook", + "description": "Update a notebook.", + "operationId": "update_notebook_api_notebooks__notebook_id__put", + "parameters": [ + { + "name": "notebook_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Notebook Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotebookUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotebookResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "notebooks" + ], + "summary": "Delete Notebook", + "description": "Delete a notebook.", + "operationId": "delete_notebook_api_notebooks__notebook_id__delete", + "parameters": [ + { + "name": "notebook_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Notebook Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/notebooks/{notebook_id}/sources/{source_id}": { + "post": { + "tags": [ + "notebooks" + ], + "summary": "Add Source To Notebook", + "description": "Add an existing source to a notebook (create the reference).", + "operationId": "add_source_to_notebook_api_notebooks__notebook_id__sources__source_id__post", + "parameters": [ + { + "name": "notebook_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Notebook Id" + } + }, + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "notebooks" + ], + "summary": "Remove Source From Notebook", + "description": "Remove a source from a notebook (delete the reference).", + "operationId": "remove_source_from_notebook_api_notebooks__notebook_id__sources__source_id__delete", + "parameters": [ + { + "name": "notebook_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Notebook Id" + } + }, + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/search": { + "post": { + "tags": [ + "search" + ], + "summary": "Search Knowledge Base", + "description": "Search the knowledge base using text or vector search.", + "operationId": "search_knowledge_base_api_search_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/search/ask": { + "post": { + "tags": [ + "search" + ], + "summary": "Ask Knowledge Base", + "description": "Ask the knowledge base a question using AI models.", + "operationId": "ask_knowledge_base_api_search_ask_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AskRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/search/ask/simple": { + "post": { + "tags": [ + "search" + ], + "summary": "Ask Knowledge Base Simple", + "description": "Ask the knowledge base a question and return a simple response (non-streaming).", + "operationId": "ask_knowledge_base_simple_api_search_ask_simple_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AskRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AskResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/models": { + "get": { + "tags": [ + "models" + ], + "summary": "Get Models", + "description": "Get all configured models with optional type filtering.", + "operationId": "get_models_api_models_get", + "parameters": [ + { + "name": "type", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by model type", + "title": "Type" + }, + "description": "Filter by model type" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelResponse" + }, + "title": "Response Get Models Api Models Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "models" + ], + "summary": "Create Model", + "description": "Create a new model configuration.", + "operationId": "create_model_api_models_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/models/{model_id}": { + "delete": { + "tags": [ + "models" + ], + "summary": "Delete Model", + "description": "Delete a model configuration.", + "operationId": "delete_model_api_models__model_id__delete", + "parameters": [ + { + "name": "model_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Model Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/models/defaults": { + "get": { + "tags": [ + "models" + ], + "summary": "Get Default Models", + "description": "Get default model assignments.", + "operationId": "get_default_models_api_models_defaults_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultModelsResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "models" + ], + "summary": "Update Default Models", + "description": "Update default model assignments.", + "operationId": "update_default_models_api_models_defaults_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultModelsResponse" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultModelsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/models/providers": { + "get": { + "tags": [ + "models" + ], + "summary": "Get Provider Availability", + "description": "Get provider availability based on environment variables.", + "operationId": "get_provider_availability_api_models_providers_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderAvailabilityResponse" + } + } + } + } + } + } + }, + "/api/transformations": { + "get": { + "tags": [ + "transformations" + ], + "summary": "Get Transformations", + "description": "Get all transformations.", + "operationId": "get_transformations_api_transformations_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/TransformationResponse" + }, + "type": "array", + "title": "Response Get Transformations Api Transformations Get" + } + } + } + } + } + }, + "post": { + "tags": [ + "transformations" + ], + "summary": "Create Transformation", + "description": "Create a new transformation.", + "operationId": "create_transformation_api_transformations_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/transformations/execute": { + "post": { + "tags": [ + "transformations" + ], + "summary": "Execute Transformation", + "description": "Execute a transformation on input text.", + "operationId": "execute_transformation_api_transformations_execute_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationExecuteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationExecuteResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/transformations/default-prompt": { + "get": { + "tags": [ + "transformations" + ], + "summary": "Get Default Prompt", + "description": "Get the default transformation prompt.", + "operationId": "get_default_prompt_api_transformations_default_prompt_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultPromptResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "transformations" + ], + "summary": "Update Default Prompt", + "description": "Update the default transformation prompt.", + "operationId": "update_default_prompt_api_transformations_default_prompt_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultPromptUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultPromptResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/transformations/{transformation_id}": { + "get": { + "tags": [ + "transformations" + ], + "summary": "Get Transformation", + "description": "Get a specific transformation by ID.", + "operationId": "get_transformation_api_transformations__transformation_id__get", + "parameters": [ + { + "name": "transformation_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Transformation Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "transformations" + ], + "summary": "Update Transformation", + "description": "Update a transformation.", + "operationId": "update_transformation_api_transformations__transformation_id__put", + "parameters": [ + { + "name": "transformation_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Transformation Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransformationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "transformations" + ], + "summary": "Delete Transformation", + "description": "Delete a transformation.", + "operationId": "delete_transformation_api_transformations__transformation_id__delete", + "parameters": [ + { + "name": "transformation_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Transformation Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/notes": { + "get": { + "tags": [ + "notes" + ], + "summary": "Get Notes", + "description": "Get all notes with optional notebook filtering.", + "operationId": "get_notes_api_notes_get", + "parameters": [ + { + "name": "notebook_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by notebook ID", + "title": "Notebook Id" + }, + "description": "Filter by notebook ID" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoteResponse" + }, + "title": "Response Get Notes Api Notes Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "notes" + ], + "summary": "Create Note", + "description": "Create a new note.", + "operationId": "create_note_api_notes_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoteCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoteResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/notes/{note_id}": { + "get": { + "tags": [ + "notes" + ], + "summary": "Get Note", + "description": "Get a specific note by ID.", + "operationId": "get_note_api_notes__note_id__get", + "parameters": [ + { + "name": "note_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Note Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoteResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "notes" + ], + "summary": "Update Note", + "description": "Update a note.", + "operationId": "update_note_api_notes__note_id__put", + "parameters": [ + { + "name": "note_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Note Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoteUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoteResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "notes" + ], + "summary": "Delete Note", + "description": "Delete a note.", + "operationId": "delete_note_api_notes__note_id__delete", + "parameters": [ + { + "name": "note_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Note Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/embed": { + "post": { + "tags": [ + "embedding" + ], + "summary": "Embed Content", + "description": "Embed content for vector search.", + "operationId": "embed_content_api_embed_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EmbedRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EmbedResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/embeddings/rebuild": { + "post": { + "tags": [ + "embeddings" + ], + "summary": "Start Rebuild", + "description": "Start a background job to rebuild embeddings.\n\n- **mode**: \"existing\" (re-embed items with embeddings) or \"all\" (embed everything)\n- **include_sources**: Include sources in rebuild (default: true)\n- **include_notes**: Include notes in rebuild (default: true)\n- **include_insights**: Include insights in rebuild (default: true)\n\nReturns command ID to track progress and estimated item count.", + "operationId": "start_rebuild_api_embeddings_rebuild_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RebuildRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RebuildResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/embeddings/rebuild/{command_id}/status": { + "get": { + "tags": [ + "embeddings" + ], + "summary": "Get Rebuild Status", + "description": "Get the status of a rebuild operation.\n\nReturns:\n- **status**: queued, running, completed, failed\n- **progress**: processed count, total count, percentage\n- **stats**: breakdown by type (sources, notes, insights, failed)\n- **timestamps**: started_at, completed_at", + "operationId": "get_rebuild_status_api_embeddings_rebuild__command_id__status_get", + "parameters": [ + { + "name": "command_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Command Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RebuildStatusResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/settings": { + "get": { + "tags": [ + "settings" + ], + "summary": "Get Settings", + "description": "Get all application settings.", + "operationId": "get_settings_api_settings_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SettingsResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "settings" + ], + "summary": "Update Settings", + "description": "Update application settings.", + "operationId": "update_settings_api_settings_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SettingsUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SettingsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/notebooks/{notebook_id}/context": { + "post": { + "tags": [ + "context" + ], + "summary": "Get Notebook Context", + "description": "Get context for a notebook based on configuration.", + "operationId": "get_notebook_context_api_notebooks__notebook_id__context_post", + "parameters": [ + { + "name": "notebook_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Notebook Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ContextRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ContextResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources": { + "get": { + "tags": [ + "sources" + ], + "summary": "Get Sources", + "description": "Get sources with pagination and sorting support.", + "operationId": "get_sources_api_sources_get", + "parameters": [ + { + "name": "notebook_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by notebook ID", + "title": "Notebook Id" + }, + "description": "Filter by notebook ID" + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "maximum": 100, + "minimum": 1, + "description": "Number of sources to return (1-100)", + "default": 50, + "title": "Limit" + }, + "description": "Number of sources to return (1-100)" + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "description": "Number of sources to skip", + "default": 0, + "title": "Offset" + }, + "description": "Number of sources to skip" + }, + { + "name": "sort_by", + "in": "query", + "required": false, + "schema": { + "type": "string", + "description": "Field to sort by (created or updated)", + "default": "updated", + "title": "Sort By" + }, + "description": "Field to sort by (created or updated)" + }, + { + "name": "sort_order", + "in": "query", + "required": false, + "schema": { + "type": "string", + "description": "Sort order (asc or desc)", + "default": "desc", + "title": "Sort Order" + }, + "description": "Sort order (asc or desc)" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceListResponse" + }, + "title": "Response Get Sources Api Sources Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "sources" + ], + "summary": "Create Source", + "description": "Create a new source with support for both JSON and multipart form data.", + "operationId": "create_source_api_sources_post", + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_create_source_api_sources_post" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/json": { + "post": { + "tags": [ + "sources" + ], + "summary": "Create Source Json", + "description": "Create a new source using JSON payload (legacy endpoint for backward compatibility).", + "operationId": "create_source_json_api_sources_json_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}": { + "get": { + "tags": [ + "sources" + ], + "summary": "Get Source", + "description": "Get a specific source by ID.", + "operationId": "get_source_api_sources__source_id__get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "sources" + ], + "summary": "Update Source", + "description": "Update a source.", + "operationId": "update_source_api_sources__source_id__put", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "sources" + ], + "summary": "Delete Source", + "description": "Delete a source.", + "operationId": "delete_source_api_sources__source_id__delete", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/download": { + "head": { + "tags": [ + "sources" + ], + "summary": "Check Source File", + "description": "Check if a source has a downloadable file.", + "operationId": "check_source_file_api_sources__source_id__download_head", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "get": { + "tags": [ + "sources" + ], + "summary": "Download Source File", + "description": "Download the original file associated with an uploaded source.", + "operationId": "download_source_file_api_sources__source_id__download_get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/status": { + "get": { + "tags": [ + "sources" + ], + "summary": "Get Source Status", + "description": "Get processing status for a source.", + "operationId": "get_source_status_api_sources__source_id__status_get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceStatusResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/retry": { + "post": { + "tags": [ + "sources" + ], + "summary": "Retry Source Processing", + "description": "Retry processing for a failed or stuck source.", + "operationId": "retry_source_processing_api_sources__source_id__retry_post", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/insights": { + "get": { + "tags": [ + "sources" + ], + "summary": "Get Source Insights", + "description": "Get all insights for a specific source.", + "operationId": "get_source_insights_api_sources__source_id__insights_get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceInsightResponse" + }, + "title": "Response Get Source Insights Api Sources Source Id Insights Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "sources" + ], + "summary": "Create Source Insight", + "description": "Create a new insight for a source by running a transformation.", + "operationId": "create_source_insight_api_sources__source_id__insights_post", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Source Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSourceInsightRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceInsightResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/insights/{insight_id}": { + "get": { + "tags": [ + "insights" + ], + "summary": "Get Insight", + "description": "Get a specific insight by ID.", + "operationId": "get_insight_api_insights__insight_id__get", + "parameters": [ + { + "name": "insight_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Insight Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceInsightResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "insights" + ], + "summary": "Delete Insight", + "description": "Delete a specific insight.", + "operationId": "delete_insight_api_insights__insight_id__delete", + "parameters": [ + { + "name": "insight_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Insight Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/insights/{insight_id}/save-as-note": { + "post": { + "tags": [ + "insights" + ], + "summary": "Save Insight As Note", + "description": "Convert an insight to a note.", + "operationId": "save_insight_as_note_api_insights__insight_id__save_as_note_post", + "parameters": [ + { + "name": "insight_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Insight Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SaveAsNoteRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoteResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/commands/jobs": { + "post": { + "tags": [ + "commands" + ], + "summary": "Execute Command", + "description": "Submit a command for background processing.\nReturns immediately with job ID for status tracking.\n\nExample request:\n{\n \"command\": \"process_text\",\n \"app\": \"open_notebook\", \n \"input\": { \n \"text\": \"Hello world\", \n \"operation\": \"uppercase\" \n }\n}", + "operationId": "execute_command_api_commands_jobs_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandExecutionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandJobResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "get": { + "tags": [ + "commands" + ], + "summary": "List Command Jobs", + "description": "List command jobs with optional filtering", + "operationId": "list_command_jobs_api_commands_jobs_get", + "parameters": [ + { + "name": "command_filter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by command name", + "title": "Command Filter" + }, + "description": "Filter by command name" + }, + { + "name": "status_filter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by status", + "title": "Status Filter" + }, + "description": "Filter by status" + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "description": "Maximum number of jobs to return", + "default": 50, + "title": "Limit" + }, + "description": "Maximum number of jobs to return" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + }, + "title": "Response List Command Jobs Api Commands Jobs Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/commands/jobs/{job_id}": { + "get": { + "tags": [ + "commands" + ], + "summary": "Get Command Job Status", + "description": "Get the status of a specific command job", + "operationId": "get_command_job_status_api_commands_jobs__job_id__get", + "parameters": [ + { + "name": "job_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Job Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandJobStatusResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "commands" + ], + "summary": "Cancel Command Job", + "description": "Cancel a running command job", + "operationId": "cancel_command_job_api_commands_jobs__job_id__delete", + "parameters": [ + { + "name": "job_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Job Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/commands/registry/debug": { + "get": { + "tags": [ + "commands" + ], + "summary": "Debug Registry", + "description": "Debug endpoint to see what commands are registered", + "operationId": "debug_registry_api_commands_registry_debug_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/api/podcasts/generate": { + "post": { + "tags": [ + "podcasts" + ], + "summary": "Generate Podcast", + "description": "Generate a podcast episode using Episode Profiles.\nReturns immediately with job ID for status tracking.", + "operationId": "generate_podcast_api_podcasts_generate_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PodcastGenerationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PodcastGenerationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/podcasts/jobs/{job_id}": { + "get": { + "tags": [ + "podcasts" + ], + "summary": "Get Podcast Job Status", + "description": "Get the status of a podcast generation job", + "operationId": "get_podcast_job_status_api_podcasts_jobs__job_id__get", + "parameters": [ + { + "name": "job_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Job Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/podcasts/episodes": { + "get": { + "tags": [ + "podcasts" + ], + "summary": "List Podcast Episodes", + "description": "List all podcast episodes", + "operationId": "list_podcast_episodes_api_podcasts_episodes_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PodcastEpisodeResponse" + }, + "type": "array", + "title": "Response List Podcast Episodes Api Podcasts Episodes Get" + } + } + } + } + } + } + }, + "/api/podcasts/episodes/{episode_id}": { + "get": { + "tags": [ + "podcasts" + ], + "summary": "Get Podcast Episode", + "description": "Get a specific podcast episode", + "operationId": "get_podcast_episode_api_podcasts_episodes__episode_id__get", + "parameters": [ + { + "name": "episode_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Episode Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PodcastEpisodeResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "podcasts" + ], + "summary": "Delete Podcast Episode", + "description": "Delete a podcast episode and its associated audio file", + "operationId": "delete_podcast_episode_api_podcasts_episodes__episode_id__delete", + "parameters": [ + { + "name": "episode_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Episode Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/podcasts/episodes/{episode_id}/audio": { + "get": { + "tags": [ + "podcasts" + ], + "summary": "Stream Podcast Episode Audio", + "description": "Stream the audio file associated with a podcast episode", + "operationId": "stream_podcast_episode_audio_api_podcasts_episodes__episode_id__audio_get", + "parameters": [ + { + "name": "episode_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Episode Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/episode-profiles": { + "get": { + "tags": [ + "episode-profiles" + ], + "summary": "List Episode Profiles", + "description": "List all available episode profiles", + "operationId": "list_episode_profiles_api_episode_profiles_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/EpisodeProfileResponse" + }, + "type": "array", + "title": "Response List Episode Profiles Api Episode Profiles Get" + } + } + } + } + } + }, + "post": { + "tags": [ + "episode-profiles" + ], + "summary": "Create Episode Profile", + "description": "Create a new episode profile", + "operationId": "create_episode_profile_api_episode_profiles_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeProfileCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/episode-profiles/{profile_name}": { + "get": { + "tags": [ + "episode-profiles" + ], + "summary": "Get Episode Profile", + "description": "Get a specific episode profile by name", + "operationId": "get_episode_profile_api_episode_profiles__profile_name__get", + "parameters": [ + { + "name": "profile_name", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Name" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/episode-profiles/{profile_id}": { + "put": { + "tags": [ + "episode-profiles" + ], + "summary": "Update Episode Profile", + "description": "Update an existing episode profile", + "operationId": "update_episode_profile_api_episode_profiles__profile_id__put", + "parameters": [ + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeProfileCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "episode-profiles" + ], + "summary": "Delete Episode Profile", + "description": "Delete an episode profile", + "operationId": "delete_episode_profile_api_episode_profiles__profile_id__delete", + "parameters": [ + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/episode-profiles/{profile_id}/duplicate": { + "post": { + "tags": [ + "episode-profiles" + ], + "summary": "Duplicate Episode Profile", + "description": "Duplicate an episode profile", + "operationId": "duplicate_episode_profile_api_episode_profiles__profile_id__duplicate_post", + "parameters": [ + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/speaker-profiles": { + "get": { + "tags": [ + "speaker-profiles" + ], + "summary": "List Speaker Profiles", + "description": "List all available speaker profiles", + "operationId": "list_speaker_profiles_api_speaker_profiles_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/SpeakerProfileResponse" + }, + "type": "array", + "title": "Response List Speaker Profiles Api Speaker Profiles Get" + } + } + } + } + } + }, + "post": { + "tags": [ + "speaker-profiles" + ], + "summary": "Create Speaker Profile", + "description": "Create a new speaker profile", + "operationId": "create_speaker_profile_api_speaker_profiles_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpeakerProfileCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpeakerProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/speaker-profiles/{profile_name}": { + "get": { + "tags": [ + "speaker-profiles" + ], + "summary": "Get Speaker Profile", + "description": "Get a specific speaker profile by name", + "operationId": "get_speaker_profile_api_speaker_profiles__profile_name__get", + "parameters": [ + { + "name": "profile_name", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Name" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpeakerProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/speaker-profiles/{profile_id}": { + "put": { + "tags": [ + "speaker-profiles" + ], + "summary": "Update Speaker Profile", + "description": "Update an existing speaker profile", + "operationId": "update_speaker_profile_api_speaker_profiles__profile_id__put", + "parameters": [ + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpeakerProfileCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpeakerProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "speaker-profiles" + ], + "summary": "Delete Speaker Profile", + "description": "Delete a speaker profile", + "operationId": "delete_speaker_profile_api_speaker_profiles__profile_id__delete", + "parameters": [ + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/speaker-profiles/{profile_id}/duplicate": { + "post": { + "tags": [ + "speaker-profiles" + ], + "summary": "Duplicate Speaker Profile", + "description": "Duplicate a speaker profile", + "operationId": "duplicate_speaker_profile_api_speaker_profiles__profile_id__duplicate_post", + "parameters": [ + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Profile Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpeakerProfileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/chat/sessions": { + "get": { + "tags": [ + "chat" + ], + "summary": "Get Sessions", + "description": "Get all chat sessions for a notebook.", + "operationId": "get_sessions_api_chat_sessions_get", + "parameters": [ + { + "name": "notebook_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Notebook ID", + "title": "Notebook Id" + }, + "description": "Notebook ID" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChatSessionResponse" + }, + "title": "Response Get Sessions Api Chat Sessions Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "chat" + ], + "summary": "Create Session", + "description": "Create a new chat session.", + "operationId": "create_session_api_chat_sessions_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSessionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChatSessionResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/chat/sessions/{session_id}": { + "get": { + "tags": [ + "chat" + ], + "summary": "Get Session", + "description": "Get a specific session with its messages.", + "operationId": "get_session_api_chat_sessions__session_id__get", + "parameters": [ + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Session Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChatSessionWithMessagesResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "chat" + ], + "summary": "Update Session", + "description": "Update session title.", + "operationId": "update_session_api_chat_sessions__session_id__put", + "parameters": [ + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Session Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSessionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChatSessionResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "chat" + ], + "summary": "Delete Session", + "description": "Delete a chat session.", + "operationId": "delete_session_api_chat_sessions__session_id__delete", + "parameters": [ + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Session Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/api__routers__source_chat__SuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/chat/execute": { + "post": { + "tags": [ + "chat" + ], + "summary": "Execute Chat", + "description": "Execute a chat request and get AI response.", + "operationId": "execute_chat_api_chat_execute_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecuteChatRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecuteChatResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/chat/context": { + "post": { + "tags": [ + "chat" + ], + "summary": "Build Context", + "description": "Build context for a notebook based on context configuration.", + "operationId": "build_context_api_chat_context_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BuildContextRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BuildContextResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/chat/sessions": { + "post": { + "tags": [ + "source-chat" + ], + "summary": "Create Source Chat Session", + "description": "Create a new chat session for a source.", + "operationId": "create_source_chat_session_api_sources__source_id__chat_sessions_post", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Source ID", + "title": "Source Id" + }, + "description": "Source ID" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSourceChatSessionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceChatSessionResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "get": { + "tags": [ + "source-chat" + ], + "summary": "Get Source Chat Sessions", + "description": "Get all chat sessions for a source.", + "operationId": "get_source_chat_sessions_api_sources__source_id__chat_sessions_get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Source ID", + "title": "Source Id" + }, + "description": "Source ID" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceChatSessionResponse" + }, + "title": "Response Get Source Chat Sessions Api Sources Source Id Chat Sessions Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/chat/sessions/{session_id}": { + "get": { + "tags": [ + "source-chat" + ], + "summary": "Get Source Chat Session", + "description": "Get a specific source chat session with its messages.", + "operationId": "get_source_chat_session_api_sources__source_id__chat_sessions__session_id__get", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Source ID", + "title": "Source Id" + }, + "description": "Source ID" + }, + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Session ID", + "title": "Session Id" + }, + "description": "Session ID" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceChatSessionWithMessagesResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "source-chat" + ], + "summary": "Update Source Chat Session", + "description": "Update source chat session title and/or model override.", + "operationId": "update_source_chat_session_api_sources__source_id__chat_sessions__session_id__put", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Source ID", + "title": "Source Id" + }, + "description": "Source ID" + }, + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Session ID", + "title": "Session Id" + }, + "description": "Session ID" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSourceChatSessionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceChatSessionResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "source-chat" + ], + "summary": "Delete Source Chat Session", + "description": "Delete a source chat session.", + "operationId": "delete_source_chat_session_api_sources__source_id__chat_sessions__session_id__delete", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Source ID", + "title": "Source Id" + }, + "description": "Source ID" + }, + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Session ID", + "title": "Session Id" + }, + "description": "Session ID" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/api__routers__source_chat__SuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/sources/{source_id}/chat/sessions/{session_id}/messages": { + "post": { + "tags": [ + "source-chat" + ], + "summary": "Send Message To Source Chat", + "description": "Send a message to source chat session with SSE streaming response.", + "operationId": "send_message_to_source_chat_api_sources__source_id__chat_sessions__session_id__messages_post", + "parameters": [ + { + "name": "source_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Source ID", + "title": "Source Id" + }, + "description": "Source ID" + }, + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "Session ID", + "title": "Session Id" + }, + "description": "Session ID" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendMessageRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/": { + "get": { + "summary": "Root", + "operationId": "root__get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/health": { + "get": { + "summary": "Health", + "operationId": "health_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AskRequest": { + "properties": { + "question": { + "type": "string", + "title": "Question", + "description": "Question to ask the knowledge base" + }, + "strategy_model": { + "type": "string", + "title": "Strategy Model", + "description": "Model ID for query strategy" + }, + "answer_model": { + "type": "string", + "title": "Answer Model", + "description": "Model ID for individual answers" + }, + "final_answer_model": { + "type": "string", + "title": "Final Answer Model", + "description": "Model ID for final answer" + } + }, + "type": "object", + "required": [ + "question", + "strategy_model", + "answer_model", + "final_answer_model" + ], + "title": "AskRequest" + }, + "AskResponse": { + "properties": { + "answer": { + "type": "string", + "title": "Answer", + "description": "Final answer from the knowledge base" + }, + "question": { + "type": "string", + "title": "Question", + "description": "Original question" + } + }, + "type": "object", + "required": [ + "answer", + "question" + ], + "title": "AskResponse" + }, + "AssetModel": { + "properties": { + "file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File Path" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url" + } + }, + "type": "object", + "title": "AssetModel" + }, + "Body_create_source_api_sources_post": { + "properties": { + "type": { + "type": "string", + "title": "Type" + }, + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id" + }, + "notebooks": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebooks" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "transformations": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Transformations" + }, + "embed": { + "type": "string", + "title": "Embed", + "default": "false" + }, + "delete_source": { + "type": "string", + "title": "Delete Source", + "default": "false" + }, + "async_processing": { + "type": "string", + "title": "Async Processing", + "default": "false" + }, + "file": { + "anyOf": [ + { + "type": "string", + "format": "binary" + }, + { + "type": "null" + } + ], + "title": "File" + } + }, + "type": "object", + "required": [ + "type" + ], + "title": "Body_create_source_api_sources_post" + }, + "BuildContextRequest": { + "properties": { + "notebook_id": { + "type": "string", + "title": "Notebook Id", + "description": "Notebook ID" + }, + "context_config": { + "additionalProperties": true, + "type": "object", + "title": "Context Config", + "description": "Context configuration" + } + }, + "type": "object", + "required": [ + "notebook_id", + "context_config" + ], + "title": "BuildContextRequest" + }, + "BuildContextResponse": { + "properties": { + "context": { + "additionalProperties": true, + "type": "object", + "title": "Context", + "description": "Built context data" + }, + "token_count": { + "type": "integer", + "title": "Token Count", + "description": "Estimated token count" + }, + "char_count": { + "type": "integer", + "title": "Char Count", + "description": "Character count" + } + }, + "type": "object", + "required": [ + "context", + "token_count", + "char_count" + ], + "title": "BuildContextResponse" + }, + "ChatSessionResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Session ID" + }, + "title": { + "type": "string", + "title": "Title", + "description": "Session title" + }, + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id", + "description": "Notebook ID" + }, + "created": { + "type": "string", + "title": "Created", + "description": "Creation timestamp" + }, + "updated": { + "type": "string", + "title": "Updated", + "description": "Last update timestamp" + }, + "message_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Message Count", + "description": "Number of messages in session" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Model override for this session" + } + }, + "type": "object", + "required": [ + "id", + "title", + "created", + "updated" + ], + "title": "ChatSessionResponse" + }, + "ChatSessionWithMessagesResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Session ID" + }, + "title": { + "type": "string", + "title": "Title", + "description": "Session title" + }, + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id", + "description": "Notebook ID" + }, + "created": { + "type": "string", + "title": "Created", + "description": "Creation timestamp" + }, + "updated": { + "type": "string", + "title": "Updated", + "description": "Last update timestamp" + }, + "message_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Message Count", + "description": "Number of messages in session" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Model override for this session" + }, + "messages": { + "items": { + "$ref": "#/components/schemas/api__routers__chat__ChatMessage" + }, + "type": "array", + "title": "Messages", + "description": "Session messages" + } + }, + "type": "object", + "required": [ + "id", + "title", + "created", + "updated" + ], + "title": "ChatSessionWithMessagesResponse" + }, + "CommandExecutionRequest": { + "properties": { + "command": { + "type": "string", + "title": "Command", + "description": "Command function name (e.g., 'process_text')" + }, + "app": { + "type": "string", + "title": "App", + "description": "Application name (e.g., 'open_notebook')" + }, + "input": { + "additionalProperties": true, + "type": "object", + "title": "Input", + "description": "Arguments to pass to the command" + } + }, + "type": "object", + "required": [ + "command", + "app", + "input" + ], + "title": "CommandExecutionRequest" + }, + "CommandJobResponse": { + "properties": { + "job_id": { + "type": "string", + "title": "Job Id" + }, + "status": { + "type": "string", + "title": "Status" + }, + "message": { + "type": "string", + "title": "Message" + } + }, + "type": "object", + "required": [ + "job_id", + "status", + "message" + ], + "title": "CommandJobResponse" + }, + "CommandJobStatusResponse": { + "properties": { + "job_id": { + "type": "string", + "title": "Job Id" + }, + "status": { + "type": "string", + "title": "Status" + }, + "result": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Result" + }, + "error_message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error Message" + }, + "created": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created" + }, + "updated": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Updated" + }, + "progress": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Progress" + } + }, + "type": "object", + "required": [ + "job_id", + "status" + ], + "title": "CommandJobStatusResponse" + }, + "ContextConfig": { + "properties": { + "sources": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "title": "Sources", + "description": "Source inclusion config {source_id: level}" + }, + "notes": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "title": "Notes", + "description": "Note inclusion config {note_id: level}" + } + }, + "type": "object", + "title": "ContextConfig" + }, + "ContextIndicator": { + "properties": { + "sources": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Sources", + "description": "Source IDs used in context" + }, + "insights": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Insights", + "description": "Insight IDs used in context" + }, + "notes": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Notes", + "description": "Note IDs used in context" + } + }, + "type": "object", + "title": "ContextIndicator" + }, + "ContextRequest": { + "properties": { + "notebook_id": { + "type": "string", + "title": "Notebook Id", + "description": "Notebook ID to get context for" + }, + "context_config": { + "anyOf": [ + { + "$ref": "#/components/schemas/ContextConfig" + }, + { + "type": "null" + } + ], + "description": "Context configuration" + } + }, + "type": "object", + "required": [ + "notebook_id" + ], + "title": "ContextRequest" + }, + "ContextResponse": { + "properties": { + "notebook_id": { + "type": "string", + "title": "Notebook Id" + }, + "sources": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array", + "title": "Sources", + "description": "Source context data" + }, + "notes": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array", + "title": "Notes", + "description": "Note context data" + }, + "total_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Tokens", + "description": "Estimated token count" + } + }, + "type": "object", + "required": [ + "notebook_id", + "sources", + "notes" + ], + "title": "ContextResponse" + }, + "CreateSessionRequest": { + "properties": { + "notebook_id": { + "type": "string", + "title": "Notebook Id", + "description": "Notebook ID to create session for" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Optional session title" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Optional model override for this session" + } + }, + "type": "object", + "required": [ + "notebook_id" + ], + "title": "CreateSessionRequest" + }, + "CreateSourceChatSessionRequest": { + "properties": { + "source_id": { + "type": "string", + "title": "Source Id", + "description": "Source ID to create chat session for" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Optional session title" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Optional model override for this session" + } + }, + "type": "object", + "required": [ + "source_id" + ], + "title": "CreateSourceChatSessionRequest" + }, + "CreateSourceInsightRequest": { + "properties": { + "transformation_id": { + "type": "string", + "title": "Transformation Id", + "description": "ID of transformation to apply" + }, + "model_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Id", + "description": "Model ID (uses default if not provided)" + } + }, + "type": "object", + "required": [ + "transformation_id" + ], + "title": "CreateSourceInsightRequest" + }, + "DefaultModelsResponse": { + "properties": { + "default_chat_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Chat Model" + }, + "default_transformation_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Transformation Model" + }, + "large_context_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Large Context Model" + }, + "default_text_to_speech_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Text To Speech Model" + }, + "default_speech_to_text_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Speech To Text Model" + }, + "default_embedding_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Embedding Model" + }, + "default_tools_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Tools Model" + } + }, + "type": "object", + "title": "DefaultModelsResponse" + }, + "DefaultPromptResponse": { + "properties": { + "transformation_instructions": { + "type": "string", + "title": "Transformation Instructions", + "description": "Default transformation instructions" + } + }, + "type": "object", + "required": [ + "transformation_instructions" + ], + "title": "DefaultPromptResponse" + }, + "DefaultPromptUpdate": { + "properties": { + "transformation_instructions": { + "type": "string", + "title": "Transformation Instructions", + "description": "Default transformation instructions" + } + }, + "type": "object", + "required": [ + "transformation_instructions" + ], + "title": "DefaultPromptUpdate" + }, + "EmbedRequest": { + "properties": { + "item_id": { + "type": "string", + "title": "Item Id", + "description": "ID of the item to embed" + }, + "item_type": { + "type": "string", + "title": "Item Type", + "description": "Type of item (source, note)" + }, + "async_processing": { + "type": "boolean", + "title": "Async Processing", + "description": "Process asynchronously in background", + "default": false + } + }, + "type": "object", + "required": [ + "item_id", + "item_type" + ], + "title": "EmbedRequest" + }, + "EmbedResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Whether embedding was successful" + }, + "message": { + "type": "string", + "title": "Message", + "description": "Result message" + }, + "item_id": { + "type": "string", + "title": "Item Id", + "description": "ID of the item that was embedded" + }, + "item_type": { + "type": "string", + "title": "Item Type", + "description": "Type of item that was embedded" + }, + "command_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Command Id", + "description": "Command ID for async processing" + } + }, + "type": "object", + "required": [ + "success", + "message", + "item_id", + "item_type" + ], + "title": "EmbedResponse" + }, + "EpisodeProfileCreate": { + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Unique profile name" + }, + "description": { + "type": "string", + "title": "Description", + "description": "Profile description", + "default": "" + }, + "speaker_config": { + "type": "string", + "title": "Speaker Config", + "description": "Reference to speaker profile name" + }, + "outline_provider": { + "type": "string", + "title": "Outline Provider", + "description": "AI provider for outline generation" + }, + "outline_model": { + "type": "string", + "title": "Outline Model", + "description": "AI model for outline generation" + }, + "transcript_provider": { + "type": "string", + "title": "Transcript Provider", + "description": "AI provider for transcript generation" + }, + "transcript_model": { + "type": "string", + "title": "Transcript Model", + "description": "AI model for transcript generation" + }, + "default_briefing": { + "type": "string", + "title": "Default Briefing", + "description": "Default briefing template" + }, + "num_segments": { + "type": "integer", + "title": "Num Segments", + "description": "Number of podcast segments", + "default": 5 + } + }, + "type": "object", + "required": [ + "name", + "speaker_config", + "outline_provider", + "outline_model", + "transcript_provider", + "transcript_model", + "default_briefing" + ], + "title": "EpisodeProfileCreate" + }, + "EpisodeProfileResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "speaker_config": { + "type": "string", + "title": "Speaker Config" + }, + "outline_provider": { + "type": "string", + "title": "Outline Provider" + }, + "outline_model": { + "type": "string", + "title": "Outline Model" + }, + "transcript_provider": { + "type": "string", + "title": "Transcript Provider" + }, + "transcript_model": { + "type": "string", + "title": "Transcript Model" + }, + "default_briefing": { + "type": "string", + "title": "Default Briefing" + }, + "num_segments": { + "type": "integer", + "title": "Num Segments" + } + }, + "type": "object", + "required": [ + "id", + "name", + "description", + "speaker_config", + "outline_provider", + "outline_model", + "transcript_provider", + "transcript_model", + "default_briefing", + "num_segments" + ], + "title": "EpisodeProfileResponse" + }, + "ExecuteChatRequest": { + "properties": { + "session_id": { + "type": "string", + "title": "Session Id", + "description": "Chat session ID" + }, + "message": { + "type": "string", + "title": "Message", + "description": "User message content" + }, + "context": { + "additionalProperties": true, + "type": "object", + "title": "Context", + "description": "Chat context with sources and notes" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Optional model override for this message" + } + }, + "type": "object", + "required": [ + "session_id", + "message", + "context" + ], + "title": "ExecuteChatRequest" + }, + "ExecuteChatResponse": { + "properties": { + "session_id": { + "type": "string", + "title": "Session Id", + "description": "Session ID" + }, + "messages": { + "items": { + "$ref": "#/components/schemas/api__routers__chat__ChatMessage" + }, + "type": "array", + "title": "Messages", + "description": "Updated message list" + } + }, + "type": "object", + "required": [ + "session_id", + "messages" + ], + "title": "ExecuteChatResponse" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "ModelCreate": { + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Model name (e.g., gpt-5-mini, claude, gemini)" + }, + "provider": { + "type": "string", + "title": "Provider", + "description": "Provider name (e.g., openai, anthropic, gemini)" + }, + "type": { + "type": "string", + "title": "Type", + "description": "Model type (language, embedding, text_to_speech, speech_to_text)" + } + }, + "type": "object", + "required": [ + "name", + "provider", + "type" + ], + "title": "ModelCreate" + }, + "ModelResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "provider": { + "type": "string", + "title": "Provider" + }, + "type": { + "type": "string", + "title": "Type" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + } + }, + "type": "object", + "required": [ + "id", + "name", + "provider", + "type", + "created", + "updated" + ], + "title": "ModelResponse" + }, + "NoteCreate": { + "properties": { + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Note title" + }, + "content": { + "type": "string", + "title": "Content", + "description": "Note content" + }, + "note_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Note Type", + "description": "Type of note (human, ai)", + "default": "human" + }, + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id", + "description": "Notebook ID to add the note to" + } + }, + "type": "object", + "required": [ + "content" + ], + "title": "NoteCreate" + }, + "NoteResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "note_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Note Type" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + } + }, + "type": "object", + "required": [ + "id", + "title", + "content", + "note_type", + "created", + "updated" + ], + "title": "NoteResponse" + }, + "NoteUpdate": { + "properties": { + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Note title" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content", + "description": "Note content" + }, + "note_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Note Type", + "description": "Type of note (human, ai)" + } + }, + "type": "object", + "title": "NoteUpdate" + }, + "NotebookCreate": { + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of the notebook" + }, + "description": { + "type": "string", + "title": "Description", + "description": "Description of the notebook", + "default": "" + } + }, + "type": "object", + "required": [ + "name" + ], + "title": "NotebookCreate" + }, + "NotebookResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "archived": { + "type": "boolean", + "title": "Archived" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + }, + "source_count": { + "type": "integer", + "title": "Source Count" + }, + "note_count": { + "type": "integer", + "title": "Note Count" + } + }, + "type": "object", + "required": [ + "id", + "name", + "description", + "archived", + "created", + "updated", + "source_count", + "note_count" + ], + "title": "NotebookResponse" + }, + "NotebookUpdate": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name", + "description": "Name of the notebook" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Description of the notebook" + }, + "archived": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Archived", + "description": "Whether the notebook is archived" + } + }, + "type": "object", + "title": "NotebookUpdate" + }, + "PodcastEpisodeResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "episode_profile": { + "additionalProperties": true, + "type": "object", + "title": "Episode Profile" + }, + "speaker_profile": { + "additionalProperties": true, + "type": "object", + "title": "Speaker Profile" + }, + "briefing": { + "type": "string", + "title": "Briefing" + }, + "audio_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audio File" + }, + "audio_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audio Url" + }, + "transcript": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Transcript" + }, + "outline": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Outline" + }, + "created": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created" + }, + "job_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Job Status" + } + }, + "type": "object", + "required": [ + "id", + "name", + "episode_profile", + "speaker_profile", + "briefing" + ], + "title": "PodcastEpisodeResponse" + }, + "PodcastGenerationRequest": { + "properties": { + "episode_profile": { + "type": "string", + "title": "Episode Profile" + }, + "speaker_profile": { + "type": "string", + "title": "Speaker Profile" + }, + "episode_name": { + "type": "string", + "title": "Episode Name" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id" + }, + "briefing_suffix": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Briefing Suffix" + } + }, + "type": "object", + "required": [ + "episode_profile", + "speaker_profile", + "episode_name" + ], + "title": "PodcastGenerationRequest", + "description": "Request model for podcast generation" + }, + "PodcastGenerationResponse": { + "properties": { + "job_id": { + "type": "string", + "title": "Job Id" + }, + "status": { + "type": "string", + "title": "Status" + }, + "message": { + "type": "string", + "title": "Message" + }, + "episode_profile": { + "type": "string", + "title": "Episode Profile" + }, + "episode_name": { + "type": "string", + "title": "Episode Name" + } + }, + "type": "object", + "required": [ + "job_id", + "status", + "message", + "episode_profile", + "episode_name" + ], + "title": "PodcastGenerationResponse", + "description": "Response model for podcast generation" + }, + "ProviderAvailabilityResponse": { + "properties": { + "available": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Available", + "description": "List of available providers" + }, + "unavailable": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Unavailable", + "description": "List of unavailable providers" + }, + "supported_types": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object", + "title": "Supported Types", + "description": "Provider to supported model types mapping" + } + }, + "type": "object", + "required": [ + "available", + "unavailable", + "supported_types" + ], + "title": "ProviderAvailabilityResponse" + }, + "RebuildProgress": { + "properties": { + "processed": { + "type": "integer", + "title": "Processed", + "description": "Number of items processed" + }, + "total": { + "type": "integer", + "title": "Total", + "description": "Total items to process" + }, + "percentage": { + "type": "number", + "title": "Percentage", + "description": "Progress percentage" + } + }, + "type": "object", + "required": [ + "processed", + "total", + "percentage" + ], + "title": "RebuildProgress" + }, + "RebuildRequest": { + "properties": { + "mode": { + "type": "string", + "enum": [ + "existing", + "all" + ], + "title": "Mode", + "description": "Rebuild mode: 'existing' only re-embeds items with embeddings, 'all' embeds everything" + }, + "include_sources": { + "type": "boolean", + "title": "Include Sources", + "description": "Include sources in rebuild", + "default": true + }, + "include_notes": { + "type": "boolean", + "title": "Include Notes", + "description": "Include notes in rebuild", + "default": true + }, + "include_insights": { + "type": "boolean", + "title": "Include Insights", + "description": "Include insights in rebuild", + "default": true + } + }, + "type": "object", + "required": [ + "mode" + ], + "title": "RebuildRequest" + }, + "RebuildResponse": { + "properties": { + "command_id": { + "type": "string", + "title": "Command Id", + "description": "Command ID to track progress" + }, + "total_items": { + "type": "integer", + "title": "Total Items", + "description": "Estimated number of items to process" + }, + "message": { + "type": "string", + "title": "Message", + "description": "Status message" + } + }, + "type": "object", + "required": [ + "command_id", + "total_items", + "message" + ], + "title": "RebuildResponse" + }, + "RebuildStats": { + "properties": { + "sources": { + "type": "integer", + "title": "Sources", + "description": "Sources processed", + "default": 0 + }, + "notes": { + "type": "integer", + "title": "Notes", + "description": "Notes processed", + "default": 0 + }, + "insights": { + "type": "integer", + "title": "Insights", + "description": "Insights processed", + "default": 0 + }, + "failed": { + "type": "integer", + "title": "Failed", + "description": "Failed items", + "default": 0 + } + }, + "type": "object", + "title": "RebuildStats" + }, + "RebuildStatusResponse": { + "properties": { + "command_id": { + "type": "string", + "title": "Command Id", + "description": "Command ID" + }, + "status": { + "type": "string", + "title": "Status", + "description": "Status: queued, running, completed, failed" + }, + "progress": { + "anyOf": [ + { + "$ref": "#/components/schemas/RebuildProgress" + }, + { + "type": "null" + } + ] + }, + "stats": { + "anyOf": [ + { + "$ref": "#/components/schemas/RebuildStats" + }, + { + "type": "null" + } + ] + }, + "started_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Started At" + }, + "completed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "error_message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error Message" + } + }, + "type": "object", + "required": [ + "command_id", + "status" + ], + "title": "RebuildStatusResponse" + }, + "SaveAsNoteRequest": { + "properties": { + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id", + "description": "Notebook ID to add note to" + } + }, + "type": "object", + "title": "SaveAsNoteRequest" + }, + "SearchRequest": { + "properties": { + "query": { + "type": "string", + "title": "Query", + "description": "Search query" + }, + "type": { + "type": "string", + "enum": [ + "text", + "vector" + ], + "title": "Type", + "description": "Search type", + "default": "text" + }, + "limit": { + "type": "integer", + "maximum": 1000.0, + "title": "Limit", + "description": "Maximum number of results", + "default": 100 + }, + "search_sources": { + "type": "boolean", + "title": "Search Sources", + "description": "Include sources in search", + "default": true + }, + "search_notes": { + "type": "boolean", + "title": "Search Notes", + "description": "Include notes in search", + "default": true + }, + "minimum_score": { + "type": "number", + "maximum": 1.0, + "minimum": 0.0, + "title": "Minimum Score", + "description": "Minimum score for vector search", + "default": 0.2 + } + }, + "type": "object", + "required": [ + "query" + ], + "title": "SearchRequest" + }, + "SearchResponse": { + "properties": { + "results": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array", + "title": "Results", + "description": "Search results" + }, + "total_count": { + "type": "integer", + "title": "Total Count", + "description": "Total number of results" + }, + "search_type": { + "type": "string", + "title": "Search Type", + "description": "Type of search performed" + } + }, + "type": "object", + "required": [ + "results", + "total_count", + "search_type" + ], + "title": "SearchResponse" + }, + "SendMessageRequest": { + "properties": { + "message": { + "type": "string", + "title": "Message", + "description": "User message content" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Optional model override for this message" + } + }, + "type": "object", + "required": [ + "message" + ], + "title": "SendMessageRequest" + }, + "SettingsResponse": { + "properties": { + "default_content_processing_engine_doc": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Content Processing Engine Doc" + }, + "default_content_processing_engine_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Content Processing Engine Url" + }, + "default_embedding_option": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Embedding Option" + }, + "auto_delete_files": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auto Delete Files" + }, + "youtube_preferred_languages": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Youtube Preferred Languages" + } + }, + "type": "object", + "title": "SettingsResponse" + }, + "SettingsUpdate": { + "properties": { + "default_content_processing_engine_doc": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Content Processing Engine Doc" + }, + "default_content_processing_engine_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Content Processing Engine Url" + }, + "default_embedding_option": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Default Embedding Option" + }, + "auto_delete_files": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auto Delete Files" + }, + "youtube_preferred_languages": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Youtube Preferred Languages" + } + }, + "type": "object", + "title": "SettingsUpdate" + }, + "SourceChatSessionResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Session ID" + }, + "title": { + "type": "string", + "title": "Title", + "description": "Session title" + }, + "source_id": { + "type": "string", + "title": "Source Id", + "description": "Source ID" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Model override for this session" + }, + "created": { + "type": "string", + "title": "Created", + "description": "Creation timestamp" + }, + "updated": { + "type": "string", + "title": "Updated", + "description": "Last update timestamp" + }, + "message_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Message Count", + "description": "Number of messages in session" + } + }, + "type": "object", + "required": [ + "id", + "title", + "source_id", + "created", + "updated" + ], + "title": "SourceChatSessionResponse" + }, + "SourceChatSessionWithMessagesResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Session ID" + }, + "title": { + "type": "string", + "title": "Title", + "description": "Session title" + }, + "source_id": { + "type": "string", + "title": "Source Id", + "description": "Source ID" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Model override for this session" + }, + "created": { + "type": "string", + "title": "Created", + "description": "Creation timestamp" + }, + "updated": { + "type": "string", + "title": "Updated", + "description": "Last update timestamp" + }, + "message_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Message Count", + "description": "Number of messages in session" + }, + "messages": { + "items": { + "$ref": "#/components/schemas/api__routers__chat__ChatMessage" + }, + "type": "array", + "title": "Messages", + "description": "Session messages" + }, + "context_indicators": { + "anyOf": [ + { + "$ref": "#/components/schemas/ContextIndicator" + }, + { + "type": "null" + } + ], + "description": "Context indicators from last response" + } + }, + "type": "object", + "required": [ + "id", + "title", + "source_id", + "created", + "updated" + ], + "title": "SourceChatSessionWithMessagesResponse" + }, + "SourceCreate": { + "properties": { + "notebook_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notebook Id", + "description": "Notebook ID to add the source to (deprecated, use notebooks)" + }, + "notebooks": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Notebooks", + "description": "List of notebook IDs to add the source to" + }, + "type": { + "type": "string", + "title": "Type", + "description": "Source type: link, upload, or text" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url", + "description": "URL for link type" + }, + "file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File Path", + "description": "File path for upload type" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content", + "description": "Text content for text type" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Source title" + }, + "transformations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Transformations", + "description": "Transformation IDs to apply" + }, + "embed": { + "type": "boolean", + "title": "Embed", + "description": "Whether to embed content for vector search", + "default": false + }, + "delete_source": { + "type": "boolean", + "title": "Delete Source", + "description": "Whether to delete uploaded file after processing", + "default": false + }, + "async_processing": { + "type": "boolean", + "title": "Async Processing", + "description": "Whether to process source asynchronously", + "default": false + } + }, + "type": "object", + "required": [ + "type" + ], + "title": "SourceCreate" + }, + "SourceInsightResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "source_id": { + "type": "string", + "title": "Source Id" + }, + "insight_type": { + "type": "string", + "title": "Insight Type" + }, + "content": { + "type": "string", + "title": "Content" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + } + }, + "type": "object", + "required": [ + "id", + "source_id", + "insight_type", + "content", + "created", + "updated" + ], + "title": "SourceInsightResponse" + }, + "SourceListResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "topics": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Topics" + }, + "asset": { + "anyOf": [ + { + "$ref": "#/components/schemas/AssetModel" + }, + { + "type": "null" + } + ] + }, + "embedded": { + "type": "boolean", + "title": "Embedded" + }, + "embedded_chunks": { + "type": "integer", + "title": "Embedded Chunks" + }, + "insights_count": { + "type": "integer", + "title": "Insights Count" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + }, + "file_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "File Available" + }, + "command_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Command Id" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "processing_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Processing Info" + } + }, + "type": "object", + "required": [ + "id", + "title", + "topics", + "asset", + "embedded", + "embedded_chunks", + "insights_count", + "created", + "updated" + ], + "title": "SourceListResponse" + }, + "SourceResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "topics": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Topics" + }, + "asset": { + "anyOf": [ + { + "$ref": "#/components/schemas/AssetModel" + }, + { + "type": "null" + } + ] + }, + "full_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Full Text" + }, + "embedded": { + "type": "boolean", + "title": "Embedded" + }, + "embedded_chunks": { + "type": "integer", + "title": "Embedded Chunks" + }, + "file_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "File Available" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + }, + "command_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Command Id" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "processing_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Processing Info" + }, + "notebooks": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Notebooks" + } + }, + "type": "object", + "required": [ + "id", + "title", + "topics", + "asset", + "full_text", + "embedded", + "embedded_chunks", + "created", + "updated" + ], + "title": "SourceResponse" + }, + "SourceStatusResponse": { + "properties": { + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status", + "description": "Processing status" + }, + "message": { + "type": "string", + "title": "Message", + "description": "Descriptive message about the status" + }, + "processing_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Processing Info", + "description": "Detailed processing information" + }, + "command_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Command Id", + "description": "Command ID if available" + } + }, + "type": "object", + "required": [ + "message" + ], + "title": "SourceStatusResponse" + }, + "SourceUpdate": { + "properties": { + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Source title" + }, + "topics": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Topics", + "description": "Source topics" + } + }, + "type": "object", + "title": "SourceUpdate" + }, + "SpeakerProfileCreate": { + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Unique profile name" + }, + "description": { + "type": "string", + "title": "Description", + "description": "Profile description", + "default": "" + }, + "tts_provider": { + "type": "string", + "title": "Tts Provider", + "description": "TTS provider" + }, + "tts_model": { + "type": "string", + "title": "Tts Model", + "description": "TTS model name" + }, + "speakers": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array", + "title": "Speakers", + "description": "Array of speaker configurations" + } + }, + "type": "object", + "required": [ + "name", + "tts_provider", + "tts_model", + "speakers" + ], + "title": "SpeakerProfileCreate" + }, + "SpeakerProfileResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "tts_provider": { + "type": "string", + "title": "Tts Provider" + }, + "tts_model": { + "type": "string", + "title": "Tts Model" + }, + "speakers": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array", + "title": "Speakers" + } + }, + "type": "object", + "required": [ + "id", + "name", + "description", + "tts_provider", + "tts_model", + "speakers" + ], + "title": "SpeakerProfileResponse" + }, + "TransformationCreate": { + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Transformation name" + }, + "title": { + "type": "string", + "title": "Title", + "description": "Display title for the transformation" + }, + "description": { + "type": "string", + "title": "Description", + "description": "Description of what this transformation does" + }, + "prompt": { + "type": "string", + "title": "Prompt", + "description": "The transformation prompt" + }, + "apply_default": { + "type": "boolean", + "title": "Apply Default", + "description": "Whether to apply this transformation by default", + "default": false + } + }, + "type": "object", + "required": [ + "name", + "title", + "description", + "prompt" + ], + "title": "TransformationCreate" + }, + "TransformationExecuteRequest": { + "properties": { + "transformation_id": { + "type": "string", + "title": "Transformation Id", + "description": "ID of the transformation to execute" + }, + "input_text": { + "type": "string", + "title": "Input Text", + "description": "Text to transform" + }, + "model_id": { + "type": "string", + "title": "Model Id", + "description": "Model ID to use for the transformation" + } + }, + "type": "object", + "required": [ + "transformation_id", + "input_text", + "model_id" + ], + "title": "TransformationExecuteRequest" + }, + "TransformationExecuteResponse": { + "properties": { + "output": { + "type": "string", + "title": "Output", + "description": "Transformed text" + }, + "transformation_id": { + "type": "string", + "title": "Transformation Id", + "description": "ID of the transformation used" + }, + "model_id": { + "type": "string", + "title": "Model Id", + "description": "Model ID used" + } + }, + "type": "object", + "required": [ + "output", + "transformation_id", + "model_id" + ], + "title": "TransformationExecuteResponse" + }, + "TransformationResponse": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "title": { + "type": "string", + "title": "Title" + }, + "description": { + "type": "string", + "title": "Description" + }, + "prompt": { + "type": "string", + "title": "Prompt" + }, + "apply_default": { + "type": "boolean", + "title": "Apply Default" + }, + "created": { + "type": "string", + "title": "Created" + }, + "updated": { + "type": "string", + "title": "Updated" + } + }, + "type": "object", + "required": [ + "id", + "name", + "title", + "description", + "prompt", + "apply_default", + "created", + "updated" + ], + "title": "TransformationResponse" + }, + "TransformationUpdate": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name", + "description": "Transformation name" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "Display title for the transformation" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Description of what this transformation does" + }, + "prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Prompt", + "description": "The transformation prompt" + }, + "apply_default": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Apply Default", + "description": "Whether to apply this transformation by default" + } + }, + "type": "object", + "title": "TransformationUpdate" + }, + "UpdateSessionRequest": { + "properties": { + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "New session title" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Model override for this session" + } + }, + "type": "object", + "title": "UpdateSessionRequest" + }, + "UpdateSourceChatSessionRequest": { + "properties": { + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title", + "description": "New session title" + }, + "model_override": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Override", + "description": "Model override for this session" + } + }, + "type": "object", + "title": "UpdateSourceChatSessionRequest" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + }, + "api__routers__chat__ChatMessage": { + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Message ID" + }, + "type": { + "type": "string", + "title": "Type", + "description": "Message type (human|ai)" + }, + "content": { + "type": "string", + "title": "Content", + "description": "Message content" + }, + "timestamp": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Timestamp", + "description": "Message timestamp" + } + }, + "type": "object", + "required": [ + "id", + "type", + "content" + ], + "title": "ChatMessage" + }, + "api__routers__source_chat__SuccessResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Operation success status", + "default": true + }, + "message": { + "type": "string", + "title": "Message", + "description": "Success message" + } + }, + "type": "object", + "required": [ + "message" + ], + "title": "SuccessResponse" + } + } + } +}