{"openapi":"3.1.0","info":{"title":"Overage API","version":"1.8.0","description":"Pricing and limits for SaaS and APIs. Every number carries its source and verification date. Data license: CC BY 4.0. Anonymous: 60 req/min per IP; API key (`x-api-key` or `Authorization: Bearer ovg_...`): 600 req/min.","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"servers":[{"url":"https://api.overage.io"}],"paths":{"/ingest":{"post":{"tags":["ingest"],"summary":"Signed batch from the pipeline","description":"Body is an IngestBatch. `x-overage-signature` is the HMAC-SHA256 hex of the raw body, keyed with INGEST_SECRET. Retried batch_ids are acknowledged without re-applying.","security":[{"ingestSignature":[]}],"parameters":[{"name":"x-overage-signature","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestBatch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestResponse"}}}},"401":{"description":"Bad signature","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Tier id belongs to another service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid batch or schema_version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ingest/snapshots":{"post":{"tags":["ingest"],"summary":"Signed snapshot markdown from the pipeline","description":"Body is a SnapshotPush (max 50 snapshots, 5 MB). `x-overage-signature` is the HMAC-SHA256 hex of the raw body. Stored in R2 at md/<id>.md; idempotent per id. Works against `wrangler dev --local` (local R2).","security":[{"ingestSignature":[]}],"parameters":[{"name":"x-overage-signature","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotPush"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotPushResponse"}}}},"401":{"description":"Bad signature","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid push or schema_version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/snapshots/{id}":{"get":{"tags":["services"],"summary":"Stored snapshot markdown as JSON lines (for the quote viewer)","description":"The page text a provenance quote came from. JSON, `X-Robots-Tag: noindex`; not a republished page. Snapshots are immutable per id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotResponse"}}}},"404":{"description":"No stored snapshot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/services":{"get":{"tags":["services"],"summary":"List services with summary","parameters":[{"name":"category","in":"query","required":false,"description":"Filter by category.","schema":{"$ref":"#/components/schemas/Category"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1-200 (default 50).","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"cursor","in":"query","required":false,"description":"`next_cursor` from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceListResponse"}}}},"400":{"description":"Bad query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/services/{id}":{"get":{"tags":["services"],"summary":"Full published record","description":"KV-first. `id` may be a service id or an alias. ETag supported.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceResponse"}}}},"304":{"description":"Not modified"},"404":{"description":"Unknown service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/services/{id}/changes":{"get":{"tags":["changes"],"summary":"Change events for a service, newest first","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1-200 (default 50).","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"cursor","in":"query","required":false,"description":"`next_cursor` from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesResponse"}}}},"404":{"description":"Unknown service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/compare":{"get":{"tags":["compare"],"summary":"Side-by-side tiers and cost at a usage level","parameters":[{"name":"ids","in":"query","required":true,"description":"2-8 comma-separated service ids.","schema":{"type":"string"}},{"name":"usage","in":"query","required":false,"description":"JSON object or `metric:qty,metric:qty`, e.g. `email_sent:60000`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareResponse"}}}},"400":{"description":"Bad query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/estimate":{"post":{"tags":["compare"],"summary":"Cost per service and total for a stack","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateResponse"}}}},"404":{"description":"Unknown service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Unknown tier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/servers":{"get":{"tags":["compare"],"summary":"Cheapest server by resources (vCPU, RAM, disk, included transfer)","description":"Filters the published `servers` services by minimum resources and returns matches cheapest-first by monthly list price. Same rules as the MCP tool find_servers and the /c/servers page. A missing (null) attribute never satisfies a minimum. Compare `cpu_kind` before ranking: shared, high-performance and dedicated vCPUs are not equivalent.","parameters":[{"name":"min_vcpu","in":"query","required":false,"description":"Minimum vCPUs.","schema":{"type":"number"}},{"name":"min_ram_gb","in":"query","required":false,"description":"Minimum RAM in GB.","schema":{"type":"number"}},{"name":"min_disk_gb","in":"query","required":false,"description":"Minimum disk in GB.","schema":{"type":"number"}},{"name":"min_transfer_gb","in":"query","required":false,"description":"Minimum included monthly transfer in GB.","schema":{"type":"number"}},{"name":"cpu_kind","in":"query","required":false,"description":"shared, high-performance or dedicated.","schema":{"type":"string","enum":["shared","high-performance","dedicated"]}},{"name":"max_monthly_usd","in":"query","required":false,"description":"Maximum monthly price in USD.","schema":{"type":"number"}},{"name":"provider","in":"query","required":false,"description":"Comma-separated service ids, e.g. vultr,linode.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows, 1-200 (default 20).","schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServersResponse"}}}},"400":{"description":"Bad query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/search":{"get":{"tags":["services"],"summary":"Fuzzy service lookup through aliases","parameters":[{"name":"q","in":"query","required":true,"description":"Name or alias.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}}}}},"/v1/changes":{"get":{"tags":["changes"],"summary":"Global changelog, newest first","parameters":[{"name":"since","in":"query","required":false,"description":"ISO date or datetime.","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"Filter by category.","schema":{"$ref":"#/components/schemas/Category"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1-200 (default 50).","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"cursor","in":"query","required":false,"description":"`next_cursor` from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesResponse"}}}},"400":{"description":"Bad query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/changes/feed.xml":{"get":{"tags":["changes"],"summary":"Global changelog as RSS 2.0","responses":{"200":{"description":"RSS","content":{"application/rss+xml":{"schema":{"type":"string"}}}}}}},"/v1/changes/feed.json":{"get":{"tags":["changes"],"summary":"Global changelog as JSON Feed 1.1","responses":{"200":{"description":"JSON Feed","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/sitemap.json":{"get":{"tags":["changes"],"summary":"Service ids and lastmod for sitemap generation","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitemapData"}}}}}}},"/v1/report":{"post":{"tags":["report"],"summary":"Submit a correction (Turnstile-protected)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRequest"}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportAccepted"}}}},"403":{"description":"Captcha failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Reports disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/mcp":{"post":{"tags":["mcp"],"summary":"MCP server (streamable HTTP, stateless JSON responses)","description":"Tools: get_pricing, compare, estimate_cost, check_limit, changes_since, find_servers, search_services. Optional API key raises the rate limit.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/admin/queue":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Review queue, urgent first","parameters":[{"name":"status","in":"query","required":false,"description":"pending (default), approved, corrected, rejected","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Queue items"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/review/{id}":{"post":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Decide a queue item (approve / correct / reject)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Decision recorded"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such item","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Already decided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/services/{id}":{"put":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Manual correction (writes correction change events with reviewer)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditRequest"}}}},"responses":{"200":{"description":"Applied"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown row","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/runs":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Pipeline run history","responses":{"200":{"description":"Runs"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Record a pipeline run","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}}},"responses":{"201":{"description":"Recorded"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/summary":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Usage totals by day, kind, user-agent class and status","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/tools":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"MCP tool health: calls, errors, empty results, latency","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/clients":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"MCP client names (from initialize), user agents and methods","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/demand":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"What agents asked for, and the calls that failed or came back empty","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/bots":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Named AI crawlers, agents and search bots the Worker served, with the paths they fetched","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/paths":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"REST and other paths: hits, errors, 404s, latency","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/recent":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Most recent logged requests","parameters":[{"name":"limit","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/usage/edge":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Cloudflare edge analytics (sampled GraphQL); not configured without CF_ANALYTICS_TOKEN","parameters":[{"name":"days","in":"query","required":false,"description":"1-30 days (default 7); recent: 1-200","schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregates"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/sources":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"List sources","parameters":[{"name":"service_id","in":"query","required":false,"description":"Filter by service","schema":{"type":"string"}}],"responses":{"200":{"description":"Sources"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/sources/{id}":{"put":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Edit a source (url, kind, capture_steps, enabled)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Updated"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/keys":{"get":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"List API keys","responses":{"200":{"description":"Keys (no secrets)"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Issue an API key (shown once)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"}},"required":["label"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedKey"}}}},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/keys/{id}":{"delete":{"tags":["admin"],"security":[{"adminBearer":[]}],"summary":"Revoke an API key","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Revoked"},"401":{"description":"Missing or wrong admin token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Error","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"Category":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Category","type":"string","enum":["llm","email","sms","auth","database","hosting","storage","payments","search","monitoring","gpu","servers"]},"Usage":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Usage","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number","minimum":0}},"Freshness":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Freshness","type":"object","properties":{"verified_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"age_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"staleness":{"type":"string","enum":["fresh","amber","red"]},"sentence":{"type":"string"}},"required":["verified_at","age_days","staleness","sentence"],"additionalProperties":false},"Provenance":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Provenance","type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"snapshot_id":{"type":["string","null"]},"captured_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["url","snapshot_id","captured_at"],"additionalProperties":false}},"license":{"default":"CC BY 4.0","type":"string"},"fields":{"default":[],"type":"array","items":{"$ref":"#/components/schemas/FieldProvenance"}}},"required":["sources","license","fields"],"additionalProperties":false},"FieldProvenance":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/FieldProvenance","type":"object","properties":{"table":{"type":"string"},"row_id":{"type":"string"},"field":{"type":"string"},"snapshot_id":{"type":"string"},"quote":{"type":"string","maxLength":300},"reviewer":{"default":null,"type":["string","null"]}},"required":["table","row_id","field","snapshot_id","quote","reviewer"],"additionalProperties":false},"Allowance":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Allowance","type":"object","properties":{"id":{"type":"string"},"tier_id":{"type":"string"},"metric":{"type":"string","enum":["token_input","token_output","token_cached_input","token_cache_write","token_input_batch","token_output_batch","email_sent","email_received","sms_sent","api_request","gb_stored","gb_transferred","seat","message_sent","contact","request_write","request_read","row_written","credit","vcpu_hour","gb_hour","event","host","record","sms_carrier_fee","sso_connection","mru","mau","tx_pct","tx_count","gpu_hour","compute_hour","function_invocation","build_minute","search_request","log_gb_ingested","row_read","custom_domain"]},"quantity":{"type":"number","minimum":0},"period":{"type":"string","enum":["second","minute","hour","day","month","year","one_time","none"]},"notes":{"default":null,"type":["string","null"]}},"required":["id","tier_id","metric","quantity","period","notes"],"additionalProperties":false},"Rate":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Rate","type":"object","properties":{"id":{"type":"string"},"tier_id":{"type":"string"},"metric":{"type":"string","enum":["token_input","token_output","token_cached_input","token_cache_write","token_input_batch","token_output_batch","email_sent","email_received","sms_sent","api_request","gb_stored","gb_transferred","seat","message_sent","contact","request_write","request_read","row_written","credit","vcpu_hour","gb_hour","event","host","record","sms_carrier_fee","sso_connection","mru","mau","tx_pct","tx_count","gpu_hour","compute_hour","function_invocation","build_minute","search_request","log_gb_ingested","row_read","custom_domain"]},"price_usd":{"type":"number","minimum":0},"per_quantity":{"type":"number","exclusiveMinimum":0},"from_quantity":{"default":0,"type":"number","minimum":0},"to_quantity":{"default":null,"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"requires_opt_in":{"default":false,"type":"boolean"},"notes":{"default":null,"type":["string","null"]}},"required":["id","tier_id","metric","price_usd","per_quantity","from_quantity","to_quantity","requires_opt_in","notes"],"additionalProperties":false},"RateLimit":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/RateLimit","type":"object","properties":{"id":{"type":"string"},"tier_id":{"type":"string"},"metric":{"type":"string","enum":["token_input","token_output","token_cached_input","token_cache_write","token_input_batch","token_output_batch","email_sent","email_received","sms_sent","api_request","gb_stored","gb_transferred","seat","message_sent","contact","request_write","request_read","row_written","credit","vcpu_hour","gb_hour","event","host","record","sms_carrier_fee","sso_connection","mru","mau","tx_pct","tx_count","gpu_hour","compute_hour","function_invocation","build_minute","search_request","log_gb_ingested","row_read","custom_domain"]},"limit":{"type":"number","exclusiveMinimum":0},"window":{"type":"string","enum":["second","minute","hour","day"]},"window_size":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scope":{"type":"string","enum":["key","org","ip","project"]},"source":{"type":"string","enum":["documented","probed","reported"]}},"required":["id","tier_id","metric","limit","window","window_size","scope","source"],"additionalProperties":false},"Feature":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/Feature","type":"object","properties":{"id":{"type":"string"},"tier_id":{"type":"string"},"key":{"type":"string","enum":["sso","dedicated_ip","uptime_sla","support_slack","support_ticket","webhook_endpoints","data_retention_days","audit_logs","soc2","custom_domains_addon","merchant_of_record"]},"value":{"type":["boolean","string"]}},"required":["id","tier_id","key","value"],"additionalProperties":false},"TierRecord":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/TierRecord","type":"object","properties":{"id":{"type":"string"},"service_id":{"type":"string"},"name":{"type":"string"},"base_price_usd":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"billing_period":{"type":"string","enum":["month","year","one_time","usage"]},"seat_model":{"type":"string","enum":["flat","per_seat"]},"contact_sales":{"default":false,"type":"boolean"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"kind":{"default":"plan","type":"string","enum":["plan","model","instance"]},"product":{"default":null,"type":["string","null"]},"gpu_model":{"default":null,"type":["string","null"]},"gpu_count":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"vram_gb":{"default":null,"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"context_tokens":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"vcpu_count":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"ram_gb":{"default":null,"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"disk_gb":{"default":null,"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"transfer_gb":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"cpu_kind":{"default":null,"anyOf":[{"type":"string","enum":["shared","dedicated","high-performance"]},{"type":"null"}]},"hourly_price_usd":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"allowances":{"type":"array","items":{"$ref":"#/components/schemas/Allowance"}},"rates":{"type":"array","items":{"$ref":"#/components/schemas/Rate"}},"rate_limits":{"type":"array","items":{"$ref":"#/components/schemas/RateLimit"}},"features":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}},"addons":{"default":[],"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tier_id":{"type":"string"},"key":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"label":{"type":"string"},"price_usd":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"billing_period":{"type":"string","enum":["month","year","one_time","usage"]},"notes":{"default":null,"type":["string","null"]}},"required":["id","tier_id","key","label","price_usd","billing_period","notes"],"additionalProperties":false}}},"required":["id","service_id","name","base_price_usd","billing_period","seat_model","contact_sales","position","kind","product","gpu_model","gpu_count","vram_gb","context_tokens","vcpu_count","ram_gb","disk_gb","transfer_gb","cpu_kind","hourly_price_usd","allowances","rates","rate_limits","features","addons"],"additionalProperties":false},"ServiceRecord":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ServiceRecord","type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*$"},"name":{"type":"string"},"category":{"$ref":"#/components/schemas/Category"},"website":{"type":"string","format":"uri"},"aliases":{"default":[],"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["draft","published","stale","retired"]},"verified_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"auto_publish_level":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"tiers":{"type":"array","items":{"$ref":"#/components/schemas/TierRecord"}},"conditional_fees":{"default":[],"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"service_id":{"type":"string"},"tier_id":{"default":null,"type":["string","null"]},"kind":{"type":"string","enum":["international_card","currency_conversion","dispute","refund","payout","instant_payout","subscription_billing","tax_service","amex","local_payment_method","other"]},"condition":{"type":"string"},"method":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-z0-9_]+$"},{"type":"null"}]},"buyer_region":{"default":null,"anyOf":[{"type":"string","pattern":"^(?:[A-Z]{2}|SEA|LATAM|ROW)$"},{"type":"null"}]},"seller_region":{"default":null,"anyOf":[{"type":"string","pattern":"^(?:[A-Z]{2}|SEA|LATAM|ROW)$"},{"type":"null"}]},"pct":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"fixed_usd":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"currency":{"default":"USD","type":"string","pattern":"^[A-Z]{3}$"},"is_surcharge":{"default":true,"type":"boolean"},"fee_returned_on_refund":{"default":null,"type":["boolean","null"]},"notes":{"default":null,"type":["string","null"]}},"required":["id","service_id","tier_id","kind","condition","method","buyer_region","seller_region","pct","fixed_usd","currency","is_surcharge","fee_returned_on_refund","notes"],"additionalProperties":false}},"payments":{"default":null,"anyOf":[{"type":"object","properties":{"service_id":{"type":"string"},"payments_model":{"default":null,"anyOf":[{"type":"string","enum":["gateway","merchant_of_record"]},{"type":"null"}]},"pricing_model":{"default":null,"anyOf":[{"type":"string","enum":["flat","interchange_plus","custom"]},{"type":"null"}]},"tax_handled":{"default":null,"type":["boolean","null"]},"payout_days":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"payout_note":{"default":null,"type":["string","null"]},"payout_pct":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"payout_fixed_usd":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"min_payout_usd":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"supported_seller_countries":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["service_id","payments_model","pricing_model","tax_handled","payout_days","payout_note","payout_pct","payout_fixed_usd","min_payout_usd","supported_seller_countries"],"additionalProperties":false},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"kind":{"type":"string","enum":["pricing","limits","changelog","sdk","openapi"]},"last_snapshot_id":{"type":["string","null"]},"last_captured_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["url","kind","last_snapshot_id","last_captured_at"],"additionalProperties":false}}},"required":["id","name","category","website","aliases","status","verified_at","auto_publish_level","tiers","conditional_fees","payments","sources"],"additionalProperties":false},"ServiceSummary":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ServiceSummary","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"$ref":"#/components/schemas/Category"},"status":{"type":"string","enum":["draft","published","stale","retired"]},"has_free_tier":{"type":"boolean"},"cheapest_paid_tier":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"monthly_usd":{"type":"number"}},"required":["name","monthly_usd"],"additionalProperties":false},{"type":"null"}]},"verified_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"freshness":{"$ref":"#/components/schemas/Freshness"},"payments_model":{"default":null,"anyOf":[{"type":"string","enum":["gateway","merchant_of_record"]},{"type":"null"}]},"tax_handled":{"default":null,"type":["boolean","null"]},"pricing_model":{"default":null,"anyOf":[{"type":"string","enum":["flat","interchange_plus","custom"]},{"type":"null"}]},"intl_surcharge_pct":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"dispute_fee_usd":{"default":null,"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["id","name","category","status","has_free_tier","cheapest_paid_tier","verified_at","freshness","payments_model","tax_handled","pricing_model","intl_surcharge_pct","dispute_fee_usd"],"additionalProperties":false},"ChangeEvent":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ChangeEvent","type":"object","properties":{"id":{"type":"string"},"service_id":{"type":"string"},"table":{"type":"string"},"row_id":{"type":"string"},"field":{"type":"string"},"before":{"type":["string","null"]},"after":{"type":["string","null"]},"detected_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source_snapshot_id":{"type":"string"},"kind":{"type":"string","enum":["price","limit","tier_added","tier_removed","feature","correction","fee_added","fee_removed","fee_changed"]},"reviewer":{"default":null,"type":["string","null"]},"title":{"default":null,"type":["string","null"]}},"required":["id","service_id","table","row_id","field","before","after","detected_at","source_snapshot_id","kind","reviewer","title"],"additionalProperties":false},"CostLine":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/CostLine","type":"object","properties":{"metric":{"type":"string"},"usage":{"type":"number"},"included":{"type":"number"},"billable":{"type":"number"},"cost_usd":{"type":["number","null"]},"status":{"type":"string","enum":["included","billed","exceeds_limit","unpriced"]},"requires_opt_in":{"default":false,"type":"boolean"}},"required":["metric","usage","included","billable","cost_usd","status","requires_opt_in"],"additionalProperties":false},"CostResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/CostResult","type":"object","properties":{"tier_id":{"type":"string"},"total_usd":{"type":["number","null"]},"base_monthly_usd":{"type":["number","null"]},"lines":{"type":"array","items":{"$ref":"#/components/schemas/CostLine"}},"complete":{"type":"boolean"},"feasible":{"type":"boolean"},"first_limit_hit":{"anyOf":[{"type":"object","properties":{"metric":{"type":"string"},"limit":{"type":"number"}},"required":["metric","limit"],"additionalProperties":false},{"type":"null"}]}},"required":["tier_id","total_usd","base_monthly_usd","lines","complete","feasible","first_limit_hit"],"additionalProperties":false},"ServiceListResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ServiceListResponse","type":"object","properties":{"services":{"type":"array","items":{"$ref":"#/components/schemas/ServiceSummary"}},"next_cursor":{"type":["string","null"]}},"required":["services","next_cursor"],"additionalProperties":false},"ServiceResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ServiceResponse","type":"object","properties":{"service":{"$ref":"#/components/schemas/ServiceRecord"},"freshness":{"$ref":"#/components/schemas/Freshness"},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["service","freshness","provenance"],"additionalProperties":false},"SnapshotResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/SnapshotResponse","type":"object","properties":{"id":{"type":"string"},"source_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"captured_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"markdown_lines":{"type":"array","items":{"type":"string"}}},"required":["id","source_url","captured_at","markdown_lines"],"additionalProperties":false},"SnapshotPush":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/SnapshotPush","type":"object","properties":{"schema_version":{"type":"string","const":"1.8.0"},"snapshots":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"source_url":{"type":"string","format":"uri"},"captured_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"markdown":{"type":"string"}},"required":["id","source_url","captured_at","markdown"],"additionalProperties":false}}},"required":["schema_version","snapshots"],"additionalProperties":false},"SnapshotPushResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/SnapshotPushResponse","type":"object","properties":{"stored":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ids":{"type":"array","items":{"type":"string"}}},"required":["stored","ids"],"additionalProperties":false},"ChangesResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ChangesResponse","type":"object","properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/ChangeEvent"}},"next_cursor":{"type":["string","null"]}},"required":["changes","next_cursor"],"additionalProperties":false},"EstimateRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/EstimateRequest","minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"tier":{"type":"string"},"usage":{"$ref":"#/components/schemas/Usage"}},"required":["service","usage"],"additionalProperties":false}},"EstimateResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/EstimateResponse","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"tier_id":{"type":["string","null"]},"cost":{"anyOf":[{"$ref":"#/components/schemas/CostResult"},{"type":"null"}]}},"required":["service","tier_id","cost"],"additionalProperties":false}},"total_usd":{"type":["number","null"]},"freshness":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"sentence":{"type":"string"}},"required":["service","sentence"],"additionalProperties":false}}},"required":["items","total_usd","freshness"],"additionalProperties":false},"CompareResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/CompareResponse","type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"$ref":"#/components/schemas/ServiceRecord"},"cost":{"type":"array","items":{"$ref":"#/components/schemas/CostResult"}},"cheapest_tier_id":{"type":["string","null"]},"freshness":{"$ref":"#/components/schemas/Freshness"}},"required":["service","cost","cheapest_tier_id","freshness"],"additionalProperties":false}},"usage":{"$ref":"#/components/schemas/Usage"}},"required":["services","usage"],"additionalProperties":false},"ServersResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ServersResponse","type":"object","properties":{"query":{"type":"object","properties":{"min_vcpu":{"type":["number","null"]},"min_ram_gb":{"type":["number","null"]},"min_disk_gb":{"type":["number","null"]},"min_transfer_gb":{"type":["number","null"]},"cpu_kind":{"anyOf":[{"type":"string","enum":["shared","dedicated","high-performance"]},{"type":"null"}]},"max_monthly_usd":{"type":["number","null"]},"provider":{"type":["string","null"]},"limit":{"type":"number"}},"required":["min_vcpu","min_ram_gb","min_disk_gb","min_transfer_gb","cpu_kind","max_monthly_usd","provider","limit"],"additionalProperties":false},"total_matches":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"servers":{"type":"array","items":{"type":"object","properties":{"service_id":{"type":"string"},"service_name":{"type":"string"},"tier_id":{"type":"string"},"tier_name":{"type":"string"},"product":{"type":["string","null"]},"vcpu_count":{"type":"number"},"ram_gb":{"type":"number"},"disk_gb":{"type":["number","null"]},"transfer_gb":{"type":["number","null"]},"cpu_kind":{"anyOf":[{"type":"string","enum":["shared","dedicated","high-performance"]},{"type":"null"}]},"monthly_usd":{"type":["number","null"]},"hourly_usd":{"type":["number","null"]},"verified_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"source_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["service_id","service_name","tier_id","tier_name","product","vcpu_count","ram_gb","disk_gb","transfer_gb","cpu_kind","monthly_usd","hourly_usd","verified_at","source_url"],"additionalProperties":false}},"notes":{"type":"array","items":{"type":"string"}}},"required":["query","total_matches","servers","notes"],"additionalProperties":false},"ReportRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ReportRequest","type":"object","properties":{"service_id":{"type":"string"},"field":{"type":"string"},"suggested_value":{"type":"string"},"note":{"type":"string","maxLength":2000},"source_url":{"type":"string","format":"uri"},"handle":{"type":"string","maxLength":40},"turnstile_token":{"type":"string"}},"required":["service_id","field","suggested_value","note","turnstile_token"],"additionalProperties":false},"ReportAccepted":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ReportAccepted","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","const":"queued"}},"required":["id","status"],"additionalProperties":false},"SearchResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/SearchResponse","type":"object","properties":{"matches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"$ref":"#/components/schemas/Category"},"score":{"type":"number"}},"required":["id","name","category","score"],"additionalProperties":false}}},"required":["matches"],"additionalProperties":false},"SitemapData":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/SitemapData","type":"object","properties":{"generated_at":{"type":"string"},"categories":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"category":{"$ref":"#/components/schemas/Category"},"lastmod":{"type":["string","null"]}},"required":["id","category","lastmod"],"additionalProperties":false}}},"required":["generated_at","categories","services"],"additionalProperties":false},"IngestBatch":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/IngestBatch","type":"object","properties":{"schema_version":{"type":"string","const":"1.8.0"},"batch_id":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"services":{"type":"array","items":{"$ref":"#/components/schemas/ServiceRecord"}},"change_events":{"type":"array","items":{"$ref":"#/components/schemas/ChangeEvent"}},"provenance":{"type":"array","items":{"$ref":"#/components/schemas/FieldProvenance"}}},"required":["schema_version","batch_id","created_at","services","change_events","provenance"],"additionalProperties":false},"IngestResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/IngestResponse","type":"object","properties":{"batch_id":{"type":"string"},"accepted":{"type":"boolean","const":true},"services_upserted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"change_events_inserted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kv_invalidated":{"type":"array","items":{"type":"string"}}},"required":["batch_id","accepted","services_upserted","change_events_inserted","kv_invalidated"],"additionalProperties":false},"EditRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/EditRequest","type":"object","properties":{"reviewer":{"type":"string","minLength":1},"quote":{"type":"string","minLength":1,"maxLength":300},"snapshot_id":{"default":"manual","type":"string"},"edits":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"table":{"type":"string","enum":["services","tiers","allowances","rates","rate_limits","features","conditional_fees","service_payments"]},"row_id":{"type":"string"},"field":{"type":"string"},"value":{}},"required":["table","row_id","field","value"],"additionalProperties":false}}},"required":["reviewer","quote","snapshot_id","edits"],"additionalProperties":false},"ReviewRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/ReviewRequest","type":"object","properties":{"decision":{"type":"string","enum":["approve","correct","reject"]},"reviewer":{"type":"string","minLength":1},"reason":{"type":"string","maxLength":2000},"corrections":{"type":"object","properties":{"quote":{"type":"string","minLength":1,"maxLength":300},"snapshot_id":{"default":"manual","type":"string"},"edits":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"table":{"type":"string","enum":["services","tiers","allowances","rates","rate_limits","features","conditional_fees","service_payments"]},"row_id":{"type":"string"},"field":{"type":"string"},"value":{}},"required":["table","row_id","field","value"],"additionalProperties":false}}},"required":["quote","snapshot_id","edits"],"additionalProperties":false}},"required":["decision","reviewer"],"additionalProperties":false},"RunRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/RunRequest","type":"object","properties":{"id":{"type":"string"},"started_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"captured":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"unchanged":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"extracted":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"agreed":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"queued":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"published":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["started_at","captured","unchanged","extracted","agreed","queued","published","failed"],"additionalProperties":false},"IssuedKey":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"#/components/schemas/IssuedKey","type":"object","properties":{"key":{"type":"string"},"id":{"type":"string"},"label":{"type":"string"},"created_at":{"type":"string"},"revoked":{"type":"boolean"}},"required":["key","id","label","created_at","revoked"],"additionalProperties":false}},"securitySchemes":{"adminBearer":{"type":"http","scheme":"bearer"},"ingestSignature":{"type":"apiKey","in":"header","name":"x-overage-signature"},"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"}}}}