{"info":{"title":"replacemrr API","version":"1.0.0"},"servers":[{"url":"/api/v1"}],"openapi":"3.1.1","paths":{"/stories":{"get":{"operationId":"stories.list","summary":"List published stories","parameters":[{"name":"vendor","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"stack","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"stage","in":"query","schema":{"enum":["replaced","reversed"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"band","in":"query","schema":{"enum":["under_100","100_1k","1k_5k","5k_plus"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"sort","in":"query","schema":{"enum":["rank","net_saved","recent"],"type":"string","default":"rank"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"]}}}}}}},"/stories/{slug}":{"get":{"operationId":"stories.get","summary":"Read one published story","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"owner":{"anyOf":[{"type":"object","properties":{"displayName":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["displayName","handle"]},{"type":"null"}]},"costs":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["old_bill","running"],"type":"string"},"label":{"type":"string"},"amountLow":{"type":"number"},"amountHigh":{"type":"number"},"period":{"enum":["mo","yr"],"type":"string"},"stackTag":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","label","amountLow","amountHigh","period","stackTag"]}},"stack":{"type":"array","items":{"type":"string"}},"timeline":{"type":"array","items":{"type":"object","properties":{"fromStage":{"anyOf":[{"enum":["replaced","reversed"],"type":"string"},{"type":"null"}]},"toStage":{"enum":["replaced","reversed"],"type":"string"},"note":{"anyOf":[{"type":"string"},{"type":"null"}]},"at":{"type":"string"}},"required":["fromStage","toStage","note","at"]}},"proofs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"type":{"enum":["domain","workspace","repo"],"type":"string"},"target":{"type":"string"},"status":{"enum":["pending","passed","failed"],"type":"string"},"checkedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","target","status","checkedAt","detail"]}},"buildTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"buildCostCents":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt","sourceUrl","owner","costs","stack","timeline","proofs","buildTokens","buildCostCents"]}}}}}}},"/reversals":{"get":{"operationId":"stories.reversals","summary":"Teams that went back to the vendor","parameters":[{"name":"cursor","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"]}}}}}}},"/stories/{slug}/stage":{"post":{"operationId":"stories.proposeStage","summary":"Propose a stage change","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stage":{"enum":["replaced","reversed"],"type":"string"},"note":{"type":"string","maxLength":400}},"required":["stage"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"number"},"confirmUrl":{"type":"string"}},"required":["eventId","confirmUrl"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/stories/{slug}/claim":{"post":{"operationId":"stories.claim","summary":"Claim an unclaimed story","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"proof":{"anyOf":[{"type":"object","properties":{"type":{"const":"domain"}},"required":["type"]},{"type":"object","properties":{"type":{"const":"workspace"}},"required":["type"]},{"type":"object","properties":{"type":{"const":"repo"},"url":{"type":"string","format":"uri"}},"required":["type","url"]}]}},"required":["proof"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"claimId":{"type":"number"},"proof":{"type":"object","properties":{"id":{"type":"number"},"type":{"enum":["domain","workspace","repo"],"type":"string"},"target":{"type":"string"},"status":{"enum":["pending","passed","failed"],"type":"string"},"checkedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","target","status","checkedAt","detail","instructions"]}},"required":["claimId","proof"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/vendors":{"get":{"operationId":"vendors.list","summary":"List vendors with published stories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"storyCount":{"type":"number"},"reversalCount":{"type":"number"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"}},"required":["slug","name","domain","category","storyCount","reversalCount","netSavedLow","netSavedHigh"]}}},"required":["items"]}}}}}}},"/vendors/{slug}":{"get":{"operationId":"vendors.get","summary":"Read a vendor and its stories","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"storyCount":{"type":"number"},"reversalCount":{"type":"number"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"stories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt"]}},"reversals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt"]}}},"required":["slug","name","domain","category","storyCount","reversalCount","netSavedLow","netSavedHigh","stories","reversals"]}}}}}}},"/stacks/{tag}":{"get":{"operationId":"stacks.get","summary":"Stories built with a stack tag","parameters":[{"name":"tag","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":40}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tag":{"type":"string"},"kind":{"type":"string"},"storyCount":{"type":"number"},"stories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt"]}}},"required":["tag","kind","storyCount","stories"]}}}}}}},"/boards/{name}":{"get":{"operationId":"boards.get","summary":"Read a ranked board","parameters":[{"name":"name","in":"path","required":true,"schema":{"enum":["most-replaced","most-replaced-30d","top-stacks","longest-running"],"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"vendors":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"storyCount":{"type":"number"},"reversalCount":{"type":"number"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"}},"required":["slug","name","domain","category","storyCount","reversalCount","netSavedLow","netSavedHigh"]}},"vendorLosses":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"teams":{"type":"number"},"oldBillLow":{"type":"number"},"oldBillHigh":{"type":"number"}},"required":["slug","name","teams","oldBillLow","oldBillHigh"]}},"stacks":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string"},"kind":{"type":"string"},"storyCount":{"type":"number"}},"required":["tag","kind","storyCount"]}},"stories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt"]}}},"required":["name","vendors","vendorLosses","stacks","stories"]}}}}}}},"/drafts":{"get":{"operationId":"drafts.list","summary":"My stories and their review state","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"vendorName":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"reviewNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","vendorName","stage","status","reviewNote","updatedAt"]}},"pendingStages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"fromStage":{"anyOf":[{"enum":["replaced","reversed"],"type":"string"},{"type":"null"}]},"toStage":{"enum":["replaced","reversed"],"type":"string"},"note":{"anyOf":[{"type":"string"},{"type":"null"}]},"at":{"type":"string"}},"required":["id","slug","companyName","fromStage","toStage","note","at"]}}},"required":["items","pendingStages"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"drafts.create","summary":"Create a draft","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"companyName":{"type":"string","minLength":1,"maxLength":80},"companyDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"},"vendorName":{"type":"string","minLength":1,"maxLength":80},"vendorDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"},"replacementName":{"type":"string","minLength":1,"maxLength":80},"summary":{"type":"string","minLength":20,"maxLength":800},"wentLiveOn":{"type":"string","format":"date"},"sourceUrl":{"type":"string","format":"uri"},"costs":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"kind":{"enum":["old_bill","running"],"type":"string"},"label":{"type":"string","minLength":1,"maxLength":60},"amountLow":{"type":"integer","minimum":0,"maximum":9007199254740991},"amountHigh":{"type":"integer","minimum":0,"maximum":9007199254740991},"period":{"enum":["mo","yr"],"type":"string"},"stackTag":{"type":"string","maxLength":40}},"required":["kind","label","amountLow","amountHigh","period"]}},"stack":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":40},"default":[]},"buildTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"buildCostCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"unclaimed":{"type":"boolean","default":false},"turnstileToken":{"type":"string"}},"required":["companyName","companyDomain","vendorName","replacementName","summary","wentLiveOn","costs"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"confirmUrl":{"type":"string"}},"required":["id","slug","confirmUrl"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/drafts/{id}":{"get":{"operationId":"drafts.get","summary":"Read one of my stories, editable fields included","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"story":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"vendorName":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"reviewNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"}},"required":["id","slug","companyName","vendorName","stage","status","reviewNote","updatedAt"]},"input":{"type":"object","properties":{"companyName":{"type":"string","minLength":1,"maxLength":80},"companyDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"},"vendorName":{"type":"string","minLength":1,"maxLength":80},"vendorDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"},"replacementName":{"type":"string","minLength":1,"maxLength":80},"summary":{"type":"string","minLength":20,"maxLength":800},"wentLiveOn":{"type":"string","format":"date"},"sourceUrl":{"type":"string","format":"uri"},"costs":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"kind":{"enum":["old_bill","running"],"type":"string"},"label":{"type":"string","minLength":1,"maxLength":60},"amountLow":{"type":"integer","minimum":0,"maximum":9007199254740991},"amountHigh":{"type":"integer","minimum":0,"maximum":9007199254740991},"period":{"enum":["mo","yr"],"type":"string"},"stackTag":{"type":"string","maxLength":40}},"required":["kind","label","amountLow","amountHigh","period"]}},"stack":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":40},"default":[]},"buildTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"buildCostCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"unclaimed":{"type":"boolean","default":false}},"required":["companyName","companyDomain","vendorName","replacementName","summary","wentLiveOn","costs"]},"proofs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"type":{"enum":["domain","workspace","repo"],"type":"string"},"target":{"type":"string"},"status":{"enum":["pending","passed","failed"],"type":"string"},"checkedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","target","status","checkedAt","detail","instructions"]}}},"required":["story","input","proofs"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"patch":{"operationId":"drafts.update","summary":"Edit a draft","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"companyName":{"type":"string","minLength":1,"maxLength":80},"companyDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"},"vendorName":{"type":"string","minLength":1,"maxLength":80},"vendorDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"},"replacementName":{"type":"string","minLength":1,"maxLength":80},"summary":{"type":"string","minLength":20,"maxLength":800},"wentLiveOn":{"type":"string","format":"date"},"sourceUrl":{"type":"string","format":"uri"},"costs":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"kind":{"enum":["old_bill","running"],"type":"string"},"label":{"type":"string","minLength":1,"maxLength":60},"amountLow":{"type":"integer","minimum":0,"maximum":9007199254740991},"amountHigh":{"type":"integer","minimum":0,"maximum":9007199254740991},"period":{"enum":["mo","yr"],"type":"string"},"stackTag":{"type":"string","maxLength":40}},"required":["kind","label","amountLow","amountHigh","period"]}},"stack":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":40},"default":[]},"buildTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"buildCostCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"unclaimed":{"type":"boolean","default":false}},"required":["companyName","companyDomain","vendorName","replacementName","summary","wentLiveOn","costs"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"confirmUrl":{"type":"string"}},"required":["id","slug","confirmUrl"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/drafts/{id}/proofs":{"post":{"operationId":"drafts.addProof","summary":"Attach a proof and run its checks","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"proof":{"anyOf":[{"type":"object","properties":{"type":{"const":"domain"}},"required":["type"]},{"type":"object","properties":{"type":{"const":"workspace"}},"required":["type"]},{"type":"object","properties":{"type":{"const":"repo"},"url":{"type":"string","format":"uri"}},"required":["type","url"]}]}},"required":["proof"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"type":{"enum":["domain","workspace","repo"],"type":"string"},"target":{"type":"string"},"status":{"enum":["pending","passed","failed"],"type":"string"},"checkedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","target","status","checkedAt","detail","instructions"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/proofs/{id}/check":{"post":{"operationId":"drafts.recheckProof","summary":"Run a proof check again","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"type":{"enum":["domain","workspace","repo"],"type":"string"},"target":{"type":"string"},"status":{"enum":["pending","passed","failed"],"type":"string"},"checkedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","target","status","checkedAt","detail","instructions"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/drafts/{id}/confirm":{"post":{"operationId":"drafts.confirm","summary":"Human confirmation (session only)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["draft","pending","published","rejected"],"type":"string"}},"required":["status"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/stage-events/{id}/confirm":{"post":{"operationId":"drafts.confirmStage","summary":"Human stage confirmation (session only)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reject":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"stage":{"enum":["replaced","reversed"],"type":"string"}},"required":["stage"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/reports":{"post":{"operationId":"reports.create","summary":"Report a story","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100},"reason":{"type":"string","minLength":10,"maxLength":1000},"turnstileToken":{"type":"string"}},"required":["slug","reason"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}}}}}},"/keys":{"get":{"operationId":"keys.list","summary":"My API keys","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dailyQuota":{"type":"number"}},"required":["prefix","label","createdAt","lastUsedAt","revokedAt","dailyQuota"]}}},"required":["items"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"keys.create","summary":"Create an API key (session only)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":60}},"required":["label"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"prefix":{"type":"string"}},"required":["key","prefix"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/keys/{prefix}":{"delete":{"operationId":"keys.revoke","summary":"Revoke an API key","parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/review/queue":{"get":{"operationId":"review.queue","summary":"Admin: everything waiting for a decision","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["story","claim","report","ad"],"type":"string"},"id":{"type":"number"},"reason":{"type":"string"},"story":{"anyOf":[{"type":"object","properties":{"id":{"type":"number"},"slug":{"type":"string"},"companyName":{"type":"string"},"companyDomain":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]},"replacementName":{"type":"string"},"summary":{"type":"string"},"stage":{"enum":["replaced","reversed"],"type":"string"},"status":{"enum":["draft","pending","published","rejected"],"type":"string"},"unclaimed":{"type":"boolean"},"verified":{"type":"boolean"},"netSavedLow":{"type":"number"},"netSavedHigh":{"type":"number"},"rankScore":{"type":"number"},"verifiedVia":{"type":"array","items":{"enum":["domain","workspace","repo"],"type":"string"}},"wentLiveOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"owner":{"anyOf":[{"type":"object","properties":{"displayName":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["displayName","handle"]},{"type":"null"}]},"costs":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["old_bill","running"],"type":"string"},"label":{"type":"string"},"amountLow":{"type":"number"},"amountHigh":{"type":"number"},"period":{"enum":["mo","yr"],"type":"string"},"stackTag":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","label","amountLow","amountHigh","period","stackTag"]}},"stack":{"type":"array","items":{"type":"string"}},"timeline":{"type":"array","items":{"type":"object","properties":{"fromStage":{"anyOf":[{"enum":["replaced","reversed"],"type":"string"},{"type":"null"}]},"toStage":{"enum":["replaced","reversed"],"type":"string"},"note":{"anyOf":[{"type":"string"},{"type":"null"}]},"at":{"type":"string"}},"required":["fromStage","toStage","note","at"]}},"proofs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"type":{"enum":["domain","workspace","repo"],"type":"string"},"target":{"type":"string"},"status":{"enum":["pending","passed","failed"],"type":"string"},"checkedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","target","status","checkedAt","detail"]}},"buildTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"buildCostCents":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","slug","companyName","companyDomain","vendor","replacementName","summary","stage","status","unclaimed","verified","netSavedLow","netSavedHigh","rankScore","verifiedVia","wentLiveOn","updatedAt","sourceUrl","owner","costs","stack","timeline","proofs","buildTokens","buildCostCents"]},{"type":"null"}]},"vendorDomain":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["kind","id","reason","story","vendorDomain","evidence","createdAt"]}}},"required":["items"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/review/{kind}/{id}":{"post":{"operationId":"review.decide","summary":"Admin: approve or reject a queue item","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["story","claim","report","ad"],"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"enum":["approve","reject"],"type":"string"},"note":{"type":"string","maxLength":1000}},"required":["decision"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/review/story/{id}/vendor":{"post":{"operationId":"review.setVendor","summary":"Admin: correct a queued story's vendor","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vendorName":{"type":"string","minLength":1,"maxLength":80},"vendorDomain":{"type":"string","pattern":"^([a-z0-9-]+\\.)+[a-z]{2,}$"}},"required":["vendorName"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"vendor":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"]}},"required":["slug","vendor"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/review/story/{id}/verify":{"post":{"operationId":"review.verify","summary":"Admin: mark an unclaimed story verified from the company's own post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"verified":{"type":"boolean","default":true}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/review/keys/{prefix}/revoke":{"post":{"operationId":"review.revokeKey","summary":"Admin: revoke any API key","parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/review/users/{id}/ban":{"post":{"operationId":"review.banUser","summary":"Admin: ban an account and revoke its keys","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"banned":{"type":"boolean"}},"required":["banned"]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Unauthorized"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/ads":{"get":{"operationId":"ads.list","summary":"Sponsor slots and their availability","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"placement":{"enum":["sidebar_1","sidebar_2","sidebar_3","sidebar_4","banner"],"type":"string"},"priceCents":{"type":"number"},"status":{"enum":["open","pending_payment","pending_review","live","lapsed"],"type":"string"},"logoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"oneLiner":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","placement","priceCents","status","logoUrl","oneLiner","link"]}}},"required":["items"]}}}}}}},"/ads/{id}/checkout":{"post":{"operationId":"ads.checkout","summary":"Start a sponsor subscription","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"advertiserEmail":{"type":"string","format":"email"},"logoUrl":{"type":"string","format":"uri"},"oneLiner":{"type":"string","minLength":4,"maxLength":90},"link":{"type":"string","format":"uri"}},"required":["advertiserEmail","logoUrl","oneLiner","link"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}}}}}}}