{"openapi":"3.1.0","info":{"title":"akousa.net — One API, Infinite Power","version":"1.1.0","description":"One API key for 557+ developer tools, 25+ live data services, real-time monitoring, and more. Every authenticated key gets 100,000 requests/day with batch, chain, and analytics included.","contact":{"url":"https://akousa.net/docs/api"}},"servers":[{"url":"https://akousa.net","description":"Production"}],"security":[],"paths":{"/api/v1/tools":{"get":{"operationId":"listTools","summary":"List all available tools","description":"Returns the full public tool catalog with modes and configuration options. No authentication required.","tags":["Tools"],"security":[],"responses":{"200":{"description":"Tool catalog","content":{"application/json":{"schema":{"type":"object","required":["tools","total"],"properties":{"tools":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"icon":{"type":"string"},"category":{"type":"string"},"modes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"inputType":{"type":"string"},"outputType":{"type":"string"},"config":{"type":"array","items":{"type":"object"}}}}}}}},"total":{"type":"integer"}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/tools/{slug}":{"post":{"operationId":"executeTool","summary":"Execute a tool","description":"Run a tool by slug. Requires a valid API key (Bearer token). Every key: max 10,000,000 byte input, 100,000 req/day.","tags":["Tools"],"security":[{"apiKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"description":"Tool identifier (kebab-case).","schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolExecuteRequest"}}}},"responses":{"200":{"description":"Successful execution","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolExecuteResponse"}}}},"400":{"description":"Bad request — malformed JSON or missing input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — tier does not allow this operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"413":{"description":"Payload too large — input exceeds tier limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"422":{"description":"Unprocessable entity — validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}}}},"options":{"operationId":"options_api_v1_tools_slug","summary":"CORS preflight for tool execution.","description":"CORS preflight for tool execution.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}]}},"/api/v1/batch":{"post":{"operationId":"batchExecute","summary":"Batch execute multiple tools","description":"Execute multiple tools in a single request. Max 200 items per call. Available to every authenticated API key.","tags":["Batch & Chain"],"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"200":{"description":"Batch results","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}}}},"options":{"operationId":"options_api_v1_batch","summary":"CORS preflight for the batch endpoint.","description":"CORS preflight for the batch endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (preflight)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/chain":{"post":{"operationId":"chainExecute","summary":"Chain tools sequentially","description":"Pipe output through multiple tool steps. Max 50 steps per chain. Available to every authenticated API key.","tags":["Batch & Chain"],"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChainRequest"}}}},"responses":{"200":{"description":"Chain result","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChainResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}}}},"options":{"operationId":"options_api_v1_chain","summary":"CORS preflight for the chain endpoint.","description":"CORS preflight for the chain endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (preflight)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/analytics":{"get":{"operationId":"getAnalytics","summary":"Get usage analytics","description":"Returns daily, per-tool, and per-hour usage statistics. Available to every authenticated API key.","tags":["Analytics"],"security":[{"apiKey":[]}],"parameters":[{"name":"days","in":"query","required":false,"description":"Number of days to look back (default 7, max 90).","schema":{"type":"integer","default":7,"minimum":1,"maximum":90}}],"responses":{"200":{"description":"Usage analytics","content":{"application/json":{"schema":{"type":"object","properties":{"daily":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"count":{"type":"integer"}}}},"byTool":{"type":"object","additionalProperties":{"type":"integer"}},"byHour":{"type":"array","items":{"type":"object","properties":{"hour":{"type":"integer"},"count":{"type":"integer"}}}}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_analytics","summary":"CORS preflight for the analytics endpoint.","description":"CORS preflight for the analytics endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/usage":{"get":{"operationId":"getUsage","summary":"Get your usage statistics","description":"Returns usage history and subscription details for the authenticated session.","tags":["Account"],"security":[{"session":[]}],"responses":{"200":{"description":"Usage stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageStats"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/keys":{"post":{"operationId":"createApiKey","summary":"Create a new API key","description":"Create a new API key for programmatic access. API access is included with Akousa Pro — up to 50 keys per account.","tags":["API Keys"],"security":[{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":100,"description":"A human-readable name for the key."},"description":{"type":"string","maxLength":500,"description":"Optional description."},"allowedTools":{"type":"array","items":{"type":"string"},"description":"Restrict this key to specific tool slugs. Omit for all tools."}}}}}},"responses":{"201":{"description":"API key created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"get":{"operationId":"listApiKeys","summary":"List your API keys","description":"Returns all API keys for the authenticated user.","tags":["API Keys"],"security":[{"session":[]}],"responses":{"200":{"description":"API key list","content":{"application/json":{"schema":{"type":"object","required":["keys"],"properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/ApiKey"}}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/keys/{id}":{"delete":{"operationId":"revokeApiKey","summary":"Revoke an API key","description":"Permanently revokes an API key by its ID.","tags":["API Keys"],"security":[{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"API key ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Key revoked","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/pro/subscribe":{"post":{"operationId":"subscribe","summary":"Subscribe to Akousa Pro","description":"Creates a Polar checkout session for an Akousa Pro subscription (monthly or annual).","tags":["Subscription"],"security":[{"session":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"billing":{"type":"string","enum":["monthly","annual"],"default":"monthly","description":"Akousa Pro billing period. Defaults to monthly."}}}}}},"responses":{"200":{"description":"Checkout URL","content":{"application/json":{"schema":{"type":"object","required":["checkoutUrl"],"properties":{"checkoutUrl":{"type":"string","format":"uri"}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"get":{"operationId":"getSubscription","summary":"Get subscription status","description":"Returns the current subscription status for the authenticated user.","tags":["Subscription"],"security":[{"session":[]}],"responses":{"200":{"description":"Subscription status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatus"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/openapi.json":{"get":{"operationId":"getOpenApiSpec","summary":"Get OpenAPI specification","description":"Returns this OpenAPI 3.1 specification as JSON.","tags":["Meta"],"security":[],"responses":{"200":{"description":"OpenAPI 3.1 JSON specification","content":{"application/json":{"schema":{"type":"object"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/services":{"get":{"operationId":"listServices","summary":"List all data services","description":"Returns the full catalog of live data services with endpoints, parameters, and categories. No authentication required.","tags":["Meta"],"security":[],"responses":{"200":{"description":"Service catalog","content":{"application/json":{"schema":{"type":"object","required":["services","total","categories"],"properties":{"services":{"type":"array","items":{"$ref":"#/components/schemas/DataService"}},"total":{"type":"integer"},"categories":{"type":"object","additionalProperties":{"type":"integer"}}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/data/news":{"get":{"operationId":"getNews","summary":"World News Feed","description":"Aggregated news from 338+ RSS sources with scoring, deduplication, and threading.","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_news","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/earthquakes":{"get":{"operationId":"getEarthquakes","summary":"Earthquake Data","description":"Real-time M2.5+ earthquake data from USGS (last 24 hours).","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_earthquakes","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/air-quality":{"get":{"operationId":"getAirQuality","summary":"Air Quality Index","description":"Global AQI data from 500+ monitoring stations (PM2.5, PM10, O3).","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_airquality","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/cyber-threats":{"get":{"operationId":"getCyberThreats","summary":"Cyber Threat Map","description":"Real-time cyber attack visualization data with source/target geo-coordinates.","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_cyberthreats","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/flights":{"get":{"operationId":"getFlights","summary":"Flight Density","description":"Global air traffic density and major route data.","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_flights","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/status":{"get":{"operationId":"getServiceStatuses","summary":"Service Status Overview","description":"Real-time operational status for 324+ internet services.","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_status","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/status/{slug}":{"get":{"operationId":"getServiceStatus","summary":"Service Status Detail","description":"Detailed status, history, and problem breakdown for a specific service.","tags":["Data - Real-Time"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"description":"Service slug (e.g. github, cloudflare).","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_status_slug","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"}}]}},"/api/v1/data/dns":{"get":{"operationId":"dnsLookup","summary":"DNS Lookup","description":"Query DNS records for any domain.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name.","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Record type.","schema":{"type":"string","enum":["A","AAAA","MX","NS","TXT","CNAME","SOA"],"default":"A"}}]},"options":{"operationId":"options_api_v1_data_dns","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/whois":{"get":{"operationId":"whoisLookup","summary":"WHOIS Lookup","description":"Domain registration information: registrar, dates, nameservers.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name.","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_whois","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/ssl":{"get":{"operationId":"sslCheck","summary":"SSL Certificate Check","description":"Inspect SSL/TLS certificate: validity, issuer, expiry, chain.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name.","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_ssl","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/ip":{"get":{"operationId":"ipLookup","summary":"IP Geolocation","description":"IP address geolocation: city, country, ISP, coordinates.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"ip","in":"query","required":false,"description":"IP address (omit for your own).","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_ip","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/analyze":{"post":{"operationId":"analyzeUrl","summary":"URL Analysis","description":"Comprehensive URL analysis: headers, redirects, SSL, security headers, response time.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"options":{"operationId":"options_api_v1_data_analyze","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/metatags":{"get":{"operationId":"extractMetaTags","summary":"Meta Tag Extractor","description":"Extract Open Graph, Twitter Card, and meta tags from any URL.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"url","in":"query","required":true,"description":"URL to extract meta tags from.","schema":{"type":"string","format":"uri"}}]},"options":{"operationId":"options_api_v1_data_metatags","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/useragent":{"get":{"operationId":"parseUserAgent","summary":"User-Agent Parser","description":"Parse user-agent strings into browser, OS, device, and bot info.","tags":["Data - Network"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"ua","in":"query","required":false,"description":"User-Agent string (omit to parse your own).","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_useragent","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/currency":{"get":{"operationId":"getCurrencyRates","summary":"Currency Exchange Rates","description":"Live exchange rates from 30+ currencies (European Central Bank).","tags":["Data - Financial"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"base","in":"query","required":false,"description":"Base currency (default: USD).","schema":{"type":"string","default":"USD"}},{"name":"symbols","in":"query","required":false,"description":"Target currencies, comma-separated.","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_currency","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/crypto":{"get":{"operationId":"getCryptoPrices","summary":"Crypto Prices","description":"Live cryptocurrency prices with 24h change and market cap.","tags":["Data - Financial"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"coins","in":"query","required":false,"description":"Coin IDs, comma-separated (default: bitcoin,ethereum).","schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"description":"Fiat currency (default: usd).","schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_data_crypto","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/holidays":{"get":{"operationId":"getHolidays","summary":"Public Holidays","description":"Public holidays by country and year.","tags":["Data - Financial"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"country","in":"query","required":true,"description":"ISO 3166-1 alpha-2 country code (e.g. US, TR).","schema":{"type":"string","pattern":"^[A-Z]{2}$"}},{"name":"year","in":"query","required":false,"description":"Year (default: current).","schema":{"type":"integer","minimum":2000,"maximum":2100}}]},"options":{"operationId":"options_api_v1_data_holidays","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/data/qr":{"get":{"operationId":"generateQR","summary":"QR Code Generator","description":"Generate QR codes as SVG with custom size and error correction.","tags":["Data - Utility"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Successful response","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}},"500":{"description":"Internal server error — data fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"parameters":[{"name":"text","in":"query","required":true,"description":"Text or URL to encode.","schema":{"type":"string","maxLength":2953}},{"name":"size","in":"query","required":false,"description":"Image size in pixels.","schema":{"type":"integer","minimum":100,"maximum":1000,"default":256}},{"name":"ecl","in":"query","required":false,"description":"Error correction level.","schema":{"type":"string","enum":["L","M","Q","H"],"default":"M"}}]},"options":{"operationId":"options_api_v1_data_qr","summary":"CORS preflight for the data route.","description":"CORS preflight for the data route.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/webhooks":{"post":{"operationId":"createWebhook","summary":"Create a webhook","description":"Register a webhook URL to receive event notifications. Max 25 webhooks per user. Webhook URLs must use HTTPS.","tags":["Webhooks"],"security":[{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","format":"uri","description":"HTTPS endpoint URL to receive webhook payloads."},"events":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/WebhookEvent"},"description":"Event types to subscribe to."}},"example":{"url":"https://example.com/webhooks/akousa","events":["batch.complete","usage.threshold.80"]}}}}},"responses":{"201":{"description":"Webhook created — secret is only shown once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Bad request — invalid URL or events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — Pro tier required or webhook limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}}}},"get":{"operationId":"listWebhooks","summary":"List your webhooks","description":"Returns all webhooks for the authenticated user with masked secrets.","tags":["Webhooks"],"security":[{"session":[]}],"responses":{"200":{"description":"Webhook list","content":{"application/json":{"schema":{"type":"object","required":["webhooks"],"properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Forbidden — invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}}},"/api/v1/webhooks/{id}":{"delete":{"operationId":"deleteWebhook","summary":"Delete a webhook","description":"Permanently deletes a webhook by ID.","tags":["Webhooks"],"security":[{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Webhook ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Webhook deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}}},"patch":{"operationId":"patch_api_v1_webhooks_id","summary":"Update a specific webhook","description":"Update a specific webhook","tags":["v1","webhooks"],"responses":{"200":{"description":"Webhook updated successfully","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid webhook configuration","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string","const":"RATE_LIMIT"},"status":{"type":"number","const":429},"retryAfter":{"type":"number"}},"required":["ok","error","code","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2000,"format":"uri"},"events":{"minItems":1,"type":"array","items":{"type":"string"}},"active":{"type":"boolean"}},"additionalProperties":false}}}}}},"/api/v1/webhooks/{id}/test":{"post":{"operationId":"testWebhook","summary":"Test a webhook","description":"Sends a test payload (`webhook.test` event) to the webhook URL and returns the delivery result.","tags":["Webhooks"],"security":[{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Webhook ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Test delivery result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"statusCode":{"type":"integer","description":"HTTP status code from the webhook endpoint."},"durationMs":{"type":"number"}},"example":{"success":true,"statusCode":200,"durationMs":142}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Unauthorized — session required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Too many requests — rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current period.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current period.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"UTC epoch seconds when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"Rate limit exceeded","code":"RATE_LIMIT","details":{"retryAfter":60}}}}}}}},"/api/news/v1/feed":{"get":{"operationId":"get_api_news_v1_feed","summary":"Public News API endpoint with API key authentication, filtering, and pagination.","description":"Public News API endpoint with API key authentication, filtering, and pagination.","tags":["news","public","v1"],"responses":{"200":{"description":"Paginated news articles.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"articles":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"link":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"pubDate":{"type":"string"},"sourceId":{"type":"string"},"sourceName":{"type":"string"},"category":{"type":"string"},"language":{"type":"string"},"trustScore":{"type":"number"},"region":{"type":"string"},"score":{"type":"number"},"threadId":{"type":"string"},"threadCount":{"type":"number"}},"required":["id","title","description","link","pubDate","sourceId","sourceName","category","score"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"link":{"type":"string"},"pubDate":{"type":"string"},"category":{"type":"string"}},"required":["id","title","link","pubDate","category"],"additionalProperties":false}]}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"timestamp":{"type":"string"}},"required":["ok","articles","total","limit","offset","timestamp"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid query parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"API key required.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid/inactive API key or expired Pro subscription.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limit exceeded (100/hour per API key).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Failed to fetch news feed.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":100,"windowMs":3600000}},"options":{"operationId":"options_api_news_v1_feed","summary":"CORS preflight response for v1 feed.","description":"CORS preflight response for v1 feed.","tags":["news","public","v1"],"responses":{"204":{"description":"Empty body with CORS headers.","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/news/v1/keys":{"get":{"operationId":"get_api_news_v1_keys","summary":"Removed News key endpoint; use /api/v1/keys.","description":"Removed News key endpoint; use /api/v1/keys.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/keys` instead.","tags":["news","v1","deprecated"],"responses":{"410":{"description":"Endpoint removed.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1783838289"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-07-12T06:38:09Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog","x-successor-version":"/api/v1/keys","x-successor-url":"/api/v1/keys"},"post":{"operationId":"post_api_news_v1_keys","summary":"Removed News key endpoint; use /api/v1/keys.","description":"Removed News key endpoint; use /api/v1/keys.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/keys` instead.","tags":["news","v1","deprecated"],"responses":{"410":{"description":"Endpoint removed.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1783838289"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-07-12T06:38:09Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog","x-successor-version":"/api/v1/keys","x-successor-url":"/api/v1/keys"},"delete":{"operationId":"delete_api_news_v1_keys","summary":"Removed News key endpoint; use /api/v1/keys.","description":"Removed News key endpoint; use /api/v1/keys.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/keys` instead.","tags":["news","v1","deprecated"],"responses":{"410":{"description":"Endpoint removed.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1783838289"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-07-12T06:38:09Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog","x-successor-version":"/api/v1/keys","x-successor-url":"/api/v1/keys"}},"/api/v1/analytics/export":{"get":{"operationId":"get_api_v1_analytics_export","summary":"Export analytics data as CSV or JSON for the authenticated API key.","description":"Export analytics data as CSV or JSON for the authenticated API key.","tags":["v1"],"responses":{"200":{"description":"Analytics export (JSON variant)","content":{"application/json":{"schema":{"type":"object","properties":{"periodDays":{"type":"number"},"totalRequests":{"type":"number"},"daily":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"count":{"type":"number"}},"required":["date","count"],"additionalProperties":{}}},"byTool":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"string"},"count":{"type":"number"}},"required":["tool","count"],"additionalProperties":{}}},"latencyPercentiles":{},"errorsByTool":{}},"required":["periodDays","totalRequests","daily","byTool"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"503":{"description":"Analytics temporarily unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["csv","json"]}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}]},"options":{"operationId":"options_api_v1_analytics_export","summary":"CORS preflight for the analytics export endpoint.","description":"CORS preflight for the analytics export endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/analytics/requests":{"get":{"operationId":"get_api_v1_analytics_requests","summary":"Recent request history (paginated) for the authenticated API key.","description":"Recent request history (paginated) for the authenticated API key.","tags":["v1"],"responses":{"200":{"description":"Request history","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["requests","total","limit","offset"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"keyId","in":"query","required":false,"schema":{"type":"string"}}]},"options":{"operationId":"options_api_v1_analytics_requests","summary":"CORS preflight for the analytics requests endpoint.","description":"CORS preflight for the analytics requests endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/analyze/ai-recommendations":{"post":{"operationId":"post_api_v1_analyze_airecommendations","summary":"Generate AI-powered recommendations from an analysis report (session + Akousa Pro).","description":"Generate AI-powered recommendations from an analysis report (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Recommendations","content":{"application/json":{"schema":{"type":"object","properties":{"recommendations":{"type":"array","items":{}}},"required":["recommendations"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid input / JSON body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"report":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["report"],"additionalProperties":false}}}}}},"/api/v1/analyze/api":{"post":{"operationId":"post_api_v1_analyze_api","summary":"Run a full URL analysis via API key (Bearer token + Akousa Pro). Returns the analysis report.","description":"Run a full URL analysis via API key (Bearer token + Akousa Pro). Returns the analysis report.","tags":["v1"],"responses":{"200":{"description":"Analysis report","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body / disallowed URL","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid/revoked key or Pro required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"422":{"description":"URL validation/fetch failure","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["url"],"additionalProperties":false}}}}},"options":{"operationId":"options_api_v1_analyze_api","summary":"CORS preflight for the analyze API endpoint.","description":"CORS preflight for the analyze API endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]}},"/api/v1/analyze/api-keys":{"get":{"operationId":"get_api_v1_analyze_apikeys","summary":"Removed analyzer key endpoint; use /api/v1/keys.","description":"Removed analyzer key endpoint; use /api/v1/keys.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/keys` instead.","tags":["v1","deprecated"],"responses":{"410":{"description":"Endpoint removed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1783838289"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-07-12T06:38:09Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog","x-successor-version":"/api/v1/keys","x-successor-url":"/api/v1/keys"},"post":{"operationId":"post_api_v1_analyze_apikeys","summary":"Removed analyzer key endpoint; use /api/v1/keys.","description":"Removed analyzer key endpoint; use /api/v1/keys.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/keys` instead.","tags":["v1","deprecated"],"responses":{"410":{"description":"Endpoint removed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1783838289"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-07-12T06:38:09Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog","x-successor-version":"/api/v1/keys","x-successor-url":"/api/v1/keys"},"delete":{"operationId":"delete_api_v1_analyze_apikeys","summary":"Removed analyzer key endpoint; use /api/v1/keys.","description":"Removed analyzer key endpoint; use /api/v1/keys.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/keys` instead.","tags":["v1","deprecated"],"responses":{"410":{"description":"Endpoint removed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1783838289"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-07-12T06:38:09Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog","x-successor-version":"/api/v1/keys","x-successor-url":"/api/v1/keys"}},"/api/v1/analyze/badge":{"get":{"operationId":"get_api_v1_analyze_badge","summary":"Embeddable SVG score badge for a URL's latest scan (Bearer token + Akousa Pro).","description":"Embeddable SVG score badge for a URL's latest scan (Bearer token + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"SVG badge (image/svg+xml)","content":{"application/json":{"schema":{"type":"string"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Missing/invalid url parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"style","in":"query","required":false,"schema":{"type":"string","enum":["flat","rounded"]}},{"name":"label","in":"query","required":false,"schema":{"type":"string","maxLength":50}}]}},"/api/v1/analyze/batch":{"post":{"operationId":"post_api_v1_analyze_batch","summary":"Analyze multiple URLs (max 10) at once (session + Akousa Pro).","description":"Analyze multiple URLs (max 10) at once (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Batch analysis results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"report":{"anyOf":[{"type":"object","properties":{"score":{"type":"number"},"grade":{"type":"string"},"securityScore":{"type":"number"},"seoScore":{"type":"number"},"performanceScore":{"type":"number"},"durationMs":{"type":"number"}},"additionalProperties":{}},{"type":"null"}]},"error":{"type":"string"}},"required":["url","report"],"additionalProperties":{}}},"durationMs":{"type":"number"}},"required":["results","durationMs"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body / all URLs invalid","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","maxLength":2048,"format":"uri"}}},"required":["urls"],"additionalProperties":false}}}}}},"/api/v1/analyze/competitors":{"get":{"operationId":"get_api_v1_analyze_competitors","summary":"List the authenticated user's competitor groups (session + Akousa Pro).","description":"List the authenticated user's competitor groups (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Competitor groups","content":{"application/json":{"schema":{"type":"object","properties":{"groups":{"type":"array","items":{}}},"required":["groups"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]},"post":{"operationId":"post_api_v1_analyze_competitors","summary":"Create a competitor group (session + Akousa Pro).","description":"Create a competitor group (session + Akousa Pro).","tags":["v1"],"responses":{"201":{"description":"Competitor group created","content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"}},"required":["groupId"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Competitor group limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"primaryUrl":{"type":"string","maxLength":2048,"format":"uri"},"competitorUrls":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","maxLength":2048,"format":"uri"}}},"required":["name","primaryUrl","competitorUrls"],"additionalProperties":false}}}}},"delete":{"operationId":"delete_api_v1_analyze_competitors","summary":"Delete a competitor group (session + Akousa Pro). Body: { groupId }.","description":"Delete a competitor group (session + Akousa Pro). Body: { groupId }.","tags":["v1"],"responses":{"200":{"description":"Competitor group deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Group not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]}},"/api/v1/analyze/crawl":{"post":{"operationId":"post_api_v1_analyze_crawl","summary":"Crawl a domain (up to 25 pages) and return an aggregated report (session + Akousa Pro).","description":"Crawl a domain (up to 25 pages) and return an aggregated report (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Crawl report","content":{"application/json":{"schema":{"type":"object","properties":{"pagesAnalyzed":{"type":"number"},"aggregateScore":{"type":"number"},"aggregateGrade":{"type":"string"},"aggregateSecurityScore":{"type":"number"},"aggregateSeoScore":{"type":"number"},"aggregatePerformanceScore":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body / disallowed URL","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"422":{"description":"URL validation/fetch failure","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"maxPages":{"type":"integer","minimum":1,"maximum":25}},"required":["url"],"additionalProperties":false}}}}}},"/api/v1/analyze/diff":{"get":{"operationId":"get_api_v1_analyze_diff","summary":"Compute the diff between two saved scans (session + Akousa Pro).","description":"Compute the diff between two saved scans (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Scan diff","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid scan IDs","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"One or both scans not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"422":{"description":"Scans missing full report data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"scanA","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}},{"name":"scanB","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}}]}},"/api/v1/analyze/export":{"post":{"operationId":"post_api_v1_analyze_export","summary":"Generate a PDF report from analysis report data (session + Akousa Pro).","description":"Generate a PDF report from analysis report data (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"PDF report (application/pdf)","content":{"application/json":{"schema":{}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid input / JSON body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reportData":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"whiteLabel":{"type":"boolean"}},"required":["reportData"],"additionalProperties":false}}}}}},"/api/v1/analyze/export/github":{"post":{"operationId":"post_api_v1_analyze_export_github","summary":"Export a saved scan as GitHub-flavored markdown issue (session + Akousa Pro). Body: { scanId }.","description":"Export a saved scan as GitHub-flavored markdown issue (session + Akousa Pro). Body: { scanId }.","tags":["v1"],"responses":{"200":{"description":"GitHub issue export","content":{"application/json":{"schema":{"type":"object","properties":{"issue":{}},"required":["issue"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scan not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"422":{"description":"Scan report data not available","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scanId":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}},"required":["scanId"],"additionalProperties":false}}}}}},"/api/v1/analyze/fix-bundle":{"post":{"operationId":"post_api_v1_analyze_fixbundle","summary":"Generate a downloadable fix bundle from a scan or report (session + Akousa Pro).","description":"Generate a downloadable fix bundle from a scan or report (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Fix bundle","content":{"application/json":{"schema":{"type":"object","properties":{"bundle":{}},"required":["bundle"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scan not found or missing report data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scanId":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"},"report":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}}}}}}},"/api/v1/analyze/history":{"get":{"operationId":"get_api_v1_analyze_history","summary":"List scan history (paginated) or fetch a single scan with full report (session + Akousa Pro).","description":"List scan history (paginated) or fetch a single scan with full report (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Scan history list or single scan","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid scan ID format","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scan not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}]},"delete":{"operationId":"delete_api_v1_analyze_history","summary":"Delete a saved scan by ID (session + Akousa Pro).","description":"Delete a saved scan by ID (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Scan deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Missing/invalid scan ID","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scan not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}]}},"/api/v1/analyze/monitors":{"get":{"operationId":"get_api_v1_analyze_monitors","summary":"List the authenticated user's monitors (session + Akousa Pro).","description":"List the authenticated user's monitors (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Monitor list","content":{"application/json":{"schema":{"type":"object","properties":{"monitors":{"type":"array","items":{}}},"required":["monitors"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]},"post":{"operationId":"post_api_v1_analyze_monitors","summary":"Create a new monitor (session + Akousa Pro).","description":"Create a new monitor (session + Akousa Pro).","tags":["v1"],"responses":{"201":{"description":"Monitor created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body / disallowed URL","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Monitor limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"frequency":{"type":"string","enum":["daily","weekly"]},"alertOnDrop":{"type":"integer","minimum":1,"maximum":50},"alertOnSslExpiry":{"type":"boolean"}},"required":["url","frequency"],"additionalProperties":false}}}}},"delete":{"operationId":"delete_api_v1_analyze_monitors","summary":"Delete a monitor by ID query param (session + Akousa Pro).","description":"Delete a monitor by ID query param (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Monitor deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Missing or invalid monitor ID","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Monitor not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}}]},"patch":{"operationId":"patch_api_v1_analyze_monitors","summary":"Toggle/update a monitor's enabled state (session + Akousa Pro).","description":"Toggle/update a monitor's enabled state (session + Akousa Pro).","tags":["v1"],"responses":{"200":{"description":"Monitor updated","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"boolean","const":true}},"required":["updated"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Monitor not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"ok":{"type":"boolean","const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"},"enabled":{"type":"boolean"}},"required":["id","enabled"],"additionalProperties":false}}}}}},"/api/v1/analyze/monitors/{id}":{"get":{"operationId":"get_api_v1_analyze_monitors_id","summary":"Get a single Analyzer Pro monitor's details (session + Akousa Pro required).","description":"Get a single Analyzer Pro monitor's details (session + Akousa Pro required).","tags":["v1"],"responses":{"200":{"description":"Monitor details","content":{"application/json":{"schema":{"type":"object","properties":{"monitor":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"frequency":{"type":"string"},"lastRunAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"lastGrade":{"anyOf":[{"type":"string"},{"type":"null"}]},"alertOnDrop":{"anyOf":[{"type":"number"},{"type":"null"}]},"alertOnSslExpiry":{"type":"boolean"},"enabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","url","frequency","lastRunAt","enabled","createdAt"],"additionalProperties":{}}},"required":["monitor"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Missing or invalid monitor ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Monitor not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number","const":429},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":20,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}}]},"patch":{"operationId":"patch_api_v1_analyze_monitors_id","summary":"Update an Analyzer Pro monitor's settings (session + Akousa Pro required).","description":"Update an Analyzer Pro monitor's settings (session + Akousa Pro required).","tags":["v1"],"responses":{"200":{"description":"Monitor updated","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"boolean","const":true}},"required":["updated"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid monitor ID or request body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Monitor not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number","const":429},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":20,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frequency":{"type":"string","enum":["daily","weekly"]},"alertOnDrop":{"type":"integer","minimum":1,"maximum":50},"alertOnSslExpiry":{"type":"boolean"},"enabled":{"type":"boolean"}},"additionalProperties":{}}}}}},"delete":{"operationId":"delete_api_v1_analyze_monitors_id","summary":"Delete an Analyzer Pro monitor (session + Akousa Pro required).","description":"Delete an Analyzer Pro monitor (session + Akousa Pro required).","tags":["v1"],"responses":{"200":{"description":"Monitor deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Missing or invalid monitor ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Monitor not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number","const":429},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":20,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-zA-Z0-9_-]+$"}}]}},"/api/v1/analyze/trends":{"get":{"operationId":"get_api_v1_analyze_trends","summary":"Score trend data for a URL, or the list of scanned URLs (?urls=true). Session + Akousa Pro required.","description":"Score trend data for a URL, or the list of scanned URLs (?urls=true). Session + Akousa Pro required.","tags":["v1"],"responses":{"200":{"description":"Trend data or scanned URL list","content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"array","items":{}}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Akousa Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number","const":429},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":20,"windowMs":60000},"parameters":[{"name":"url","in":"query","required":false,"schema":{"type":"string","maxLength":2048}},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["weekly","monthly"]}},{"name":"urls","in":"query","required":false,"schema":{"type":"string"}}]}},"/api/v1/keys/{id}/rotate":{"post":{"operationId":"post_api_v1_keys_id_rotate","summary":"Rotate an API key — issues a new key and expires the old one after a grace period.","description":"Rotate an API key — issues a new key and expires the old one after a grace period.","tags":["v1"],"responses":{"200":{"description":"API key rotated","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"oldExpiresAt":{}},"required":["key"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid key ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"API key not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":5,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]}},"/api/v1/presets":{"options":{"operationId":"options_api_v1_presets","summary":"CORS preflight for the presets collection.","description":"CORS preflight for the presets collection.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]},"post":{"operationId":"post_api_v1_presets","summary":"Create a new saved tool-configuration preset.","description":"Create a new saved tool-configuration preset.","tags":["v1"],"responses":{"201":{"description":"Preset created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"toolSlug":{"type":"string"},"mode":{"type":"string"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Preset limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"toolSlug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"mode":{"type":"string","minLength":1,"maxLength":100},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":1000}}},"required":["name","toolSlug","mode"],"additionalProperties":false}}}}},"get":{"operationId":"get_api_v1_presets","summary":"List the authenticated user's saved presets.","description":"List the authenticated user's saved presets.","tags":["v1"],"responses":{"200":{"description":"Preset list","content":{"application/json":{"schema":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["presets"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":20,"windowMs":60000}}},"/api/v1/presets/{slug}":{"options":{"operationId":"options_api_v1_presets_slug","summary":"CORS preflight for a single preset.","description":"CORS preflight for a single preset.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}]},"put":{"operationId":"put_api_v1_presets_slug","summary":"Update a preset's name and/or config.","description":"Update a preset's name and/or config.","tags":["v1"],"responses":{"200":{"description":"Preset updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"toolSlug":{"type":"string"},"mode":{"type":"string"},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid slug or request body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid/revoked key or feature not available","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Preset not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Preset limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":1000}}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_api_v1_presets_slug","summary":"Delete a preset.","description":"Delete a preset.","tags":["v1"],"responses":{"200":{"description":"Preset deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid slug","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid/revoked key or feature not available","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Preset not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Preset limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}]}},"/api/v1/presets/{slug}/run":{"options":{"operationId":"options_api_v1_presets_slug_run","summary":"CORS preflight for preset execution.","description":"CORS preflight for preset execution.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}]},"post":{"operationId":"post_api_v1_presets_slug_run","summary":"Execute a saved preset with a given input.","description":"Execute a saved preset with a given input.","tags":["v1"],"responses":{"200":{"description":"Preset executed","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string"},"tool":{"type":"string"},"mode":{"type":"string"},"preset":{"type":"string"},"executionMs":{"type":"number"}},"required":["output","tool","mode","preset","executionMs"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid slug or request body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Preset not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"422":{"description":"Preset execution failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"}},"additionalProperties":false}}}}}},"/api/v1/sandbox":{"options":{"operationId":"options_api_v1_sandbox","summary":"CORS preflight for the deprecated sandbox endpoint.","description":"CORS preflight for the deprecated sandbox endpoint.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/tools/{slug}` instead.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1772323200"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-03-01T00:00:00Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog#changelog-deprecationHeaders","x-successor-version":"/api/v1/tools/{slug}","x-successor-url":"/api/v1/tools/{slug}"},"post":{"operationId":"post_api_v1_sandbox","summary":"Deprecated sandbox endpoint — superseded by /api/v1/tools/{slug}. Always returns 410.","description":"Deprecated sandbox endpoint — superseded by /api/v1/tools/{slug}. Always returns 410.\n\n**Deprecated.** This endpoint has been removed. Use `/api/v1/tools/{slug}` instead.","tags":["v1"],"responses":{"410":{"description":"Endpoint gone (deprecated)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"}},"required":["success","error"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}},"Deprecation":{"description":"RFC 9745 deprecation timestamp in @<unix-seconds> format.","schema":{"type":"string","example":"@1772323200"}},"Link":{"description":"RFC 8288 links to deprecation documentation and the successor endpoint.","schema":{"type":"string"}}}}},"security":[],"deprecated":true,"x-deprecated-at":"2026-03-01T00:00:00Z","x-lifecycle-phase":"removed","x-deprecation-documentation":"/docs/api/changelog#changelog-deprecationHeaders","x-successor-version":"/api/v1/tools/{slug}","x-successor-url":"/api/v1/tools/{slug}"}},"/api/v1/schedules":{"options":{"operationId":"options_api_v1_schedules","summary":"CORS preflight for the schedules collection.","description":"CORS preflight for the schedules collection.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]},"post":{"operationId":"post_api_v1_schedules","summary":"Create a new scheduled (cron) tool execution job.","description":"Create a new scheduled (cron) tool execution job.","tags":["v1"],"responses":{"201":{"description":"Scheduled job created","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid key, IP/tool scope, or tier limit","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"toolSlug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"mode":{"type":"string","minLength":1,"maxLength":100},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":1000}},"input":{"type":"string","maxLength":100000},"cronExpr":{"type":"string","minLength":5,"maxLength":50},"timezone":{"type":"string","maxLength":50},"webhookId":{"type":"string","maxLength":50}},"required":["name","toolSlug","cronExpr"],"additionalProperties":false}}}}},"get":{"operationId":"get_api_v1_schedules","summary":"List the authenticated user's scheduled jobs.","description":"List the authenticated user's scheduled jobs.","tags":["v1"],"responses":{"200":{"description":"Scheduled job list","content":{"application/json":{"schema":{"type":"object","properties":{"jobs":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["jobs"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing or invalid Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":20,"windowMs":60000}}},"/api/v1/schedules/{id}":{"options":{"operationId":"options_api_v1_schedules_id","summary":"CORS preflight for a single scheduled job.","description":"CORS preflight for a single scheduled job.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}]},"get":{"operationId":"get_api_v1_schedules_id","summary":"Get a single scheduled job by id.","description":"Get a single scheduled job by id.","tags":["v1"],"responses":{"200":{"description":"Scheduled job","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scheduled job not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":20,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}]},"patch":{"operationId":"patch_api_v1_schedules_id","summary":"Update a scheduled job.","description":"Update a scheduled job.","tags":["v1"],"responses":{"200":{"description":"Scheduled job updated","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scheduled job not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"cronExpr":{"type":"string","minLength":5,"maxLength":50},"active":{"type":"boolean"},"input":{"type":"string","maxLength":100000},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":1000}}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_api_v1_schedules_id","summary":"Delete a scheduled job.","description":"Delete a scheduled job.","tags":["v1"],"responses":{"200":{"description":"Scheduled job deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Scheduled job not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"x-rate-limit":{"requests":10,"windowMs":60000},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}]}},"/api/v1/settings":{"options":{"operationId":"options_api_v1_settings","summary":"CORS preflight for the settings endpoint.","description":"CORS preflight for the settings endpoint.","tags":["v1"],"responses":{"204":{"description":"No content (CORS preflight)","content":{"application/json":{"schema":{"type":"null"}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[]},"get":{"operationId":"get_api_v1_settings","summary":"Return the user's current alert thresholds.","description":"Return the user's current alert thresholds.","tags":["v1"],"responses":{"200":{"description":"Current thresholds","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"thresholds":{"type":"array","items":{"type":"number"}}},"required":["ok","thresholds"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"503":{"description":"Settings store unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}]},"post":{"operationId":"post_api_v1_settings","summary":"Save the user's custom alert thresholds (1-5 values, each 1-100).","description":"Save the user's custom alert thresholds (1-5 values, each 1-100).","tags":["v1"],"responses":{"200":{"description":"Saved thresholds","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"thresholds":{"type":"array","items":{"type":"number"}}},"required":["ok","thresholds"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Missing Authorization header","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"503":{"description":"Settings store unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"thresholds":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"integer","minimum":1,"maximum":100}}},"required":["thresholds"],"additionalProperties":false}}}}}},"/api/v1/portal":{"post":{"operationId":"post_api_v1_portal","summary":"Create a customer portal session for subscription management.","description":"Create a customer portal session for subscription management.","tags":["v1","subscription"],"responses":{"200":{"description":"Customer portal session created","content":{"application/json":{"schema":{"type":"object","properties":{"portalUrl":{"type":"string","format":"uri"}},"required":["portalUrl"],"additionalProperties":false}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Subscription customer not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"retryAfter":{"type":"number"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Portal session creation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"}},"required":["ok","error","status"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"x-rate-limit":{"requests":5,"windowMs":60000}}},"/api/v1/webhooks/{id}/deliveries":{"get":{"operationId":"get_api_v1_webhooks_id_deliveries","summary":"List recent delivery logs for a specific webhook (tier-limited).","description":"List recent delivery logs for a specific webhook (tier-limited).","tags":["v1"],"responses":{"200":{"description":"Delivery logs","content":{"application/json":{"schema":{"type":"object","properties":{"deliveries":{"type":"array","items":{}}},"required":["deliveries"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid webhook ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]}},"/api/v1/workflow/credentials":{"get":{"operationId":"get_api_v1_workflow_credentials","summary":"List the user's credential vault entries (names/services only, never values).","description":"List the user's credential vault entries (names/services only, never values).","tags":["v1"],"responses":{"200":{"description":"Credential list","content":{"application/json":{"schema":{"type":"object","properties":{"credentials":{"type":"array","items":{}}},"required":["credentials"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]},"post":{"operationId":"post_api_v1_workflow_credentials","summary":"Create a new encrypted credential (Pro only). Body: { name, service, value }.","description":"Create a new encrypted credential (Pro only). Body: { name, service, value }.","tags":["v1"],"responses":{"201":{"description":"Credential created","content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"service":{"type":"string"},"createdAt":{}},"required":["id","name","service","createdAt"],"additionalProperties":{}}},"required":["credential"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro required or credential limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Duplicate credential name","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"service":{"type":"string","minLength":1,"maxLength":50},"value":{"type":"string","minLength":1,"maxLength":10000}},"required":["name","service","value"],"additionalProperties":false}}}}}},"/api/v1/workflow/credentials/{id}":{"delete":{"operationId":"delete_api_v1_workflow_credentials_id","summary":"Delete a credential owned by the authenticated user.","description":"Delete a credential owned by the authenticated user.","tags":["v1"],"responses":{"200":{"description":"Credential deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Credential not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]},"patch":{"operationId":"patch_api_v1_workflow_credentials_id","summary":"Rename a credential. Body: { name }.","description":"Rename a credential. Body: { name }.","tags":["v1"],"responses":{"200":{"description":"Credential renamed","content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"service":{"type":"string"},"createdAt":{}},"required":["id","name","service","createdAt"],"additionalProperties":{}},{"type":"null"}]}},"required":["credential"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Credential not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Duplicate credential name","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/workflow/deploy":{"post":{"operationId":"post_api_v1_workflow_deploy","summary":"Deploy a workflow as a REST endpoint (Pro only). Body: { name, serialized }.","description":"Deploy a workflow as a REST endpoint (Pro only). Body: { name, serialized }.","tags":["v1"],"responses":{"200":{"description":"Workflow deployed","content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"apiKey":{"type":"string"},"endpoint":{"type":"string"},"webhookUrl":{"type":"string"},"webhookCount":{"type":"number"},"scheduleInfo":{"type":"object","properties":{"count":{"type":"number"},"cronExpressions":{"type":"array","items":{}},"note":{"type":"string"}},"additionalProperties":{}}},"required":["deploymentId","apiKey","endpoint"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body / too large / limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"serialized":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name","serialized"],"additionalProperties":false}}}}},"get":{"operationId":"get_api_v1_workflow_deploy","summary":"List the user's deployed workflows with their active API keys.","description":"List the user's deployed workflows with their active API keys.","tags":["v1"],"responses":{"200":{"description":"Deployment list","content":{"application/json":{"schema":{"type":"array","items":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]}},"/api/v1/workflow/deploy/{id}":{"patch":{"operationId":"patch_api_v1_workflow_deploy_id","summary":"Update a deployment (toggle active, replace serialized). Body: { isActive?, serialized? }.","description":"Update a deployment (toggle active, replace serialized). Body: { isActive?, serialized? }.","tags":["v1"],"responses":{"200":{"description":"Deployment updated","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isActive":{"type":"boolean"},"updatedAt":{}},"required":["id","name","isActive","updatedAt"],"additionalProperties":{}},{"type":"null"}]}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body / no fields / too large","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isActive":{"type":"boolean"},"serialized":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}}}}}},"delete":{"operationId":"delete_api_v1_workflow_deploy_id","summary":"Delete a deployment and its API keys.","description":"Delete a deployment and its API keys.","tags":["v1"],"responses":{"200":{"description":"Deployment deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid deployment ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]}},"/api/v1/workflow/gallery":{"get":{"operationId":"get_api_v1_workflow_gallery","summary":"List public workflow gallery entries (filterable, paginated, sortable).","description":"List public workflow gallery entries (filterable, paginated, sortable).","tags":["v1"],"responses":{"200":{"description":"Gallery list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"socialPostId":{"type":"string"}},"required":["id","socialPostId"],"additionalProperties":{}}},"total":{"type":"number"},"page":{"type":"number"},"limit":{"type":"number"},"totalPages":{"type":"number"}},"required":["data","total","page","limit","totalPages"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["popular","recent","imports"]}}]},"post":{"operationId":"post_api_v1_workflow_gallery","summary":"Publish a workflow to the gallery (Pro only). Body: { name, description, category, tags?, serialized }.","description":"Publish a workflow to the gallery (Pro only). Body: { name, description, category, tags?, serialized }.","tags":["v1"],"responses":{"201":{"description":"Workflow published","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"socialPostId":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"nodeCount":{"type":"number"},"createdAt":{}},"required":["id","socialPostId","name","category","nodeCount","createdAt"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body / workflow / too large","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Duplicate gallery entry","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200},"description":{"type":"string","minLength":10,"maxLength":2000},"category":{"type":"string","enum":["data-processing","security","text-analysis","web-scraping","conversion","other"]},"tags":{"type":"string","maxLength":500},"serialized":{"type":"string","minLength":1}},"required":["name","description","category","serialized"],"additionalProperties":false}}}}}},"/api/v1/workflow/gallery/{id}":{"get":{"operationId":"get_api_v1_workflow_gallery_id","summary":"Get a single public gallery entry by ID.","description":"Get a single public gallery entry by ID.","tags":["v1"],"responses":{"200":{"description":"Gallery entry","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"socialPostId":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"serialized":{"type":"string"},"likeCount":{"type":"number"},"dislikeCount":{"type":"number"}},"required":["id","socialPostId","name"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid entry ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Gallery entry not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]},"delete":{"operationId":"delete_api_v1_workflow_gallery_id","summary":"Delete the authenticated user's own gallery entry.","description":"Delete the authenticated user's own gallery entry.","tags":["v1"],"responses":{"200":{"description":"Gallery entry deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid entry ID","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Not the entry owner","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Gallery entry not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]}},"/api/v1/workflow/schedules":{"get":{"operationId":"get_api_v1_workflow_schedules","summary":"List the user's workflow schedules.","description":"List the user's workflow schedules.","tags":["v1"],"responses":{"200":{"description":"Schedule list","content":{"application/json":{"schema":{"type":"object","properties":{"schedules":{"type":"array","items":{}}},"required":["schedules"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]},"post":{"operationId":"post_api_v1_workflow_schedules","summary":"Create a schedule for a deployed workflow (Pro only). Body: { deployedWorkflowId, cronExpression, timezone?, maxRuns? }.","description":"Create a schedule for a deployed workflow (Pro only). Body: { deployedWorkflowId, cronExpression, timezone?, maxRuns? }.","tags":["v1"],"responses":{"201":{"description":"Schedule created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"cronExpression":{"type":"string"},"timezone":{"type":"string"},"isActive":{"type":"boolean"},"nextRunAt":{}},"required":["id","cronExpression","timezone","isActive","nextRunAt"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body / cron / timezone / limit","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Deployed workflow not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Schedule already exists for this workflow","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deployedWorkflowId":{"type":"string","minLength":1},"cronExpression":{"type":"string","minLength":1,"maxLength":100},"timezone":{"type":"string","minLength":1,"maxLength":50},"maxRuns":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["deployedWorkflowId","cronExpression"],"additionalProperties":false}}}}}},"/api/v1/workflow/schedules/{id}":{"delete":{"operationId":"delete_api_v1_workflow_schedules_id","summary":"Delete a schedule owned by the authenticated user.","description":"Delete a schedule owned by the authenticated user.","tags":["v1"],"responses":{"200":{"description":"Schedule deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Schedule not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]},"patch":{"operationId":"patch_api_v1_workflow_schedules_id","summary":"Update a schedule (toggle active, change cron/timezone). Body: { isActive?, cronExpression?, timezone? }.","description":"Update a schedule (toggle active, change cron/timezone). Body: { isActive?, cronExpression?, timezone? }.","tags":["v1"],"responses":{"200":{"description":"Schedule updated","content":{"application/json":{"schema":{"type":"object","properties":{"schedule":{"type":"object","properties":{"id":{"type":"string"},"cronExpression":{"type":"string"},"timezone":{"type":"string"},"isActive":{"type":"boolean"},"nextRunAt":{},"runCount":{"type":"number"}},"required":["id","cronExpression","timezone","isActive","nextRunAt","runCount"],"additionalProperties":{}}},"required":["schedule"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body / cron / timezone","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required to activate","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Schedule not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isActive":{"type":"boolean"},"cronExpression":{"type":"string","maxLength":100},"timezone":{"type":"string","maxLength":50}},"additionalProperties":{}}}}}}},"/api/v1/workflow/webhooks":{"get":{"operationId":"get_api_v1_workflow_webhooks","summary":"List the user's workflow webhook triggers.","description":"List the user's workflow webhook triggers.","tags":["v1"],"responses":{"200":{"description":"Webhook list","content":{"application/json":{"schema":{"type":"object","properties":{"webhooks":{"type":"array","items":{}}},"required":["webhooks"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}]},"post":{"operationId":"post_api_v1_workflow_webhooks","summary":"Create a webhook trigger for a deployed workflow (Pro only). Body: { deployedWorkflowId }.","description":"Create a webhook trigger for a deployed workflow (Pro only). Body: { deployedWorkflowId }.","tags":["v1"],"responses":{"201":{"description":"Webhook created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"},"secret":{"type":"string"},"isActive":{"type":"boolean"},"verifySignature":{"type":"boolean"},"createdAt":{},"url":{"type":"string"}},"required":["id","path","secret","createdAt","url"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body / webhook limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Deployed workflow not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"409":{"description":"Webhook already exists for this deployment","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deployedWorkflowId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9_-]+$"}},"required":["deployedWorkflowId"],"additionalProperties":false}}}}}},"/api/v1/workflow/webhooks/{id}":{"delete":{"operationId":"delete_api_v1_workflow_webhooks_id","summary":"Delete a workflow webhook owned by the authenticated user.","description":"Delete a workflow webhook owned by the authenticated user.","tags":["v1"],"responses":{"200":{"description":"Webhook deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}]},"patch":{"operationId":"patch_api_v1_workflow_webhooks_id","summary":"Update a workflow webhook (toggle isActive / verifySignature). Body: { isActive?, verifySignature? }.","description":"Update a workflow webhook (toggle isActive / verifySignature). Body: { isActive?, verifySignature? }.","tags":["v1"],"responses":{"200":{"description":"Webhook updated","content":{"application/json":{"schema":{"type":"object","properties":{"webhook":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"},"isActive":{"type":"boolean"},"verifySignature":{"type":"boolean"},"lastTriggeredAt":{},"triggerCount":{"type":"number"}},"required":["id","path","isActive","verifySignature","lastTriggeredAt","triggerCount"],"additionalProperties":{}},{"type":"null"}]}},"required":["webhook"],"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"400":{"description":"Invalid body","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"403":{"description":"Pro subscription required to activate","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"retryAfter":{"type":"number"}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"details":{}},"additionalProperties":{}}}},"headers":{"X-API-Version":{"description":"Full semantic version served by this path-major API surface.","schema":{"type":"string","example":"1.1.0"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[a-z0-9-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isActive":{"type":"boolean"},"verifySignature":{"type":"boolean"}},"additionalProperties":{}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"API key obtained from /api/v1/keys. Pass as `Authorization: Bearer ak_<key>`."},"session":{"type":"apiKey","in":"cookie","name":"session","description":"Browser session cookie set after login."}},"schemas":{"ToolExecuteRequest":{"type":"object","required":["input"],"properties":{"input":{"type":"string","description":"The input to process. Max 10,000,000 bytes (free) / 10,000,000 bytes (pro)."},"mode":{"type":"string","description":"Tool mode to run. Defaults to the first available mode."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Mode-specific configuration overrides."}}},"BatchRequest":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":200,"description":"Array of tool executions (max 200 items).","items":{"type":"object","required":["tool","input"],"properties":{"tool":{"type":"string","description":"Tool slug."},"input":{"type":"string"},"mode":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"ChainRequest":{"type":"object","required":["steps","input"],"properties":{"steps":{"type":"array","minItems":1,"maxItems":50,"description":"Ordered tool steps (max 50 steps).","items":{"type":"object","required":["tool"],"properties":{"tool":{"type":"string","description":"Tool slug."},"mode":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"}}}}},"input":{"type":"string","description":"Initial input for the chain."}}},"ToolExecuteResponse":{"type":"object","required":["output","tool","mode","executionMs"],"properties":{"output":{"type":"string","description":"Tool output."},"tool":{"type":"string","description":"Tool slug that was executed."},"mode":{"type":"string","description":"Mode that was used."},"executionMs":{"type":"number","description":"Execution time in milliseconds."}},"example":{"output":"SGVsbG8sIFdvcmxkIQ==","tool":"base64","mode":"encode","executionMs":1}},"BatchResponse":{"type":"object","required":["results","totalMs"],"properties":{"results":{"type":"array","description":"Execution results in the same order as the request items.","items":{"type":"object","properties":{"output":{"type":"string"},"tool":{"type":"string"},"mode":{"type":"string"},"executionMs":{"type":"number"},"error":{"type":"string","description":"Present if this item failed."}}}},"totalMs":{"type":"number","description":"Total batch execution time."}},"example":{"results":[{"output":"SGVsbG8=","tool":"base64","mode":"encode","executionMs":1},{"output":"68656c6c6f","tool":"hex","mode":"encode","executionMs":1}],"totalMs":4}},"ChainResponse":{"type":"object","required":["output","steps","totalMs"],"properties":{"output":{"type":"string","description":"Final output after all steps."},"steps":{"type":"array","description":"Per-step execution details.","items":{"type":"object","properties":{"tool":{"type":"string"},"mode":{"type":"string"},"executionMs":{"type":"number"},"outputPreview":{"type":"string","description":"Truncated output preview."}}}},"totalMs":{"type":"number","description":"Total chain execution time."}},"example":{"output":"48454c4c4f","steps":[{"tool":"base64","mode":"decode","executionMs":1,"outputPreview":"HELLO"},{"tool":"hex","mode":"encode","executionMs":1,"outputPreview":"48454c4c4f"}],"totalMs":3}},"ApiKey":{"type":"object","required":["id","keyPrefix","name","tier","createdAt"],"properties":{"id":{"type":"string","description":"Unique key identifier."},"key":{"type":"string","description":"Full API key — only returned on creation."},"keyPrefix":{"type":"string","description":"First 8 characters of the key for display."},"name":{"type":"string"},"tier":{"type":"string","enum":["free","pro"]},"createdAt":{"type":"string","format":"date-time"}}},"SubscriptionStatus":{"type":"object","required":["tier","active"],"properties":{"tier":{"type":"string","enum":["free","pro"]},"active":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time"},"cancelledAt":{"type":"string","format":"date-time"},"dailyLimit":{"type":"integer"},"dailyUsed":{"type":"integer"}}},"UsageStats":{"type":"object","required":["usage","subscription"],"properties":{"usage":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"count":{"type":"integer"},"tools":{"type":"object","additionalProperties":{"type":"integer"}}}}},"subscription":{"$ref":"#/components/schemas/SubscriptionStatus"}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message."},"code":{"type":"string","description":"Machine-readable error code."},"details":{"type":"object","description":"Additional error context."}},"example":{"error":"Invalid API key","code":"UNAUTHORIZED","details":{"hint":"Ensure your key starts with 'ak_' and has not been revoked."}}},"DataResponse":{"type":"object","required":["data","meta"],"description":"Unified response envelope for all data services.","properties":{"data":{"type":"object","description":"Service-specific response data."},"meta":{"type":"object","required":["service","cached","source","executionMs"],"properties":{"service":{"type":"string","description":"Service slug."},"cached":{"type":"boolean","description":"Whether the response was served from cache."},"source":{"type":"string","description":"Data source identifier."},"executionMs":{"type":"number","description":"Server-side execution time in ms."}}}},"example":{"data":{"rates":{"EUR":0.92,"GBP":0.79,"TRY":38.41},"base":"USD"},"meta":{"service":"currency","cached":true,"source":"ecb","executionMs":12}}},"DataService":{"type":"object","required":["slug","name","description","category","endpoint","method"],"properties":{"slug":{"type":"string","description":"Unique service identifier."},"name":{"type":"string","description":"Human-readable service name."},"description":{"type":"string"},"category":{"type":"string","enum":["realtime","network","financial","utility"]},"endpoint":{"type":"string","description":"API endpoint path."},"method":{"type":"string","enum":["GET","POST"]},"params":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"},"description":{"type":"string"}}}}}},"WebhookEvent":{"type":"string","enum":["usage.threshold.80","usage.threshold.90","usage.threshold.100","batch.complete","chain.complete"],"description":"Webhook event type."},"Webhook":{"type":"object","required":["id","url","events","active","createdAt"],"properties":{"id":{"type":"string","description":"Unique webhook ID."},"url":{"type":"string","format":"uri","description":"Delivery URL."},"secret":{"type":"string","description":"HMAC secret — only returned on creation."},"secretPrefix":{"type":"string","description":"First 8 characters of the secret for display."},"events":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEvent"}},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"example":{"id":"wh_abc123","url":"https://example.com/webhooks/akousa","secretPrefix":"whsec_ab","events":["batch.complete","usage.threshold.80"],"active":true,"createdAt":"2026-03-15T10:00:00.000Z"}},"WebhookPayload":{"type":"object","required":["event","timestamp","data"],"description":"Payload delivered to webhook URLs. Signed with HMAC-SHA256 via `X-Webhook-Signature` header.","properties":{"event":{"$ref":"#/components/schemas/WebhookEvent"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 delivery timestamp."},"data":{"type":"object","description":"Event-specific payload data."}},"example":{"event":"batch.complete","timestamp":"2026-03-15T14:30:00.000Z","data":{"batchId":"batch_abc123","toolsRun":5,"toolsSucceeded":5,"toolsFailed":0,"durationMs":2340}}}}},"tags":[{"name":"Tools","description":"Tool catalog and execution"},{"name":"Batch & Chain","description":"Multi-tool execution (Pro tier)"},{"name":"Analytics","description":"Usage analytics (Pro tier)"},{"name":"Account","description":"User account and usage"},{"name":"API Keys","description":"API key management"},{"name":"Subscription","description":"Pro tier subscription"},{"name":"Webhooks","description":"Webhook management for event notifications (Pro tier)"},{"name":"Meta","description":"API metadata and service catalog"},{"name":"Data - Real-Time","description":"Live data feeds: news, earthquakes, flights, service status, cyber threats"},{"name":"Data - Network","description":"Network utilities: DNS, WHOIS, SSL, IP lookup, URL analysis, meta tags"},{"name":"Data - Financial","description":"Financial data: currency rates, crypto, holidays"},{"name":"Data - Utility","description":"Utility services: QR code generation"}]}