{
  "openapi": "3.1.0",
  "info": {
    "title": "MultiDebrid API",
    "version": "1.0.0",
    "description": "Public API documentation for MultiDebrid account, supported-host, premium generation job and private history operations."
  },
  "servers": [{"url": "https://multidebrid.com/api/v1"}],
  "security": [{"bearerAuth": []}],
  "components": {
    "securitySchemes": {"bearerAuth": {"type": "http", "scheme": "bearer"}},
    "schemas": {
      "Error": {"type": "object", "properties": {"success": {"const": false}, "error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}}, "required": ["code", "message"]}, "request_id": {"type": "string"}}, "required": ["success", "error", "request_id"]},
      "UrlInput": {"type": "object", "properties": {"url": {"type": "string", "format": "uri"}}, "required": ["url"]}
    }
  },
  "paths": {
    "/hosts": {"get": {"summary": "List configured hosts", "responses": {"200": {"description": "Host list"}, "401": {"description": "Invalid API key"}}}},
    "/account": {"get": {"summary": "Get account summary", "responses": {"200": {"description": "Account summary"}}}},
    "/usage": {"get": {"summary": "Get recorded usage", "responses": {"200": {"description": "Usage summary"}}}},
    "/link/check": {"post": {"summary": "Check a source URL", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlInput"}}}}, "responses": {"200": {"description": "Host match"}, "422": {"description": "Invalid or unsupported URL"}}}},
    "/link/generate": {"post": {"summary": "Generate a premium link job", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlInput"}}}}, "responses": {"200": {"description": "Ready job"}, "403": {"description": "Premium required"}, "422": {"description": "Generation failed"}}}},
    "/jobs/{id}": {"get": {"summary": "Get a private job", "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Job"}, "404": {"description": "Job not found"}}}},
    "/history": {"get": {"summary": "List private history", "parameters": [{"name": "limit", "in": "query", "schema": {"type": "integer", "default": 25, "maximum": 100}}, {"name": "page", "in": "query", "schema": {"type": "integer", "default": 1}}], "responses": {"200": {"description": "History page"}}}},
    "/history/{id}": {"delete": {"summary": "Delete a private history item", "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Deleted"}, "404": {"description": "History item not found"}}}}
  }
}
