{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"Oribisoft Public Discovery API","version":"1.0.0","description":"Read-only, anonymous access to existing public data. Maker claims are unverified. Current standings are provisional; only stored finalized ranks establish weekly awards. No mutation or authentication endpoints. No guarantees of discovery or placement."},"servers":[{"url":"https://www.oribisoft.com/"}],"security":[],"paths":{"/v1":{"get":{"operationId":"apiIndex","summary":"Public API index","security":[],"parameters":[],"description":"Anonymous, read-only public data. Unknown/repeated parameters return 400. HTTP Cache-Control: no-store; public server reads expire within 15 seconds. No session cookies. Best-effort per-instance traffic limits: 120/minute per client bucket, 600/minute globally. Outside Vercel all clients share a bucket. HEAD returns the same headers with no body.","responses":{"200":{"description":"Public response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Index"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid or unsupported query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Only GET and HEAD are supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-instance traffic budget exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}},"503":{"description":"Public data temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/v1/products":{"get":{"operationId":"listProducts","summary":"Public Live products ordered by slug","security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"description":"Numbered page; empty pages return an empty list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":"Maximum records per response."}],"description":"Anonymous, read-only public data. Unknown/repeated parameters return 400. HTTP Cache-Control: no-store; public server reads expire within 15 seconds. No session cookies. Best-effort per-instance traffic limits: 120/minute per client bucket, 600/minute globally. Outside Vercel all clients share a bucket. HEAD returns the same headers with no body.","responses":{"200":{"description":"Public response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid or unsupported query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Only GET and HEAD are supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-instance traffic budget exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}},"503":{"description":"Public data temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/v1/products/{slug}":{"get":{"operationId":"getProduct","summary":"One public Live product","security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,199}$"},"description":"Canonical product slug."}],"description":"Anonymous, read-only public data. Unknown/repeated parameters return 400. HTTP Cache-Control: no-store; public server reads expire within 15 seconds. No session cookies. Best-effort per-instance traffic limits: 120/minute per client bucket, 600/minute globally. Outside Vercel all clients share a bucket. HEAD returns the same headers with no body.","responses":{"200":{"description":"Public response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid or unsupported query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Only GET and HEAD are supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-instance traffic budget exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}},"503":{"description":"Public data temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/v1/search":{"get":{"operationId":"searchProducts","summary":"Search public product names and taglines","security":[],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":100,"pattern":"^[\\p{L}\\p{N} -]+$"},"description":"Case-insensitive substring after trimming. Letters, numbers, spaces and hyphens only; filter punctuation and wildcards are rejected."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"description":"Numbered page; empty pages return an empty list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":"Maximum records per response."}],"description":"Anonymous, read-only public data. Unknown/repeated parameters return 400. HTTP Cache-Control: no-store; public server reads expire within 15 seconds. No session cookies. Best-effort per-instance traffic limits: 120/minute per client bucket, 600/minute globally. Outside Vercel all clients share a bucket. HEAD returns the same headers with no body.","responses":{"200":{"description":"Public response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid or unsupported query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Only GET and HEAD are supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-instance traffic budget exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}},"503":{"description":"Public data temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/v1/leaderboard":{"get":{"operationId":"weeklyLeaderboard","summary":"Weekly standings with recorded final ranks","security":[],"parameters":[{"name":"week","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Monday UTC start YYYY-MM-DD; defaults to this week. Future/non-Monday dates return 400. Missing past editions return 404. Hidden entries excluded; finalized rank gaps preserved."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"description":"Numbered page; empty pages return an empty list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":"Maximum records per response."}],"description":"Anonymous, read-only public data. Unknown/repeated parameters return 400. HTTP Cache-Control: no-store; public server reads expire within 15 seconds. No session cookies. Best-effort per-instance traffic limits: 120/minute per client bucket, 600/minute globally. Outside Vercel all clients share a bucket. HEAD returns the same headers with no body.","responses":{"200":{"description":"Public response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid or unsupported query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Only GET and HEAD are supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-instance traffic budget exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}},"503":{"description":"Public data temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/ai-snapshot":{"get":{"operationId":"aiSnapshot","summary":"Bounded public discovery summary","security":[],"parameters":[],"description":"Anonymous, read-only public data. Unknown/repeated parameters return 400. HTTP Cache-Control: no-store; public server reads expire within 15 seconds. No session cookies. Best-effort per-instance traffic limits: 120/minute per client bucket, 600/minute globally. Outside Vercel all clients share a bucket. HEAD returns the same headers with no body.","responses":{"200":{"description":"Public response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Snapshot"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid or unsupported query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Public resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Only GET and HEAD are supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-instance traffic budget exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}},"503":{"description":"Public data temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/_catalog":{"get":{"operationId":"markdownCatalog","summary":"Complete supported Markdown endpoint catalog","security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","const":1,"default":1},"description":"Only page 1 is supported."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/products":{"get":{"operationId":"markdownproducts","summary":"Paginated public products","security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/products/{slug}":{"get":{"operationId":"markdownDetailproducts","summary":"Public products detail","security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Existing eligible public identifier."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","const":1,"default":1},"description":"Only page 1 is supported."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/makers":{"get":{"operationId":"markdownmakers","summary":"Paginated public makers","security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/makers/{username}":{"get":{"operationId":"markdownDetailmakers","summary":"Public makers detail","security":[],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string"},"description":"Existing eligible public identifier."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/categories":{"get":{"operationId":"markdowncategories","summary":"Paginated public categories","security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/categories/{slug}":{"get":{"operationId":"markdownDetailcategories","summary":"Public categories detail","security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Existing eligible public identifier."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/weeks":{"get":{"operationId":"markdownweeks","summary":"Paginated public weeks","security":[],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/weeks/{week}":{"get":{"operationId":"markdownDetailweeks","summary":"Public weeks detail","security":[],"parameters":[{"name":"week","in":"path","required":true,"schema":{"type":"string"},"description":"Current/past Monday UTC date YYYY-MM-DD."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":999999,"default":1},"description":"20 records per page. Out-of-range pages return 404."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/api/md/pages/{page}":{"get":{"operationId":"markdownPlatformPage","summary":"Markdown for an existing public platform page","security":[],"parameters":[{"name":"page","in":"path","required":true,"schema":{"type":"string","enum":["home","products","categories","weeks","about","pricing","faq","contact","guidelines","privacy","terms"]},"description":"Public page name."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","const":1,"default":1},"description":"Only page 1 is supported."}],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/markdown":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/llms.txt":{"get":{"operationId":"llmsIndex","summary":"Public Oribisoft AI discovery document","security":[],"parameters":[],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/plain":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/llms-full.txt":{"get":{"operationId":"llmsFull","summary":"Public Oribisoft AI discovery document","security":[],"parameters":[],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/plain":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}},"/ai.txt":{"get":{"operationId":"aiGuidance","summary":"Public Oribisoft AI discovery document","security":[],"parameters":[],"description":"Anonymous GET/HEAD text. Cache-Control: no-store. Public membership <= 285 seconds; detail data <= 15 seconds. Maker content is quoted unverified data. Invalid paths or parameters return text 404.","responses":{"200":{"description":"Public document.","content":{"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"Public document not found.","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"Discovery temporarily unavailable.","content":{"text/plain":{"schema":{"type":"string"}}},"headers":{"Retry-After":{"description":"Retry delay in seconds.","schema":{"type":"string","const":"60"}}}}}}}},"components":{"schemas":{"Product":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"website_url":{"type":"string"},"category":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string","format":"uri"}},"required":["slug","name","url"],"additionalProperties":false},{"type":"null"}]},"maker":{"type":"object","properties":{"name":{"type":"string"},"username":{"type":["string","null"]},"url":{"type":["string","null"],"format":"uri"}},"required":["name","username","url"],"additionalProperties":false},"published_at":{"type":["string","null"],"format":"date-time"},"launch_week":{"type":["string","null"],"format":"date"},"lifetime_votes":{"type":"integer","minimum":0},"weekly_votes":{"type":"integer","minimum":0},"final_rank":{"type":["integer","null"],"minimum":1},"award":{"type":["string","null"]},"finalized_at":{"type":["string","null"],"format":"date-time"}},"required":["slug","name","tagline","description","url","website_url","category","maker","published_at","launch_week","lifetime_votes","weekly_votes","final_rank","award","finalized_at"],"additionalProperties":false},"Leaderboard":{"type":"object","properties":{"week":{"type":"string","format":"date"},"end_date":{"type":"string","format":"date"},"url":{"type":"string","format":"uri"},"state":{"type":"string","enum":["provisional","awaiting_finalization","finalized"]},"finalized_at":{"type":["string","null"],"format":"date-time"},"total":{"type":"integer","minimum":0},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":["integer","null"],"minimum":1},"product":{"$ref":"#/components/schemas/Product"}},"required":["position","product"],"additionalProperties":false},"maxItems":50}},"required":["week","end_date","url","state","finalized_at","total","items"],"additionalProperties":false},"Error":{"type":"object","properties":{"data":{"type":"null"},"meta":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"}},"required":["generated_at"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_query","invalid_week","not_found","rate_limited","unavailable","method_not_allowed"]},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["data","meta","error"],"additionalProperties":false},"Index":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string","const":"1"},"read_only":{"type":"boolean","const":true},"endpoints":{"type":"array","items":{"type":"string","format":"uri"}},"resources":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}},"required":["name","version","read_only","endpoints","resources"],"additionalProperties":false},"meta":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"}},"required":["generated_at"],"additionalProperties":false},"error":{"type":"null"}},"required":["data","meta","error"],"additionalProperties":false},"Products":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"},"maxItems":50},"meta":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":100},"limit":{"type":"integer","minimum":1,"maximum":50},"total":{"type":"integer","minimum":0},"total_pages":{"type":"integer","minimum":0}},"required":["page","limit","total","total_pages"],"additionalProperties":false}},"required":["generated_at","pagination"],"additionalProperties":false},"error":{"type":"null"}},"required":["data","meta","error"],"additionalProperties":false},"ProductResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Product"},"meta":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"}},"required":["generated_at"],"additionalProperties":false},"error":{"type":"null"}},"required":["data","meta","error"],"additionalProperties":false},"LeaderboardResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Leaderboard"},"meta":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":100},"limit":{"type":"integer","minimum":1,"maximum":50},"total":{"type":"integer","minimum":0},"total_pages":{"type":"integer","minimum":0}},"required":["page","limit","total","total_pages"],"additionalProperties":false}},"required":["generated_at","pagination"],"additionalProperties":false},"error":{"type":"null"}},"required":["data","meta","error"],"additionalProperties":false},"Snapshot":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","const":"Oribisoft"},"tagline":{"type":"string","const":"Launch Once. Stay Discoverable."},"current_launch_week":{"type":"object","properties":{"iso_week":{"type":"string","pattern":"^\\d{4}-W\\d{2}$"},"start_date":{"type":"string","format":"date"}},"required":["iso_week","start_date"],"additionalProperties":false},"public_live_products":{"type":"integer","minimum":0},"leaderboard":{"$ref":"#/components/schemas/Leaderboard"},"recently_launched":{"type":"array","items":{"$ref":"#/components/schemas/Product"},"maxItems":10},"resources":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}},"required":["name","tagline","current_launch_week","public_live_products","leaderboard","recently_launched","resources"],"additionalProperties":false},"meta":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"}},"required":["generated_at"],"additionalProperties":false},"error":{"type":"null"}},"required":["data","meta","error"],"additionalProperties":false}}}}