Add OpenAPI specification file for full MCP and API compliance

This commit is contained in:
Jarian Cottingham 2026-02-03 21:57:25 +00:00
parent 71a3dcc4ee
commit 14ce2a8586

324
openapi.json Normal file
View File

@ -0,0 +1,324 @@
{
"openapi": "3.0.3",
"info": {
"title": "YouTube CLI API",
"version": "1.0.0",
"description": "REST API for YouTube CLI application with MCP compliance",
"contact": {
"name": "YouTube CLI Team"
}
},
"servers": [
{
"url": "http://localhost:4096",
"description": "Local development server"
}
],
"paths": {
"/search": {
"get": {
"summary": "Search YouTube videos",
"description": "Search YouTube videos based on a query string",
"operationId": "searchVideos",
"parameters": [
{
"name": "q",
"in": "query",
"description": "Search query string",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"description": "Page number for results",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
}
],
"responses": {
"200": {
"description": "Successful search response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"page": {
"type": "integer"
},
"videos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"author": {
"type": "string"
},
"length": {
"type": "string"
},
"url": {
"type": "string"
},
"is_short": {
"type": "boolean"
},
"is_playlist": {
"type": "boolean"
},
"id": {
"type": "string"
},
"thumbnail": {
"type": "string"
},
"view_count": {
"type": "integer"
}
}
}
},
"total": {
"type": "integer"
}
}
}
}
}
},
"400": {
"description": "Bad request - missing query parameter"
},
"500": {
"description": "Internal server error"
}
}
}
},
"/download": {
"post": {
"summary": "Download a video",
"description": "Initiate download of a video by URL",
"operationId": "downloadVideo",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "YouTube video URL"
}
},
"required": ["url"]
}
}
}
},
"responses": {
"200": {
"description": "Download started successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"url": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
},
"400": {
"description": "Bad request - missing URL"
},
"500": {
"description": "Internal server error"
}
}
}
},
"/health": {
"get": {
"summary": "Health check",
"description": "Check if the service is healthy and running",
"operationId": "healthCheck",
"responses": {
"200": {
"description": "Service is healthy",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"service": {
"type": "string"
}
}
}
}
}
}
}
}
},
"/version": {
"get": {
"summary": "Get API version",
"description": "Get the current version of the API",
"operationId": "getVersion",
"responses": {
"200": {
"description": "API version information",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
}
}
}
}
}
}
}
},
"/capabilities": {
"get": {
"summary": "MCP Capabilities",
"description": "Get MCP capabilities information for this service",
"operationId": "getCapabilities",
"responses": {
"200": {
"description": "MCP capabilities information",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"description": {
"type": "string"
},
"endpoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"method": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"features": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Video": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"author": {
"type": "string"
},
"length": {
"type": "string"
},
"url": {
"type": "string"
},
"is_short": {
"type": "boolean"
},
"is_playlist": {
"type": "boolean"
},
"id": {
"type": "string"
},
"thumbnail": {
"type": "string"
},
"view_count": {
"type": "integer"
}
}
},
"SearchResult": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"page": {
"type": "integer"
},
"videos": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Video"
}
},
"total": {
"type": "integer"
}
}
}
}
}
}