Files
Scriberr/api-docs/swagger.json
rishikanthc 3e5cb9bdb3 fixes CI/CD
2025-08-29 11:46:26 -07:00

3798 lines
124 KiB
JSON

{
"swagger": "2.0",
"info": {
"description": "Audio transcription service using WhisperX",
"title": "Scriberr API",
"termsOfService": "http://swagger.io/terms/",
"contact": {
"name": "API Support",
"url": "http://www.swagger.io/support",
"email": "support@swagger.io"
},
"license": {
"name": "MIT",
"url": "https://opensource.org/licenses/MIT"
},
"version": "1.0"
},
"host": "localhost:8080",
"basePath": "/api/v1",
"paths": {
"/api/v1/admin/queue/stats": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get current queue statistics",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Get queue statistics",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/v1/api-keys": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get all API keys for the current user (without exposing the actual keys)",
"produces": [
"application/json"
],
"tags": [
"api-keys"
],
"summary": "List API keys",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/api.APIKeyListResponse"
}
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Create a new API key for external API access",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"api-keys"
],
"summary": "Create API key",
"parameters": [
{
"description": "API key creation details",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.CreateAPIKeyRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/api.CreateAPIKeyResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/api-keys/{id}": {
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Delete an API key",
"tags": [
"api-keys"
],
"summary": "Delete API key",
"parameters": [
{
"type": "integer",
"description": "API Key ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/auth/change-password": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Change the current user's password",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"auth"
],
"summary": "Change user password",
"parameters": [
{
"description": "Password change details",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.ChangePasswordRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/auth/change-username": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Change the current user's username",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"auth"
],
"summary": "Change username",
"parameters": [
{
"description": "Username change details",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.ChangeUsernameRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"409": {
"description": "Conflict",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/auth/login": {
"post": {
"description": "Authenticate user and return JWT token",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"auth"
],
"summary": "Login",
"parameters": [
{
"description": "User credentials",
"name": "credentials",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.LoginRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.LoginResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/auth/logout": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Logout user and invalidate token (client-side action)",
"produces": [
"application/json"
],
"tags": [
"auth"
],
"summary": "Logout user",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/auth/register": {
"post": {
"description": "Register the initial admin user (only allowed when no users exist)",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"auth"
],
"summary": "Register initial admin user",
"parameters": [
{
"description": "Registration details",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.RegisterRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/api.LoginResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"409": {
"description": "Conflict",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/auth/registration-status": {
"get": {
"description": "Check if the application requires initial user registration",
"produces": [
"application/json"
],
"tags": [
"auth"
],
"summary": "Check registration status",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.RegistrationStatusResponse"
}
}
}
}
},
"/api/v1/chat/models": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get list of available OpenAI chat models",
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Get available chat models",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.ChatModelsResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/chat/sessions": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Create a new chat session for a transcription",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Create a new chat session",
"parameters": [
{
"description": "Chat session creation request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.ChatCreateRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/api.ChatSessionResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/chat/sessions/{session_id}": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get a specific chat session with all its messages",
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Get a chat session with messages",
"parameters": [
{
"type": "string",
"description": "Chat Session ID",
"name": "session_id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.ChatSessionWithMessages"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"delete": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Delete a chat session and all its messages",
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Delete a chat session",
"parameters": [
{
"type": "string",
"description": "Chat Session ID",
"name": "session_id",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "No Content"
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/chat/sessions/{session_id}/messages": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Send a message to a chat session and get streaming response",
"consumes": [
"application/json"
],
"produces": [
"text/plain"
],
"tags": [
"chat"
],
"summary": "Send a message to a chat session",
"parameters": [
{
"type": "string",
"description": "Chat Session ID",
"name": "session_id",
"in": "path",
"required": true
},
{
"description": "Message content",
"name": "message",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.ChatMessageRequest"
}
}
],
"responses": {
"200": {
"description": "Streaming response",
"schema": {
"type": "string"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/chat/sessions/{session_id}/title": {
"put": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Update the title of a chat session",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Update chat session title",
"parameters": [
{
"type": "string",
"description": "Chat Session ID",
"name": "session_id",
"in": "path",
"required": true
},
{
"description": "Title update request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.ChatSessionResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/chat/sessions/{session_id}/title/auto": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Uses the configured LLM to summarize the first exchange into a concise title. Only updates if the current title appears default/user-unset.",
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Auto-generate chat session title",
"parameters": [
{
"type": "string",
"description": "Chat Session ID",
"name": "session_id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.ChatSessionResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/chat/transcriptions/{transcription_id}/sessions": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get all chat sessions for a specific transcription",
"produces": [
"application/json"
],
"tags": [
"chat"
],
"summary": "Get chat sessions for a transcription",
"parameters": [
{
"type": "string",
"description": "Transcription ID",
"name": "transcription_id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/api.ChatSessionResponse"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/llm/config": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get the current active LLM configuration",
"produces": [
"application/json"
],
"tags": [
"llm"
],
"summary": "Get LLM configuration",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.LLMConfigResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Create or update LLM configuration settings",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"llm"
],
"summary": "Create or update LLM configuration",
"parameters": [
{
"description": "LLM configuration details",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.LLMConfigRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.LLMConfigResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/notes/{note_id}": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get a note by its ID",
"produces": [
"application/json"
],
"tags": [
"notes"
],
"summary": "Get a note",
"parameters": [
{
"type": "string",
"description": "Note ID",
"name": "note_id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Note"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Update the content of a note",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"notes"
],
"summary": "Update a note",
"parameters": [
{
"type": "string",
"description": "Note ID",
"name": "note_id",
"in": "path",
"required": true
},
{
"description": "Note update payload",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.NoteUpdateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Note"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"delete": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Delete a note by its ID",
"produces": [
"application/json"
],
"tags": [
"notes"
],
"summary": "Delete a note",
"parameters": [
{
"type": "string",
"description": "Note ID",
"name": "note_id",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "No Content",
"schema": {
"type": "string"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/profiles": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get list of all transcription profiles",
"produces": [
"application/json"
],
"tags": [
"profiles"
],
"summary": "List transcription profiles",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/models.TranscriptionProfile"
}
}
}
}
},
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Create a new transcription profile",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"profiles"
],
"summary": "Create transcription profile",
"parameters": [
{
"description": "Profile data",
"name": "profile",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.TranscriptionProfile"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/models.TranscriptionProfile"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/profiles/{id}": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get a transcription profile by ID",
"produces": [
"application/json"
],
"tags": [
"profiles"
],
"summary": "Get transcription profile",
"parameters": [
{
"type": "string",
"description": "Profile ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionProfile"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Update a transcription profile",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"profiles"
],
"summary": "Update transcription profile",
"parameters": [
{
"type": "string",
"description": "Profile ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Updated profile data",
"name": "profile",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.TranscriptionProfile"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionProfile"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"delete": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Delete a transcription profile",
"produces": [
"application/json"
],
"tags": [
"profiles"
],
"summary": "Delete transcription profile",
"parameters": [
{
"type": "string",
"description": "Profile ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/profiles/{id}/set-default": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Mark the specified profile as the default profile",
"produces": [
"application/json"
],
"tags": [
"profiles"
],
"summary": "Set default transcription profile",
"parameters": [
{
"type": "string",
"description": "Profile ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/summaries": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get all summarization templates",
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "List summarization templates",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/models.SummaryTemplate"
}
}
}
}
},
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
},
{
"BearerAuth": []
}
],
"description": "Create a new summarization template",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "Create summarization template",
"parameters": [
{
"description": "Template payload",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.SummaryTemplateRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/models.SummaryTemplate"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/summaries/settings": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Get global summarization settings",
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "Get summary settings",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.SummarySettingsResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"post": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Create or update global summarization settings",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "Save summary settings",
"parameters": [
{
"description": "Settings payload",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.SummarySettingsRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/api.SummarySettingsResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/summaries/{id}": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get a summarization template by ID",
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "Get summarization template",
"parameters": [
{
"type": "string",
"description": "Template ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.SummaryTemplate"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"put": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
},
{
"BearerAuth": []
}
],
"description": "Update a summarization template by ID",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "Update summarization template",
"parameters": [
{
"type": "string",
"description": "Template ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Template payload",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.SummaryTemplateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.SummaryTemplate"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"delete": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Delete a summarization template by ID",
"produces": [
"application/json"
],
"tags": [
"summaries"
],
"summary": "Delete summarization template",
"parameters": [
{
"type": "string",
"description": "Template ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "No Content",
"schema": {
"type": "string"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/summarize": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Stream an LLM-generated summary for provided content; persists latest summary for the transcription",
"consumes": [
"application/json"
],
"produces": [
"text/event-stream"
],
"tags": [
"summarize"
],
"summary": "Summarize content",
"parameters": [
{
"description": "Summarize request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.SummarizeRequest"
}
}
],
"responses": {
"200": {
"description": "Event stream",
"schema": {
"type": "string"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/list": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get a list of all transcription jobs with optional search and filtering",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "List all transcription records",
"parameters": [
{
"type": "integer",
"default": 1,
"description": "Page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
"default": 10,
"description": "Items per page",
"name": "limit",
"in": "query"
},
{
"type": "string",
"description": "Filter by status",
"name": "status",
"in": "query"
},
{
"type": "string",
"description": "Search in title and audio filename",
"name": "q",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/v1/transcription/models": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get list of supported WhisperX models",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Get supported models",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/v1/transcription/quick": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Submit an audio file for temporary transcription (data discarded after 6 hours)",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Submit quick transcription job",
"parameters": [
{
"type": "file",
"description": "Audio file",
"name": "audio",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "JSON string of transcription parameters",
"name": "parameters",
"in": "formData"
},
{
"type": "string",
"description": "Profile name to use for transcription",
"name": "profile_name",
"in": "formData"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/transcription.QuickTranscriptionJob"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/quick/{id}": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get the current status of a quick transcription job",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Get quick transcription status",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/transcription.QuickTranscriptionJob"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/submit": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Submit an audio file for transcription with WhisperX",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Submit a transcription job",
"parameters": [
{
"type": "file",
"description": "Audio file",
"name": "audio",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "Job title",
"name": "title",
"in": "formData"
},
{
"type": "boolean",
"description": "Enable speaker diarization",
"name": "diarization",
"in": "formData"
},
{
"type": "string",
"default": "base",
"description": "Whisper model",
"name": "model",
"in": "formData"
},
{
"type": "string",
"description": "Language code",
"name": "language",
"in": "formData"
},
{
"type": "integer",
"default": 16,
"description": "Batch size",
"name": "batch_size",
"in": "formData"
},
{
"type": "string",
"default": "float16",
"description": "Compute type",
"name": "compute_type",
"in": "formData"
},
{
"type": "string",
"default": "auto",
"description": "Device",
"name": "device",
"in": "formData"
},
{
"type": "boolean",
"description": "Enable VAD filter",
"name": "vad_filter",
"in": "formData"
},
{
"type": "number",
"default": 0.5,
"description": "VAD onset",
"name": "vad_onset",
"in": "formData"
},
{
"type": "number",
"default": 0.363,
"description": "VAD offset",
"name": "vad_offset",
"in": "formData"
},
{
"type": "integer",
"description": "Minimum speakers for diarization",
"name": "min_speakers",
"in": "formData"
},
{
"type": "integer",
"description": "Maximum speakers for diarization",
"name": "max_speakers",
"in": "formData"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionJob"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/upload": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Upload an audio file without starting transcription",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Upload audio file",
"parameters": [
{
"type": "file",
"description": "Audio file",
"name": "audio",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "Job title",
"name": "title",
"in": "formData"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionJob"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get a specific transcription record by its ID",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Get transcription record by ID",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionJob"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"delete": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Delete a transcription job and its associated files",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Delete transcription job",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/audio": {
"get": {
"security": [
{
"ApiKeyAuth": []
}
],
"description": "Serve the audio file for a transcription job",
"produces": [
"audio/mpeg",
"audio/wav",
"audio/mp4"
],
"tags": [
"transcription"
],
"summary": "Get audio file",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/kill": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Cancel a currently running transcription job",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Kill running transcription job",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/notes": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get all notes attached to a transcription, ordered by time and creation",
"produces": [
"application/json"
],
"tags": [
"notes"
],
"summary": "List notes for a transcription",
"parameters": [
{
"type": "string",
"description": "Transcription ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/models.Note"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Create a new note attached to the specified transcription",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"notes"
],
"summary": "Create a note for a transcription",
"parameters": [
{
"type": "string",
"description": "Transcription ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Note create payload",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/api.NoteCreateRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/models.Note"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/start": {
"post": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Start transcription for an already uploaded audio file",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Start transcription for uploaded file",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Transcription parameters",
"name": "parameters",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.WhisperXParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionJob"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/status": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get the current status of a transcription job",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Get job status",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TranscriptionJob"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/summary": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get the most recent saved summary for the given transcription",
"produces": [
"application/json"
],
"tags": [
"summarize"
],
"summary": "Get latest summary for transcription",
"parameters": [
{
"type": "string",
"description": "Transcription ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Summary"
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/title": {
"put": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Update the title of an audio file / transcription",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Update transcription title",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Title update request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/v1/transcription/{id}/transcript": {
"get": {
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"description": "Get the transcript for a completed transcription job",
"produces": [
"application/json"
],
"tags": [
"transcription"
],
"summary": "Get transcript",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/health": {
"get": {
"description": "Check if the API is healthy",
"produces": [
"application/json"
],
"tags": [
"health"
],
"summary": "Health check",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
},
"definitions": {
"api.APIKeyListResponse": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"description": {
"type": "string"
},
"id": {
"type": "integer"
},
"is_active": {
"type": "boolean"
},
"key_preview": {
"type": "string"
},
"last_used": {
"type": "string"
},
"name": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"api.ChangePasswordRequest": {
"type": "object",
"required": [
"confirmPassword",
"currentPassword",
"newPassword"
],
"properties": {
"confirmPassword": {
"type": "string"
},
"currentPassword": {
"type": "string"
},
"newPassword": {
"type": "string",
"minLength": 6
}
}
},
"api.ChangeUsernameRequest": {
"type": "object",
"required": [
"newUsername",
"password"
],
"properties": {
"newUsername": {
"type": "string",
"maxLength": 50,
"minLength": 3
},
"password": {
"type": "string"
}
}
},
"api.ChatCreateRequest": {
"type": "object",
"required": [
"model",
"transcription_id"
],
"properties": {
"model": {
"type": "string"
},
"title": {
"type": "string"
},
"transcription_id": {
"type": "string"
}
}
},
"api.ChatMessageRequest": {
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string"
}
}
},
"api.ChatMessageResponse": {
"type": "object",
"properties": {
"content": {
"type": "string"
},
"created_at": {
"type": "string"
},
"id": {
"type": "integer"
},
"role": {
"type": "string"
}
}
},
"api.ChatModelsResponse": {
"type": "object",
"properties": {
"models": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"api.ChatSessionResponse": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"id": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"last_activity_at": {
"type": "string"
},
"last_message": {
"$ref": "#/definitions/api.ChatMessageResponse"
},
"message_count": {
"type": "integer"
},
"model": {
"type": "string"
},
"provider": {
"type": "string"
},
"title": {
"type": "string"
},
"transcription_id": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"api.ChatSessionWithMessages": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"id": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"last_activity_at": {
"type": "string"
},
"last_message": {
"$ref": "#/definitions/api.ChatMessageResponse"
},
"message_count": {
"type": "integer"
},
"messages": {
"type": "array",
"items": {
"$ref": "#/definitions/api.ChatMessageResponse"
}
},
"model": {
"type": "string"
},
"provider": {
"type": "string"
},
"title": {
"type": "string"
},
"transcription_id": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"api.CreateAPIKeyRequest": {
"type": "object",
"required": [
"name"
],
"properties": {
"description": {
"type": "string"
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
}
}
},
"api.CreateAPIKeyResponse": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "integer"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"api.LLMConfigRequest": {
"type": "object",
"required": [
"provider"
],
"properties": {
"api_key": {
"type": "string"
},
"base_url": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"provider": {
"type": "string",
"enum": [
"ollama",
"openai"
]
}
}
},
"api.LLMConfigResponse": {
"type": "object",
"properties": {
"base_url": {
"type": "string"
},
"created_at": {
"type": "string"
},
"has_api_key": {
"description": "Don't return actual API key",
"type": "boolean"
},
"id": {
"type": "integer"
},
"is_active": {
"type": "boolean"
},
"provider": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"api.LoginRequest": {
"type": "object",
"required": [
"password",
"username"
],
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"api.LoginResponse": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"user": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"username": {
"type": "string"
}
}
}
}
},
"api.NoteCreateRequest": {
"type": "object",
"required": [
"content",
"quote"
],
"properties": {
"content": {
"type": "string",
"minLength": 1
},
"end_time": {
"type": "number",
"minimum": 0
},
"end_word_index": {
"type": "integer",
"minimum": 0
},
"quote": {
"type": "string",
"minLength": 1
},
"start_time": {
"type": "number",
"minimum": 0
},
"start_word_index": {
"description": "Use gte=0 so 0 is valid (first word/time); avoid 'required' which fails for zero values",
"type": "integer",
"minimum": 0
}
}
},
"api.NoteUpdateRequest": {
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"minLength": 1
}
}
},
"api.RegisterRequest": {
"type": "object",
"required": [
"confirmPassword",
"password",
"username"
],
"properties": {
"confirmPassword": {
"type": "string"
},
"password": {
"type": "string",
"minLength": 6
},
"username": {
"type": "string",
"maxLength": 50,
"minLength": 3
}
}
},
"api.RegistrationStatusResponse": {
"type": "object",
"properties": {
"requiresRegistration": {
"type": "boolean"
}
}
},
"api.SummarizeRequest": {
"type": "object",
"required": [
"content",
"model",
"transcription_id"
],
"properties": {
"content": {
"type": "string"
},
"model": {
"type": "string"
},
"template_id": {
"type": "string"
},
"transcription_id": {
"type": "string"
}
}
},
"api.SummarySettingsRequest": {
"type": "object",
"required": [
"default_model"
],
"properties": {
"default_model": {
"type": "string",
"minLength": 1
}
}
},
"api.SummarySettingsResponse": {
"type": "object",
"properties": {
"default_model": {
"type": "string"
}
}
},
"api.SummaryTemplateRequest": {
"type": "object",
"required": [
"model",
"name",
"prompt"
],
"properties": {
"description": {
"type": "string"
},
"model": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"prompt": {
"type": "string",
"minLength": 1
}
}
},
"models.JobStatus": {
"type": "string",
"enum": [
"uploaded",
"pending",
"processing",
"completed",
"failed"
],
"x-enum-varnames": [
"StatusUploaded",
"StatusPending",
"StatusProcessing",
"StatusCompleted",
"StatusFailed"
]
},
"models.Note": {
"type": "object",
"properties": {
"content": {
"description": "The user's note content (markdown/plain)",
"type": "string"
},
"created_at": {
"type": "string"
},
"end_time": {
"type": "number"
},
"end_word_index": {
"type": "integer"
},
"id": {
"type": "string"
},
"quote": {
"description": "The exact quoted text chosen by the user",
"type": "string"
},
"start_time": {
"description": "Time bounds for the selection (in seconds)",
"type": "number"
},
"start_word_index": {
"description": "Indexed selection into transcript by word positions",
"type": "integer"
},
"transcription_id": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"models.Summary": {
"type": "object",
"properties": {
"content": {
"type": "string"
},
"created_at": {
"type": "string"
},
"id": {
"type": "string"
},
"model": {
"type": "string"
},
"template_id": {
"type": "string"
},
"transcription_id": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"models.SummaryTemplate": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"model": {
"type": "string"
},
"name": {
"type": "string"
},
"prompt": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"models.TranscriptionJob": {
"type": "object",
"properties": {
"audio_path": {
"type": "string"
},
"created_at": {
"type": "string"
},
"diarization": {
"type": "boolean"
},
"error_message": {
"type": "string"
},
"id": {
"type": "string"
},
"parameters": {
"description": "WhisperX parameters",
"allOf": [
{
"$ref": "#/definitions/models.WhisperXParams"
}
]
},
"status": {
"$ref": "#/definitions/models.JobStatus"
},
"summary": {
"type": "string"
},
"title": {
"type": "string"
},
"transcript": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"models.TranscriptionProfile": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"is_default": {
"type": "boolean"
},
"name": {
"type": "string"
},
"parameters": {
"$ref": "#/definitions/models.WhisperXParams"
},
"updated_at": {
"type": "string"
}
}
},
"models.WhisperXParams": {
"type": "object",
"properties": {
"align_model": {
"description": "Alignment settings",
"type": "string"
},
"batch_size": {
"type": "integer"
},
"beam_size": {
"type": "integer"
},
"best_of": {
"type": "integer"
},
"chunk_size": {
"type": "integer"
},
"compression_ratio_threshold": {
"type": "number"
},
"compute_type": {
"type": "string"
},
"condition_on_previous_text": {
"type": "boolean"
},
"device": {
"description": "Device and computation",
"type": "string"
},
"device_index": {
"type": "integer"
},
"diarize": {
"description": "Diarization settings",
"type": "boolean"
},
"diarize_model": {
"type": "string"
},
"fp16": {
"type": "boolean"
},
"hf_token": {
"description": "Token and progress",
"type": "string"
},
"highlight_words": {
"type": "boolean"
},
"initial_prompt": {
"type": "string"
},
"interpolate_method": {
"type": "string"
},
"language": {
"type": "string"
},
"length_penalty": {
"type": "number"
},
"logprob_threshold": {
"type": "number"
},
"max_line_count": {
"type": "integer"
},
"max_line_width": {
"description": "Output formatting",
"type": "integer"
},
"max_speakers": {
"type": "integer"
},
"min_speakers": {
"type": "integer"
},
"model": {
"description": "Model parameters",
"type": "string"
},
"model_cache_only": {
"type": "boolean"
},
"model_dir": {
"type": "string"
},
"no_align": {
"type": "boolean"
},
"no_speech_threshold": {
"type": "number"
},
"output_format": {
"description": "Output settings",
"type": "string"
},
"patience": {
"type": "number"
},
"print_progress": {
"type": "boolean"
},
"return_char_alignments": {
"type": "boolean"
},
"segment_resolution": {
"type": "string"
},
"speaker_embeddings": {
"type": "boolean"
},
"suppress_numerals": {
"type": "boolean"
},
"suppress_tokens": {
"type": "string"
},
"task": {
"description": "Task and language",
"type": "string"
},
"temperature": {
"description": "Transcription quality settings",
"type": "number"
},
"temperature_increment_on_fallback": {
"type": "number"
},
"threads": {
"type": "integer"
},
"vad_method": {
"description": "VAD (Voice Activity Detection) settings",
"type": "string"
},
"vad_offset": {
"type": "number"
},
"vad_onset": {
"type": "number"
},
"verbose": {
"type": "boolean"
}
}
},
"transcription.QuickTranscriptionJob": {
"type": "object",
"properties": {
"audio_path": {
"type": "string"
},
"created_at": {
"type": "string"
},
"error_message": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"id": {
"type": "string"
},
"parameters": {
"$ref": "#/definitions/models.WhisperXParams"
},
"status": {
"$ref": "#/definitions/models.JobStatus"
},
"transcript": {
"type": "string"
}
}
}
},
"securityDefinitions": {
"ApiKeyAuth": {
"type": "apiKey",
"name": "X-API-Key",
"in": "header"
},
"BearerAuth": {
"description": "JWT token with Bearer prefix",
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}