Spaces:
Build error
Build error
{ | |
"openapi": "3.0.3", | |
"info": { | |
"title": "OpenHands API", | |
"description": "OpenHands: Code Less, Make More", | |
"version": "1.0.0" | |
}, | |
"servers": [ | |
{ | |
"url": "https://app.all-hands.dev", | |
"description": "Production server" | |
}, | |
{ | |
"url": "http://localhost:3000", | |
"description": "Local development server" | |
} | |
], | |
"paths": { | |
"/health": { | |
"get": { | |
"summary": "Health check", | |
"description": "Check if the API is running", | |
"operationId": "health", | |
"responses": { | |
"200": { | |
"description": "API is running", | |
"content": { | |
"text/plain": { | |
"schema": { | |
"type": "string", | |
"example": "OK" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/config": { | |
"get": { | |
"summary": "Get runtime configuration", | |
"description": "Retrieve the runtime configuration (session ID and runtime ID)", | |
"operationId": "getRemoteRuntimeConfig", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Runtime configuration", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"runtime_id": { | |
"type": "string", | |
"nullable": true | |
}, | |
"session_id": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/vscode-url": { | |
"get": { | |
"summary": "Get VSCode URL", | |
"description": "Get the VSCode URL for the conversation", | |
"operationId": "getVscodeUrl", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "VSCode URL", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"vscode_url": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error getting VSCode URL", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"vscode_url": { | |
"type": "string", | |
"nullable": true | |
}, | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/web-hosts": { | |
"get": { | |
"summary": "Get runtime hosts", | |
"description": "Get the hosts used by the runtime", | |
"operationId": "getHosts", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Runtime hosts", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"hosts": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error getting runtime hosts", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"hosts": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
}, | |
"nullable": true | |
}, | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/submit-feedback": { | |
"post": { | |
"summary": "Submit feedback", | |
"description": "Submit user feedback for a conversation", | |
"operationId": "submitFeedback", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"email": { | |
"type": "string", | |
"format": "email" | |
}, | |
"version": { | |
"type": "string" | |
}, | |
"permissions": { | |
"type": "string", | |
"default": "private" | |
}, | |
"polarity": { | |
"type": "string" | |
}, | |
"feedback": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Feedback submitted successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error submitting feedback", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/list-files": { | |
"get": { | |
"summary": "List files", | |
"description": "List files in the specified path", | |
"operationId": "listFiles", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "path", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Path to list files from" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "List of files", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Runtime not initialized", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error listing files", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/select-file": { | |
"get": { | |
"summary": "Get file content", | |
"description": "Retrieve the content of a specified file", | |
"operationId": "selectFile", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "file", | |
"in": "query", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Path of the file to be retrieved" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "File content", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"code": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"415": { | |
"description": "Unable to open binary file", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error opening file", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/zip-directory": { | |
"get": { | |
"summary": "Download workspace as zip", | |
"description": "Download the current workspace as a zip file", | |
"operationId": "zipCurrentWorkspace", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Workspace zip file", | |
"content": { | |
"application/zip": { | |
"schema": { | |
"type": "string", | |
"format": "binary" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error zipping workspace", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/git/changes": { | |
"get": { | |
"summary": "Get git changes", | |
"description": "Get git changes in the workspace", | |
"operationId": "gitChanges", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Git changes", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error getting git changes", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/git/diff": { | |
"get": { | |
"summary": "Get git diff", | |
"description": "Get git diff for a specific file", | |
"operationId": "gitDiff", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "path", | |
"in": "query", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Path of the file to get diff for" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Git diff", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error getting git diff", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/trajectory": { | |
"get": { | |
"summary": "Get trajectory", | |
"description": "Get the conversation trajectory", | |
"operationId": "getTrajectory", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Conversation trajectory", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"trajectory": { | |
"type": "array", | |
"items": { | |
"type": "object" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error getting trajectory", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"trajectory": { | |
"type": "array", | |
"items": { | |
"type": "object" | |
}, | |
"nullable": true | |
}, | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}/security/{path}": { | |
"get": { | |
"summary": "Security analyzer API (GET)", | |
"description": "Catch-all route for security analyzer API GET requests", | |
"operationId": "securityApiGet", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "path", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Security analyzer API path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Security analyzer response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Security analyzer not initialized", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"detail": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"post": { | |
"summary": "Security analyzer API (POST)", | |
"description": "Catch-all route for security analyzer API POST requests", | |
"operationId": "securityApiPost", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "path", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Security analyzer API path" | |
} | |
], | |
"requestBody": { | |
"required": false, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Security analyzer response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Security analyzer not initialized", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"detail": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"put": { | |
"summary": "Security analyzer API (PUT)", | |
"description": "Catch-all route for security analyzer API PUT requests", | |
"operationId": "securityApiPut", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "path", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Security analyzer API path" | |
} | |
], | |
"requestBody": { | |
"required": false, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Security analyzer response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Security analyzer not initialized", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"detail": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"delete": { | |
"summary": "Security analyzer API (DELETE)", | |
"description": "Catch-all route for security analyzer API DELETE requests", | |
"operationId": "securityApiDelete", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
}, | |
{ | |
"name": "path", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Security analyzer API path" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Security analyzer response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Security analyzer not initialized", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"detail": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations": { | |
"post": { | |
"summary": "Create new conversation", | |
"description": "Initialize a new conversation", | |
"operationId": "newConversation", | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"repository": { | |
"type": "string", | |
"nullable": true, | |
"description": "Full name of the repository (e.g., owner/repo)" | |
}, | |
"git_provider": { | |
"type": "string", | |
"nullable": true, | |
"description": "The Git provider (e.g., github or gitlab). If omitted, all configured providers are checked for the repository." | |
}, | |
"selected_branch": { | |
"type": "string", | |
"nullable": true | |
}, | |
"initial_user_msg": { | |
"type": "string", | |
"nullable": true | |
}, | |
"conversation_instructions": { | |
"type": "string", | |
"nullable": true, | |
"description": "Optional instructions the agent must follow throughout the conversation while addressing the user's initial task" | |
}, | |
"image_urls": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
}, | |
"nullable": true | |
}, | |
"replay_json": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Conversation created successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"status": { | |
"type": "string", | |
"example": "ok" | |
}, | |
"conversation_id": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Error creating conversation", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"status": { | |
"type": "string", | |
"example": "error" | |
}, | |
"message": { | |
"type": "string" | |
}, | |
"msg_id": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"get": { | |
"summary": "Search conversations", | |
"description": "Search for conversations", | |
"operationId": "searchConversations", | |
"parameters": [ | |
{ | |
"name": "page_id", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Page ID for pagination" | |
}, | |
{ | |
"name": "limit", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "integer", | |
"default": 20 | |
}, | |
"description": "Number of conversations to return" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Conversations", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"results": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"conversation_id": { | |
"type": "string" | |
}, | |
"title": { | |
"type": "string" | |
}, | |
"last_updated_at": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"created_at": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"selected_repository": { | |
"type": "string", | |
"nullable": true | |
}, | |
"status": { | |
"type": "string", | |
"enum": ["RUNNING", "STOPPED"] | |
}, | |
"trigger": { | |
"type": "string", | |
"enum": ["GUI", "API"] | |
} | |
} | |
} | |
}, | |
"next_page_id": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/conversations/{conversation_id}": { | |
"get": { | |
"summary": "Get conversation", | |
"description": "Get conversation details", | |
"operationId": "getConversation", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Conversation details", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"conversation_id": { | |
"type": "string" | |
}, | |
"title": { | |
"type": "string" | |
}, | |
"last_updated_at": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"created_at": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"selected_repository": { | |
"type": "string", | |
"nullable": true | |
}, | |
"status": { | |
"type": "string", | |
"enum": ["RUNNING", "STOPPED"] | |
}, | |
"trigger": { | |
"type": "string", | |
"enum": ["GUI", "API"] | |
} | |
} | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Conversation not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
}, | |
"patch": { | |
"summary": "Update conversation", | |
"description": "Update conversation details", | |
"operationId": "updateConversation", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"title": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Conversation updated successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "boolean" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"delete": { | |
"summary": "Delete conversation", | |
"description": "Delete a conversation", | |
"operationId": "deleteConversation", | |
"parameters": [ | |
{ | |
"name": "conversation_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Conversation ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Conversation deleted successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "boolean" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/user/repositories": { | |
"get": { | |
"summary": "Get user repositories", | |
"description": "Get repositories for the authenticated user", | |
"operationId": "getUserRepositories", | |
"parameters": [ | |
{ | |
"name": "sort", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "string", | |
"default": "pushed" | |
}, | |
"description": "Sort order for repositories" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "User repositories", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"full_name": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string", | |
"nullable": true | |
}, | |
"html_url": { | |
"type": "string" | |
}, | |
"private": { | |
"type": "boolean" | |
}, | |
"fork": { | |
"type": "boolean" | |
}, | |
"updated_at": { | |
"type": "string", | |
"format": "date-time" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authentication error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Unknown error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/user/info": { | |
"get": { | |
"summary": "Get user info", | |
"description": "Get information about the authenticated user", | |
"operationId": "getUser", | |
"responses": { | |
"200": { | |
"description": "User information", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"login": { | |
"type": "string" | |
}, | |
"name": { | |
"type": "string", | |
"nullable": true | |
}, | |
"email": { | |
"type": "string", | |
"nullable": true | |
}, | |
"avatar_url": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authentication error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Unknown error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/user/search/repositories": { | |
"get": { | |
"summary": "Search repositories", | |
"description": "Search for repositories", | |
"operationId": "searchRepositories", | |
"parameters": [ | |
{ | |
"name": "query", | |
"in": "query", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Search query" | |
}, | |
{ | |
"name": "per_page", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "integer", | |
"default": 5 | |
}, | |
"description": "Number of repositories to return per page" | |
}, | |
{ | |
"name": "sort", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "string", | |
"default": "stars" | |
}, | |
"description": "Sort order for repositories" | |
}, | |
{ | |
"name": "order", | |
"in": "query", | |
"required": false, | |
"schema": { | |
"type": "string", | |
"default": "desc" | |
}, | |
"description": "Sort direction" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Search results", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"full_name": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string", | |
"nullable": true | |
}, | |
"html_url": { | |
"type": "string" | |
}, | |
"private": { | |
"type": "boolean" | |
}, | |
"fork": { | |
"type": "boolean" | |
}, | |
"updated_at": { | |
"type": "string", | |
"format": "date-time" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authentication error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Unknown error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/user/suggested-tasks": { | |
"get": { | |
"summary": "Get suggested tasks", | |
"description": "Get suggested tasks for the authenticated user across their most recently pushed repositories", | |
"operationId": "getSuggestedTasks", | |
"responses": { | |
"200": { | |
"description": "Suggested tasks", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"title": { | |
"type": "string" | |
}, | |
"url": { | |
"type": "string" | |
}, | |
"repository": { | |
"type": "string" | |
}, | |
"type": { | |
"type": "string" | |
}, | |
"created_at": { | |
"type": "string", | |
"format": "date-time" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authentication error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Unknown error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/settings": { | |
"get": { | |
"summary": "Get settings", | |
"description": "Get user settings", | |
"operationId": "loadSettings", | |
"responses": { | |
"200": { | |
"description": "User settings", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"language": { | |
"type": "string" | |
}, | |
"agent": { | |
"type": "string" | |
}, | |
"security_analyzer": { | |
"type": "string" | |
}, | |
"confirmation_mode": { | |
"type": "boolean" | |
}, | |
"llm_model": { | |
"type": "string" | |
}, | |
"llm_api_key_set": { | |
"type": "boolean" | |
}, | |
"llm_base_url": { | |
"type": "string", | |
"nullable": true | |
}, | |
"remote_runtime_resource_factor": { | |
"type": "number" | |
}, | |
"enable_default_condenser": { | |
"type": "boolean" | |
}, | |
"enable_sound_notifications": { | |
"type": "boolean" | |
}, | |
"user_consents_to_analytics": { | |
"type": "boolean" | |
}, | |
"provider_tokens_set": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "boolean" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Invalid token", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Settings not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"post": { | |
"summary": "Store settings", | |
"description": "Store user settings", | |
"operationId": "storeSettings", | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"language": { | |
"type": "string" | |
}, | |
"agent": { | |
"type": "string" | |
}, | |
"security_analyzer": { | |
"type": "string" | |
}, | |
"confirmation_mode": { | |
"type": "boolean" | |
}, | |
"llm_model": { | |
"type": "string" | |
}, | |
"llm_api_key": { | |
"type": "string" | |
}, | |
"llm_base_url": { | |
"type": "string", | |
"nullable": true | |
}, | |
"remote_runtime_resource_factor": { | |
"type": "number" | |
}, | |
"enable_default_condenser": { | |
"type": "boolean" | |
}, | |
"enable_sound_notifications": { | |
"type": "boolean" | |
}, | |
"user_consents_to_analytics": { | |
"type": "boolean" | |
}, | |
"provider_tokens": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Settings stored successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Invalid token", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error storing settings", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/reset-settings": { | |
"post": { | |
"summary": "Reset settings (Deprecated)", | |
"description": "This endpoint is deprecated and will return a 410 Gone error. Reset functionality has been removed.", | |
"operationId": "resetSettings", | |
"deprecated": true, | |
"responses": { | |
"410": { | |
"description": "Feature removed", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string", | |
"example": "Reset settings functionality has been removed." | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/unset-settings-tokens": { | |
"post": { | |
"summary": "Unset settings tokens", | |
"description": "Unset provider tokens in settings", | |
"operationId": "unsetSettingsTokens", | |
"responses": { | |
"200": { | |
"description": "Tokens unset successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Error unsetting tokens", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"error": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/options/models": { | |
"get": { | |
"summary": "Get models", | |
"description": "Get all models supported by LiteLLM", | |
"operationId": "getLitellmModels", | |
"responses": { | |
"200": { | |
"description": "List of models", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/options/agents": { | |
"get": { | |
"summary": "Get agents", | |
"description": "Get all agents supported by OpenHands", | |
"operationId": "getAgents", | |
"responses": { | |
"200": { | |
"description": "List of agents", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/options/security-analyzers": { | |
"get": { | |
"summary": "Get security analyzers", | |
"description": "Get all supported security analyzers", | |
"operationId": "getSecurityAnalyzers", | |
"responses": { | |
"200": { | |
"description": "List of security analyzers", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/api/options/config": { | |
"get": { | |
"summary": "Get config", | |
"description": "Get current server configuration", | |
"operationId": "getConfig", | |
"responses": { | |
"200": { | |
"description": "Server configuration", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"components": { | |
"schemas": { | |
"Repository": { | |
"type": "object", | |
"properties": { | |
"full_name": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string", | |
"nullable": true | |
}, | |
"html_url": { | |
"type": "string" | |
}, | |
"private": { | |
"type": "boolean" | |
}, | |
"fork": { | |
"type": "boolean" | |
}, | |
"updated_at": { | |
"type": "string", | |
"format": "date-time" | |
} | |
} | |
}, | |
"User": { | |
"type": "object", | |
"properties": { | |
"login": { | |
"type": "string" | |
}, | |
"name": { | |
"type": "string", | |
"nullable": true | |
}, | |
"email": { | |
"type": "string", | |
"nullable": true | |
}, | |
"avatar_url": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
}, | |
"SuggestedTask": { | |
"type": "object", | |
"properties": { | |
"title": { | |
"type": "string" | |
}, | |
"url": { | |
"type": "string" | |
}, | |
"repository": { | |
"type": "string" | |
}, | |
"type": { | |
"type": "string" | |
}, | |
"created_at": { | |
"type": "string", | |
"format": "date-time" | |
} | |
} | |
}, | |
"ConversationInfo": { | |
"type": "object", | |
"properties": { | |
"conversation_id": { | |
"type": "string" | |
}, | |
"title": { | |
"type": "string" | |
}, | |
"last_updated_at": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"created_at": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"selected_repository": { | |
"type": "string", | |
"nullable": true | |
}, | |
"status": { | |
"type": "string", | |
"enum": ["RUNNING", "STOPPED"] | |
}, | |
"trigger": { | |
"type": "string", | |
"enum": ["GUI", "API"] | |
} | |
} | |
}, | |
"ConversationInfoResultSet": { | |
"type": "object", | |
"properties": { | |
"results": { | |
"type": "array", | |
"items": { | |
"$ref": "#/components/schemas/ConversationInfo" | |
} | |
}, | |
"next_page_id": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
}, | |
"FeedbackDataModel": { | |
"type": "object", | |
"properties": { | |
"email": { | |
"type": "string", | |
"format": "email" | |
}, | |
"version": { | |
"type": "string" | |
}, | |
"permissions": { | |
"type": "string", | |
"default": "private" | |
}, | |
"polarity": { | |
"type": "string" | |
}, | |
"feedback": { | |
"type": "string" | |
}, | |
"trajectory": { | |
"type": "array", | |
"items": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"Settings": { | |
"type": "object", | |
"properties": { | |
"language": { | |
"type": "string" | |
}, | |
"agent": { | |
"type": "string" | |
}, | |
"security_analyzer": { | |
"type": "string" | |
}, | |
"confirmation_mode": { | |
"type": "boolean" | |
}, | |
"llm_model": { | |
"type": "string" | |
}, | |
"llm_api_key": { | |
"type": "string" | |
}, | |
"llm_base_url": { | |
"type": "string", | |
"nullable": true | |
}, | |
"remote_runtime_resource_factor": { | |
"type": "number" | |
}, | |
"enable_default_condenser": { | |
"type": "boolean" | |
}, | |
"enable_sound_notifications": { | |
"type": "boolean" | |
}, | |
"user_consents_to_analytics": { | |
"type": "boolean" | |
} | |
} | |
}, | |
"GETSettingsModel": { | |
"type": "object", | |
"properties": { | |
"language": { | |
"type": "string" | |
}, | |
"agent": { | |
"type": "string" | |
}, | |
"security_analyzer": { | |
"type": "string" | |
}, | |
"confirmation_mode": { | |
"type": "boolean" | |
}, | |
"llm_model": { | |
"type": "string" | |
}, | |
"llm_api_key_set": { | |
"type": "boolean" | |
}, | |
"llm_base_url": { | |
"type": "string", | |
"nullable": true | |
}, | |
"remote_runtime_resource_factor": { | |
"type": "number" | |
}, | |
"enable_default_condenser": { | |
"type": "boolean" | |
}, | |
"enable_sound_notifications": { | |
"type": "boolean" | |
}, | |
"user_consents_to_analytics": { | |
"type": "boolean" | |
}, | |
"provider_tokens_set": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "boolean" | |
} | |
} | |
} | |
}, | |
"POSTSettingsModel": { | |
"type": "object", | |
"properties": { | |
"language": { | |
"type": "string" | |
}, | |
"agent": { | |
"type": "string" | |
}, | |
"security_analyzer": { | |
"type": "string" | |
}, | |
"confirmation_mode": { | |
"type": "boolean" | |
}, | |
"llm_model": { | |
"type": "string" | |
}, | |
"llm_api_key": { | |
"type": "string" | |
}, | |
"llm_base_url": { | |
"type": "string", | |
"nullable": true | |
}, | |
"remote_runtime_resource_factor": { | |
"type": "number" | |
}, | |
"enable_default_condenser": { | |
"type": "boolean" | |
}, | |
"enable_sound_notifications": { | |
"type": "boolean" | |
}, | |
"user_consents_to_analytics": { | |
"type": "boolean" | |
}, | |
"provider_tokens": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
}, | |
"securitySchemes": { | |
"bearerAuth": { | |
"type": "http", | |
"scheme": "bearer", | |
"bearerFormat": "JWT" | |
} | |
} | |
}, | |
"security": [ | |
{ | |
"bearerAuth": [] | |
} | |
] | |
} | |