{"openapi":"3.1.0","info":{"title":"Ecommerce Leaderboards Agent API","version":"1.0.0","description":"Read /llms.txt before starting. Email proof creates/reuses an account and returns a bearer key. Paid data access uses the same subscription as the website. Stripe checkout may require cardholder action. Never send card details here. Revenue is company turnover, not online sales. Errors fail closed; authenticated responses are no-store."},"servers":[{"url":"https://ecomleaderboard.com/api/v1"}],"externalDocs":{"url":"https://ecomleaderboard.com/llms.txt","description":"Complete signup, payment, recovery and pagination instructions for LLMs"},"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"el_...","description":"API key returned after email verification. Email verification keys have management authority; keys created through POST /keys default to data-only."}}},"paths":{"/plans":{"get":{"operationId":"getPlans","summary":"Discover pricing, limits, countries, platforms, categories and availability","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"currency":{"const":"EUR"},"free":{"type":"object"},"paid":{"type":"object"},"countries":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"revenueBasis":{"type":"string"}},"required":["slug","name","revenueBasis"],"additionalProperties":false}},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}},"required":["id","label"],"additionalProperties":false}},"platforms":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/auth/start":{"post":{"operationId":"startEmailVerification","summary":"Send a 15-minute token to an authorized inbox; also used for recovery","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":254}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"nextAction":{"type":"string"},"expiresInSeconds":{"type":"integer"},"verifyEndpoint":{"type":"string"},"message":{"type":"string"}},"required":["nextAction","expiresInSeconds","verifyEndpoint","message"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/auth/verify":{"post":{"operationId":"verifyEmail","summary":"Consume email proof and return a new key for the same account","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["email","token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string","description":"Secret returned once. Store securely."},"tier":{"type":"string"},"subscription":{"type":["object","null"]},"nextAction":{"type":"string"},"message":{"type":"string"}},"required":["apiKey","tier","subscription","nextAction","message"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/account":{"get":{"operationId":"getAccount","summary":"Read tier, subscription and this key's daily data usage","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"manageAccount":{"type":"boolean"},"email":{"type":"string","format":"email"},"tier":{"enum":["free","paid","grace"]},"subscription":{"type":["object","null"],"properties":{"status":{"type":"string"},"cancelAtPeriodEnd":{"type":"boolean"},"currentPeriodEnd":{"type":["string","null"],"format":"date-time"}}},"usage":{"type":"object","properties":{"requestsToday":{"type":"integer"},"limit":{"type":"integer"},"resetsAt":{"type":"string","format":"date-time"}},"required":["requestsToday","limit","resetsAt"],"additionalProperties":false},"nextAction":{"type":"string"}},"required":["manageAccount","email","tier","subscription","usage","nextAction"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/keys":{"get":{"operationId":"listKeys","summary":"List this account's active keys without secrets","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":["string","null"]},"createdAt":{"type":"string"},"lastUsedAt":{"type":["string","null"]},"manageAccount":{"type":"boolean"}},"required":["id","label","createdAt","lastUsedAt","manageAccount"],"additionalProperties":false}}},"required":["keys"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"operationId":"createKey","summary":"Create a key; securely save the one-time secret","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"manageAccount":{"type":"boolean","default":false,"description":"Explicitly delegate account and billing management; default is data-only"},"label":{"type":"string","maxLength":80,"default":"Agent"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"apiKey":{"type":"string"},"manageAccount":{"type":"boolean"},"message":{"type":"string"}},"required":["id","apiKey","manageAccount","message"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/keys/{id}":{"delete":{"operationId":"revokeKey","summary":"Immediately revoke an owned key, including the current key","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Key ID from listKeys"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"const":true}},"required":["revoked"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/billing/checkout":{"post":{"operationId":"createCheckout","summary":"Create or reuse checkout after owner authorizes recurring payment","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"interval":{"enum":["monthly","annual"]}},"required":["interval"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"checkoutSessionId":{"type":"string"},"checkoutUrl":{"type":["string","null"]},"expiresAt":{"type":"integer","description":"Unix seconds"},"nextAction":{"const":"complete_checkout"}},"required":["checkoutSessionId","checkoutUrl","expiresAt","nextAction"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/billing/sync":{"post":{"operationId":"syncSubscription","summary":"Reconcile Stripe after checkout or refresh an existing subscription; do not trust redirect success","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkoutSessionId":{"type":"string","pattern":"^cs_[A-Za-z0-9_]+$","description":"Owned checkout ID; omit to refresh existing subscription"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"nextAction":{"type":"string"},"tier":{"type":"string"},"subscription":{"type":["object","null"]}}}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/billing/portal":{"post":{"operationId":"createBillingPortal","summary":"Get a Stripe link to change plans, view invoices or update payment details","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"portalUrl":{"type":"string"},"nextAction":{"type":"string"}},"required":["portalUrl","nextAction"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/billing/subscription":{"delete":{"operationId":"cancelRenewal","summary":"Cancel renewal for the shared website/API subscription; preserve paid-through access","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string"},"subscription":{"type":"object"},"message":{"type":"string"}}}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/companies/{country}":{"get":{"operationId":"listCompanies","summary":"Query paid public company data; follow next until null","parameters":[{"name":"country","in":"path","required":true,"schema":{"enum":["estonia","latvia","lithuania","finland","denmark","czechia"]},"description":"Country slug"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100000,"default":1},"description":"Page; out-of-range pages clamp to last page"},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","minimum":10,"maximum":100,"default":100},"description":"Rows per page"},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200},"description":"Company/name/domain search"},{"name":"platform","in":"query","required":false,"schema":{"enum":["All","Shopify","WooCommerce","Magento","PrestaShop","BigCommerce","Voog","Ecwid","Wix","Shopware","OpenCart","Salesforce Commerce Cloud","Squarespace","NopCommerce","DanDomain","SmartWeb","Webflow","Zen Cart","osCommerce","Other"],"default":"All"},"description":"Platform filter"},{"name":"category","in":"query","required":false,"schema":{"enum":["All","electronics","auto-moto","home-interior","construction-tools","garden-agriculture","fashion","health-beauty","food-drink","kids-baby","sports-outdoor","pets","books-media","hobbies-entertainment","flowers-gifts","office-supplies","industrial","general-stores","other"],"default":"All"},"description":"Category filter"},{"name":"minRevenue","in":"query","required":false,"schema":{"type":"number","minimum":0},"description":"Minimum total company turnover EUR"},{"name":"maxRevenue","in":"query","required":false,"schema":{"type":"number","minimum":0},"description":"Maximum total company turnover EUR"},{"name":"sortKey","in":"query","required":false,"schema":{"enum":["rank","company","website","turnoverEur","productCount","platform","category"],"default":"rank"},"description":"Sort field"},{"name":"direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"default":"asc"},"description":"Sort direction"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string"},"entries":{"type":"array","items":{"type":"object","properties":{"registryCode":{"type":"string"},"rank":{"type":["number","null"]},"company":{"type":"string"},"legalName":{"type":"string"},"website":{"type":["string","null"]},"revenuePeriod":{"type":["string","null"]},"turnoverEur":{"type":["number","null"]},"previousTurnoverEur":{"type":["number","null"]},"employees":{"type":["number","null"]},"productCount":{"type":["number","null"]},"platform":{"type":"string"},"category":{"type":["string","null"]},"activity":{"type":"string"},"profilePath":{"type":["string","null"]}},"required":["registryCode","rank","company","legalName","website","revenuePeriod","turnoverEur","previousTurnoverEur","employees","productCount","platform","category","activity","profilePath"],"additionalProperties":false}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"},"pageCount":{"type":"integer"},"next":{"type":["string","null"]},"revenueNote":{"type":"string"}},"required":["country","entries","total","page","pageSize","pageCount","next","revenueNote"],"additionalProperties":false}}}},"400":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Structured error. See error.code and error.message; obey Retry-After for 429 and billing_busy.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string"}},"required":["code","message","docs"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}}}