{"openapi":"3.1.0","info":{"title":"LaunchStall public API","version":"1.0.0","description":"Read-only JSON API for LaunchStall launches. No key needed. Weekly editions are numbered from Week 1 (Monday 2026-10-05, UTC) and never reset. Write actions (upvote, comment, launch) require a signed-in session — see https://launchstall.com/auth.md."},"servers":[{"url":"https://launchstall.com"}],"externalDocs":{"url":"https://launchstall.com/docs/api"},"paths":{"/api/weeks/current":{"get":{"summary":"The live weekly edition: week info, every launch, the top 3 and the sponsored slot.","operationId":"weeks_current","parameters":[{"name":"sort","in":"query","required":false,"description":"Ordering of launches (default featured).","schema":{"type":"string","enum":["featured","top","new","trending"]}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/weeks/{week}":{"get":{"summary":"One edition by number. Week 1 started on 2026-10-05; numbering never resets.","operationId":"weeks_week","parameters":[{"name":"week","in":"path","required":true,"description":"Edition number (1, 2, 3 …).","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Ordering of launches (default featured).","schema":{"type":"string","enum":["featured","top","new","trending"]}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/weeks":{"get":{"summary":"Archive: every edition so far (newest first) with its top product, plus the next four weeks.","operationId":"weeks","parameters":[],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/products":{"get":{"summary":"Launched products across all weeks.","operationId":"products","parameters":[{"name":"sort","in":"query","required":false,"description":"Ordering (default trending).","schema":{"type":"string","enum":["featured","top","new","trending"]}},{"name":"category","in":"query","required":false,"description":"Category slug filter.","schema":{"type":"string"}},{"name":"maker","in":"query","required":false,"description":"Maker username filter.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1–60.","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"0–10000.","schema":{"type":"integer"}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/products/{slug}":{"get":{"summary":"Full product details, comments, changelog and similar products.","operationId":"products_slug","parameters":[{"name":"slug","in":"path","required":true,"description":"Product slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/search":{"get":{"summary":"Full-text product search.","operationId":"search","parameters":[{"name":"q","in":"query","required":true,"description":"Search terms (max 100 characters).","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/categories":{"get":{"summary":"All categories with product counts.","operationId":"categories","parameters":[],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/categories/{slug}":{"get":{"summary":"One category and its products.","operationId":"categories_slug","parameters":[{"name":"slug","in":"path","required":true,"description":"Category slug.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Ordering.","schema":{"type":"string","enum":["featured","top","new","trending"]}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/collections":{"get":{"summary":"Curated collections.","operationId":"collections","parameters":[],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/makers":{"get":{"summary":"Makers with launched products.","operationId":"makers","parameters":[],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/users/{username}":{"get":{"summary":"A maker’s public profile and products.","operationId":"users_username","parameters":[{"name":"username","in":"path","required":true,"description":"Username.","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}},"/api/blog":{"get":{"summary":"Published articles.","operationId":"blog","parameters":[],"responses":{"200":{"description":"JSON response.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found."},"429":{"description":"Rate limited."}}}}}}