{"openapi":"3.1.0","info":{"title":"The Sports Scheduler API","version":"2026-08-22.3","description":"Agent-first contract for capability discovery, schedule quotes, explicit generation, and portable exports. Check live capabilities before every effect."},"servers":[{"url":"https://thesportscheduler.com"}],"paths":{"/v1/capabilities":{"get":{"operationId":"getSchedulerCapabilities","summary":"Read current formats, limits, effects, and availability","responses":{"200":{"description":"Current capability state","headers":{"ETag":{"required":true,"schema":{"type":"string"}},"Cache-Control":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","capabilityVersion","partnerContractVersion","availability","reason","sports","formats","outputs","pricing","handoff","cacheSeconds"],"properties":{"schemaVersion":{"const":"2026-08-22.3"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"partnerContractVersion":{"const":"lpw-scheduling-v1"},"availability":{"enum":["preview","unavailable"]},"reason":{"type":"string"},"sports":{"type":"object","additionalProperties":false,"required":["profileVersion","supported"],"properties":{"profileVersion":{"const":"playpass-sports-2026-08-22"},"supported":{"type":"array","minItems":63,"maxItems":63,"prefixItems":[{"const":"archery"},{"const":"aussie-rules"},{"const":"badminton"},{"const":"baseball"},{"const":"basketball"},{"const":"bocce"},{"const":"bowling"},{"const":"boxing"},{"const":"cheerleading"},{"const":"chess"},{"const":"cornhole"},{"const":"cricket"},{"const":"croquet"},{"const":"curling"},{"const":"cycling"},{"const":"darts"},{"const":"diving"},{"const":"dodgeball"},{"const":"e-sports"},{"const":"field-hockey"},{"const":"figure-skating"},{"const":"fishing"},{"const":"fitness"},{"const":"football"},{"const":"golf"},{"const":"gymnastics"},{"const":"handball"},{"const":"hiking"},{"const":"hockey"},{"const":"karate"},{"const":"kickball"},{"const":"lacrosse"},{"const":"lawn-bowls"},{"const":"miscellaneous"},{"const":"motorsport"},{"const":"multisport"},{"const":"netball"},{"const":"pickleball"},{"const":"polo"},{"const":"pool"},{"const":"quoits"},{"const":"racquetball"},{"const":"robotics"},{"const":"rock-climbing"},{"const":"rowing"},{"const":"rugby"},{"const":"running"},{"const":"sailing"},{"const":"scuba-diving"},{"const":"snooker"},{"const":"soccer"},{"const":"softball"},{"const":"squash"},{"const":"swimming"},{"const":"table-tennis"},{"const":"tennis"},{"const":"track-and-field"},{"const":"ultimate"},{"const":"volleyball"},{"const":"walking-netball"},{"const":"water-polo"},{"const":"water-sports"},{"const":"wrestling"}]}}},"formats":{"type":"object","additionalProperties":false,"required":["round_robin","single_elimination"],"properties":{"round_robin":{"type":"object","additionalProperties":false,"required":["availability","participants","estimatedGames","rounds"],"properties":{"availability":{"enum":["preview","unavailable"]},"participants":{"type":"object","additionalProperties":false,"required":["minimum","maximum"],"properties":{"minimum":{"type":"integer"},"maximum":{"type":"integer"}}},"estimatedGames":{"type":"object","additionalProperties":false,"required":["maximum"],"properties":{"maximum":{"type":"integer"}}},"rounds":{"type":"object","additionalProperties":false,"required":["minimum","maximum"],"properties":{"minimum":{"type":"integer"},"maximum":{"type":"integer"}}}}},"single_elimination":{"type":"object","additionalProperties":false,"required":["availability"],"properties":{"availability":{"const":"unavailable"}}}}},"outputs":{"type":"object","additionalProperties":false,"required":["json","csv","ics","pdf"],"properties":{"json":{"enum":["preview","unavailable"]},"csv":{"enum":["preview","unavailable"]},"ics":{"const":"unavailable"},"pdf":{"const":"unavailable"}}},"pricing":{"type":"object","additionalProperties":false,"required":["status","checkout"],"properties":{"status":{"const":"not_configured"},"checkout":{"const":"unavailable"}}},"handoff":{"type":"object","additionalProperties":false,"required":["playpass"],"properties":{"playpass":{"const":"unavailable"}}},"cacheSeconds":{"const":300}}}}}},"304":{"description":"Capabilities have not changed","headers":{"ETag":{"required":true,"schema":{"type":"string"}}}}}}},"/v1/schedule-quotes":{"post":{"operationId":"createScheduleQuote","summary":"Normalize and validate one schedule request without charging or generating","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}}}}},"responses":{"201":{"description":"Immutable quote and one scoped draft capability","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data","access"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","requestId","status","issuedAt","expiresAt","normalizedInput","inputDigest","quoteDigest","estimate","support","price","generation","partner","confirmationSummary"],"properties":{"id":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"requestId":{"type":"string","pattern":"^req_[0-9a-f-]{36}$"},"status":{"const":"active"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"normalizedInput":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"estimate":{"type":"object","additionalProperties":false,"required":["games","slots","workClass"],"properties":{"games":{"type":"integer","minimum":0,"maximum":256},"slots":{"type":"integer","minimum":0},"workClass":{"enum":["small","standard","large"]}}},"support":{"type":"object","additionalProperties":false,"required":["status","diagnostics"],"properties":{"status":{"enum":["supported","infeasible","unsupported"]},"diagnostics":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string","minLength":1,"maxLength":80},"severity":{"enum":["error","warning","info"]},"message":{"type":"string","minLength":1,"maxLength":400}}}}}},"price":{"type":"object","additionalProperties":false,"required":["status","currency","totalMinor"],"properties":{"status":{"const":"not_for_sale"},"currency":{"type":"null"},"totalMinor":{"type":"null"}}},"generation":{"type":"object","additionalProperties":false,"required":["availability","entitlementId"],"properties":{"availability":{"enum":["local_preview","unavailable"]},"entitlementId":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}]}}},"partner":{"type":"object","additionalProperties":false,"required":["validationId","inputDigest","contractVersion","capabilityVersion","engineVersion","expiresAt"],"properties":{"validationId":{"type":"string","minLength":1,"maxLength":128},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"contractVersion":{"const":"lpw-scheduling-v1"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"engineVersion":{"type":"string","minLength":1,"maxLength":80},"expiresAt":{"type":"string","format":"date-time"}}},"confirmationSummary":{"type":"string"}}},"access":{"type":"object","additionalProperties":false,"required":["scheme","token","scopes","expiresAt"],"properties":{"scheme":{"const":"Bearer"},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{32,128}$"},"scopes":{"type":"array","oneOf":[{"prefixItems":[{"const":"quote:read"},{"const":"draft:delete"}],"minItems":2,"maxItems":2},{"prefixItems":[{"const":"quote:read"},{"const":"schedule:create"},{"const":"schedule:read"},{"const":"exports:read"},{"const":"draft:delete"}],"minItems":5,"maxItems":5}]},"expiresAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"Invalid JSON or idempotency header","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"409":{"description":"Idempotency conflict or request in progress","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"410":{"description":"The replayed capability has expired","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"413":{"description":"Request body exceeds 64,000 bytes","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"415":{"description":"Request is not JSON","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"422":{"description":"Invalid or unsupported schedule input","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"502":{"description":"Partner returned an invalid contract response","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"503":{"description":"Partner, persistence, or commercial capability unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}},"/v1/schedule-quotes/{quote_id}":{"get":{"operationId":"getScheduleQuote","summary":"Read an authorized active quote","security":[{"bearerAuth":[]}],"parameters":[{"name":"quote_id","in":"path","required":true,"schema":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"}}],"responses":{"200":{"description":"Authorized quote","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","requestId","status","issuedAt","expiresAt","normalizedInput","inputDigest","quoteDigest","estimate","support","price","generation","partner","confirmationSummary"],"properties":{"id":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"requestId":{"type":"string","pattern":"^req_[0-9a-f-]{36}$"},"status":{"const":"active"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"normalizedInput":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"estimate":{"type":"object","additionalProperties":false,"required":["games","slots","workClass"],"properties":{"games":{"type":"integer","minimum":0,"maximum":256},"slots":{"type":"integer","minimum":0},"workClass":{"enum":["small","standard","large"]}}},"support":{"type":"object","additionalProperties":false,"required":["status","diagnostics"],"properties":{"status":{"enum":["supported","infeasible","unsupported"]},"diagnostics":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string","minLength":1,"maxLength":80},"severity":{"enum":["error","warning","info"]},"message":{"type":"string","minLength":1,"maxLength":400}}}}}},"price":{"type":"object","additionalProperties":false,"required":["status","currency","totalMinor"],"properties":{"status":{"const":"not_for_sale"},"currency":{"type":"null"},"totalMinor":{"type":"null"}}},"generation":{"type":"object","additionalProperties":false,"required":["availability","entitlementId"],"properties":{"availability":{"enum":["local_preview","unavailable"]},"entitlementId":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}]}}},"partner":{"type":"object","additionalProperties":false,"required":["validationId","inputDigest","contractVersion","capabilityVersion","engineVersion","expiresAt"],"properties":{"validationId":{"type":"string","minLength":1,"maxLength":128},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"contractVersion":{"const":"lpw-scheduling-v1"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"engineVersion":{"type":"string","minLength":1,"maxLength":80},"expiresAt":{"type":"string","format":"date-time"}}},"confirmationSummary":{"type":"string"}}}}}}}},"401":{"description":"Capability missing or malformed","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"403":{"description":"Capability lacks quote:read scope","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"404":{"description":"Quote absent or capability invalid","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"503":{"description":"Persistence unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}},"/v1/schedules":{"post":{"operationId":"createSchedule","summary":"Explicitly consume one entitlement to create a schedule","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["quoteId","quoteDigest","entitlementId"],"properties":{"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"entitlementId":{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}}}}}},"responses":{"201":{"description":"Schedule and portable exports completed","headers":{"ETag":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","operationId","status","quoteId","inputDigest","terminalReason","artifact","exports","createdAt","completedAt"],"properties":{"id":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"},"operationId":{"type":"string","pattern":"^op_[0-9a-f-]{36}$"},"status":{"enum":["pending","dispatching","processing","reconciling","succeeded","failed","canceled"]},"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"terminalReason":{"type":["string","null"]},"artifact":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["id","digest","resultSchemaVersion","engineVersion","generatorVersion","fairnessVersion","expiresAt"],"properties":{"id":{"type":"string","pattern":"^artifact_[0-9a-f-]{36}$"},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"resultSchemaVersion":{"type":"string"},"engineVersion":{"type":"string"},"generatorVersion":{"type":"string"},"fairnessVersion":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}}]},"exports":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["json","csv","jsonExportId","csvExportId"],"properties":{"json":{"type":"string","pattern":"^/v1/schedules/.+/exports/json$"},"csv":{"type":"string","pattern":"^/v1/schedules/.+/exports/csv$"},"jsonExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"},"csvExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"}}}]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}}}}}}}},"202":{"description":"Schedule accepted and pollable","headers":{"Retry-After":{"required":true,"schema":{"type":"string"}},"ETag":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","operationId","status","quoteId","inputDigest","terminalReason","artifact","exports","createdAt","completedAt"],"properties":{"id":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"},"operationId":{"type":"string","pattern":"^op_[0-9a-f-]{36}$"},"status":{"enum":["pending","dispatching","processing","reconciling","succeeded","failed","canceled"]},"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"terminalReason":{"type":["string","null"]},"artifact":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["id","digest","resultSchemaVersion","engineVersion","generatorVersion","fairnessVersion","expiresAt"],"properties":{"id":{"type":"string","pattern":"^artifact_[0-9a-f-]{36}$"},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"resultSchemaVersion":{"type":"string"},"engineVersion":{"type":"string"},"generatorVersion":{"type":"string"},"fairnessVersion":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}}]},"exports":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["json","csv","jsonExportId","csvExportId"],"properties":{"json":{"type":"string","pattern":"^/v1/schedules/.+/exports/json$"},"csv":{"type":"string","pattern":"^/v1/schedules/.+/exports/csv$"},"jsonExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"},"csvExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"}}}]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}}}}}}}},"400":{"description":"Invalid JSON or idempotency header","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"401":{"description":"Capability missing or malformed","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"403":{"description":"Capability lacks schedule:create scope","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"404":{"description":"Quote, entitlement, or capability unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"409":{"description":"Idempotency conflict, request in progress, or entitlement unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"410":{"description":"Quote, entitlement, or capability expired","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"413":{"description":"Request body exceeds 8,192 bytes","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"415":{"description":"Request is not JSON","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"422":{"description":"Invalid generation input","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"502":{"description":"Partner result failed validation or recovery ended safely","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"503":{"description":"Generation, persistence, or artifact storage unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}},"/v1/schedules/{schedule_id}":{"get":{"operationId":"getSchedule","summary":"Read an authorized schedule operation and artifact state","security":[{"bearerAuth":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"}}],"responses":{"200":{"description":"Authorized schedule state","headers":{"ETag":{"required":true,"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","operationId","status","quoteId","inputDigest","terminalReason","artifact","exports","createdAt","completedAt"],"properties":{"id":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"},"operationId":{"type":"string","pattern":"^op_[0-9a-f-]{36}$"},"status":{"enum":["pending","dispatching","processing","reconciling","succeeded","failed","canceled"]},"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"terminalReason":{"type":["string","null"]},"artifact":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["id","digest","resultSchemaVersion","engineVersion","generatorVersion","fairnessVersion","expiresAt"],"properties":{"id":{"type":"string","pattern":"^artifact_[0-9a-f-]{36}$"},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"resultSchemaVersion":{"type":"string"},"engineVersion":{"type":"string"},"generatorVersion":{"type":"string"},"fairnessVersion":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}}]},"exports":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["json","csv","jsonExportId","csvExportId"],"properties":{"json":{"type":"string","pattern":"^/v1/schedules/.+/exports/json$"},"csv":{"type":"string","pattern":"^/v1/schedules/.+/exports/csv$"},"jsonExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"},"csvExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"}}}]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}}}}}}}},"304":{"description":"Schedule state has not changed","headers":{"ETag":{"required":true,"schema":{"type":"string"}}}},"401":{"description":"Capability missing or malformed","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"403":{"description":"Capability lacks schedule:read scope","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"404":{"description":"Schedule absent or capability invalid","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"503":{"description":"Persistence unavailable","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}},"/v1/schedules/{schedule_id}/exports/{format}":{"get":{"operationId":"getScheduleExport","summary":"Download an authorized private JSON or CSV export","security":[{"bearerAuth":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"}},{"name":"format","in":"path","required":true,"schema":{"enum":["json","csv"]}}],"responses":{"200":{"description":"Private portable export bytes","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Capability missing or malformed","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"404":{"description":"Export absent, expired, or capability invalid","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}},"503":{"description":"Artifact bytes are being recovered","content":{"application/problem+json":{"schema":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"opaque capability"}},"schemas":{"Capabilities":{"type":"object","additionalProperties":false,"required":["schemaVersion","capabilityVersion","partnerContractVersion","availability","reason","sports","formats","outputs","pricing","handoff","cacheSeconds"],"properties":{"schemaVersion":{"const":"2026-08-22.3"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"partnerContractVersion":{"const":"lpw-scheduling-v1"},"availability":{"enum":["preview","unavailable"]},"reason":{"type":"string"},"sports":{"type":"object","additionalProperties":false,"required":["profileVersion","supported"],"properties":{"profileVersion":{"const":"playpass-sports-2026-08-22"},"supported":{"type":"array","minItems":63,"maxItems":63,"prefixItems":[{"const":"archery"},{"const":"aussie-rules"},{"const":"badminton"},{"const":"baseball"},{"const":"basketball"},{"const":"bocce"},{"const":"bowling"},{"const":"boxing"},{"const":"cheerleading"},{"const":"chess"},{"const":"cornhole"},{"const":"cricket"},{"const":"croquet"},{"const":"curling"},{"const":"cycling"},{"const":"darts"},{"const":"diving"},{"const":"dodgeball"},{"const":"e-sports"},{"const":"field-hockey"},{"const":"figure-skating"},{"const":"fishing"},{"const":"fitness"},{"const":"football"},{"const":"golf"},{"const":"gymnastics"},{"const":"handball"},{"const":"hiking"},{"const":"hockey"},{"const":"karate"},{"const":"kickball"},{"const":"lacrosse"},{"const":"lawn-bowls"},{"const":"miscellaneous"},{"const":"motorsport"},{"const":"multisport"},{"const":"netball"},{"const":"pickleball"},{"const":"polo"},{"const":"pool"},{"const":"quoits"},{"const":"racquetball"},{"const":"robotics"},{"const":"rock-climbing"},{"const":"rowing"},{"const":"rugby"},{"const":"running"},{"const":"sailing"},{"const":"scuba-diving"},{"const":"snooker"},{"const":"soccer"},{"const":"softball"},{"const":"squash"},{"const":"swimming"},{"const":"table-tennis"},{"const":"tennis"},{"const":"track-and-field"},{"const":"ultimate"},{"const":"volleyball"},{"const":"walking-netball"},{"const":"water-polo"},{"const":"water-sports"},{"const":"wrestling"}]}}},"formats":{"type":"object","additionalProperties":false,"required":["round_robin","single_elimination"],"properties":{"round_robin":{"type":"object","additionalProperties":false,"required":["availability","participants","estimatedGames","rounds"],"properties":{"availability":{"enum":["preview","unavailable"]},"participants":{"type":"object","additionalProperties":false,"required":["minimum","maximum"],"properties":{"minimum":{"type":"integer"},"maximum":{"type":"integer"}}},"estimatedGames":{"type":"object","additionalProperties":false,"required":["maximum"],"properties":{"maximum":{"type":"integer"}}},"rounds":{"type":"object","additionalProperties":false,"required":["minimum","maximum"],"properties":{"minimum":{"type":"integer"},"maximum":{"type":"integer"}}}}},"single_elimination":{"type":"object","additionalProperties":false,"required":["availability"],"properties":{"availability":{"const":"unavailable"}}}}},"outputs":{"type":"object","additionalProperties":false,"required":["json","csv","ics","pdf"],"properties":{"json":{"enum":["preview","unavailable"]},"csv":{"enum":["preview","unavailable"]},"ics":{"const":"unavailable"},"pdf":{"const":"unavailable"}}},"pricing":{"type":"object","additionalProperties":false,"required":["status","checkout"],"properties":{"status":{"const":"not_configured"},"checkout":{"const":"unavailable"}}},"handoff":{"type":"object","additionalProperties":false,"required":["playpass"],"properties":{"playpass":{"const":"unavailable"}}},"cacheSeconds":{"const":300}}},"ScheduleQuoteInput":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}},"ScheduleQuoteData":{"type":"object","additionalProperties":false,"required":["id","requestId","status","issuedAt","expiresAt","normalizedInput","inputDigest","quoteDigest","estimate","support","price","generation","partner","confirmationSummary"],"properties":{"id":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"requestId":{"type":"string","pattern":"^req_[0-9a-f-]{36}$"},"status":{"const":"active"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"normalizedInput":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"estimate":{"type":"object","additionalProperties":false,"required":["games","slots","workClass"],"properties":{"games":{"type":"integer","minimum":0,"maximum":256},"slots":{"type":"integer","minimum":0},"workClass":{"enum":["small","standard","large"]}}},"support":{"type":"object","additionalProperties":false,"required":["status","diagnostics"],"properties":{"status":{"enum":["supported","infeasible","unsupported"]},"diagnostics":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string","minLength":1,"maxLength":80},"severity":{"enum":["error","warning","info"]},"message":{"type":"string","minLength":1,"maxLength":400}}}}}},"price":{"type":"object","additionalProperties":false,"required":["status","currency","totalMinor"],"properties":{"status":{"const":"not_for_sale"},"currency":{"type":"null"},"totalMinor":{"type":"null"}}},"generation":{"type":"object","additionalProperties":false,"required":["availability","entitlementId"],"properties":{"availability":{"enum":["local_preview","unavailable"]},"entitlementId":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}]}}},"partner":{"type":"object","additionalProperties":false,"required":["validationId","inputDigest","contractVersion","capabilityVersion","engineVersion","expiresAt"],"properties":{"validationId":{"type":"string","minLength":1,"maxLength":128},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"contractVersion":{"const":"lpw-scheduling-v1"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"engineVersion":{"type":"string","minLength":1,"maxLength":80},"expiresAt":{"type":"string","format":"date-time"}}},"confirmationSummary":{"type":"string"}}},"ScheduleQuoteCreateResponse":{"type":"object","additionalProperties":false,"required":["data","access"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","requestId","status","issuedAt","expiresAt","normalizedInput","inputDigest","quoteDigest","estimate","support","price","generation","partner","confirmationSummary"],"properties":{"id":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"requestId":{"type":"string","pattern":"^req_[0-9a-f-]{36}$"},"status":{"const":"active"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"normalizedInput":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"estimate":{"type":"object","additionalProperties":false,"required":["games","slots","workClass"],"properties":{"games":{"type":"integer","minimum":0,"maximum":256},"slots":{"type":"integer","minimum":0},"workClass":{"enum":["small","standard","large"]}}},"support":{"type":"object","additionalProperties":false,"required":["status","diagnostics"],"properties":{"status":{"enum":["supported","infeasible","unsupported"]},"diagnostics":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string","minLength":1,"maxLength":80},"severity":{"enum":["error","warning","info"]},"message":{"type":"string","minLength":1,"maxLength":400}}}}}},"price":{"type":"object","additionalProperties":false,"required":["status","currency","totalMinor"],"properties":{"status":{"const":"not_for_sale"},"currency":{"type":"null"},"totalMinor":{"type":"null"}}},"generation":{"type":"object","additionalProperties":false,"required":["availability","entitlementId"],"properties":{"availability":{"enum":["local_preview","unavailable"]},"entitlementId":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}]}}},"partner":{"type":"object","additionalProperties":false,"required":["validationId","inputDigest","contractVersion","capabilityVersion","engineVersion","expiresAt"],"properties":{"validationId":{"type":"string","minLength":1,"maxLength":128},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"contractVersion":{"const":"lpw-scheduling-v1"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"engineVersion":{"type":"string","minLength":1,"maxLength":80},"expiresAt":{"type":"string","format":"date-time"}}},"confirmationSummary":{"type":"string"}}},"access":{"type":"object","additionalProperties":false,"required":["scheme","token","scopes","expiresAt"],"properties":{"scheme":{"const":"Bearer"},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{32,128}$"},"scopes":{"type":"array","oneOf":[{"prefixItems":[{"const":"quote:read"},{"const":"draft:delete"}],"minItems":2,"maxItems":2},{"prefixItems":[{"const":"quote:read"},{"const":"schedule:create"},{"const":"schedule:read"},{"const":"exports:read"},{"const":"draft:delete"}],"minItems":5,"maxItems":5}]},"expiresAt":{"type":"string","format":"date-time"}}}}},"ScheduleQuoteReadResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","requestId","status","issuedAt","expiresAt","normalizedInput","inputDigest","quoteDigest","estimate","support","price","generation","partner","confirmationSummary"],"properties":{"id":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"requestId":{"type":"string","pattern":"^req_[0-9a-f-]{36}$"},"status":{"const":"active"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"normalizedInput":{"type":"object","additionalProperties":false,"required":["kind","sport","format","participants","dateWindow","timeZone","resources","playableWindows","gameDurationMinutes","turnoverMinutes","rounds","restPreference","outputs","locale"],"properties":{"kind":{"const":"league"},"sport":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-z0-9][a-z0-9_-]*$","examples":["soccer","basketball"],"description":"A syntactically valid slug. Check capabilities.sports.supported; other slugs quote as unsupported.","x-supportedProfiles":["archery","aussie-rules","badminton","baseball","basketball","bocce","bowling","boxing","cheerleading","chess","cornhole","cricket","croquet","curling","cycling","darts","diving","dodgeball","e-sports","field-hockey","figure-skating","fishing","fitness","football","golf","gymnastics","handball","hiking","hockey","karate","kickball","lacrosse","lawn-bowls","miscellaneous","motorsport","multisport","netball","pickleball","polo","pool","quoits","racquetball","robotics","rock-climbing","rowing","rugby","running","sailing","scuba-diving","snooker","soccer","softball","squash","swimming","table-tennis","tennis","track-and-field","ultimate","volleyball","walking-netball","water-polo","water-sports","wrestling"]},"format":{"const":"round_robin"},"participants":{"type":"array","minItems":2,"maxItems":48,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"dateWindow":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"timeZone":{"type":"string","examples":["America/New_York"]},"resources":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["ref","label"],"properties":{"ref":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":80}}}},"playableWindows":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["weekdays","startTime","endTime"],"properties":{"weekdays":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"integer","minimum":0,"maximum":6}},"startTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},"endTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}}}},"gameDurationMinutes":{"type":"integer","minimum":15,"maximum":240},"turnoverMinutes":{"type":"integer","minimum":0,"maximum":120},"rounds":{"type":"integer","minimum":1,"maximum":10},"restPreference":{"const":"maximum"},"outputs":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"enum":["json","csv"]}},"locale":{"const":"en-US"}}},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"estimate":{"type":"object","additionalProperties":false,"required":["games","slots","workClass"],"properties":{"games":{"type":"integer","minimum":0,"maximum":256},"slots":{"type":"integer","minimum":0},"workClass":{"enum":["small","standard","large"]}}},"support":{"type":"object","additionalProperties":false,"required":["status","diagnostics"],"properties":{"status":{"enum":["supported","infeasible","unsupported"]},"diagnostics":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string","minLength":1,"maxLength":80},"severity":{"enum":["error","warning","info"]},"message":{"type":"string","minLength":1,"maxLength":400}}}}}},"price":{"type":"object","additionalProperties":false,"required":["status","currency","totalMinor"],"properties":{"status":{"const":"not_for_sale"},"currency":{"type":"null"},"totalMinor":{"type":"null"}}},"generation":{"type":"object","additionalProperties":false,"required":["availability","entitlementId"],"properties":{"availability":{"enum":["local_preview","unavailable"]},"entitlementId":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}]}}},"partner":{"type":"object","additionalProperties":false,"required":["validationId","inputDigest","contractVersion","capabilityVersion","engineVersion","expiresAt"],"properties":{"validationId":{"type":"string","minLength":1,"maxLength":128},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"contractVersion":{"const":"lpw-scheduling-v1"},"capabilityVersion":{"const":"round-robin-local-generation-1"},"engineVersion":{"type":"string","minLength":1,"maxLength":80},"expiresAt":{"type":"string","format":"date-time"}}},"confirmationSummary":{"type":"string"}}}}},"ScheduleCreateInput":{"type":"object","additionalProperties":false,"required":["quoteId","quoteDigest","entitlementId"],"properties":{"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"quoteDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"entitlementId":{"type":"string","pattern":"^ent_[0-9a-f-]{36}$"}}},"ScheduleData":{"type":"object","additionalProperties":false,"required":["id","operationId","status","quoteId","inputDigest","terminalReason","artifact","exports","createdAt","completedAt"],"properties":{"id":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"},"operationId":{"type":"string","pattern":"^op_[0-9a-f-]{36}$"},"status":{"enum":["pending","dispatching","processing","reconciling","succeeded","failed","canceled"]},"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"terminalReason":{"type":["string","null"]},"artifact":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["id","digest","resultSchemaVersion","engineVersion","generatorVersion","fairnessVersion","expiresAt"],"properties":{"id":{"type":"string","pattern":"^artifact_[0-9a-f-]{36}$"},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"resultSchemaVersion":{"type":"string"},"engineVersion":{"type":"string"},"generatorVersion":{"type":"string"},"fairnessVersion":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}}]},"exports":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["json","csv","jsonExportId","csvExportId"],"properties":{"json":{"type":"string","pattern":"^/v1/schedules/.+/exports/json$"},"csv":{"type":"string","pattern":"^/v1/schedules/.+/exports/csv$"},"jsonExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"},"csvExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"}}}]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}}},"ScheduleResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["id","operationId","status","quoteId","inputDigest","terminalReason","artifact","exports","createdAt","completedAt"],"properties":{"id":{"type":"string","pattern":"^sched_[0-9a-f-]{36}$"},"operationId":{"type":"string","pattern":"^op_[0-9a-f-]{36}$"},"status":{"enum":["pending","dispatching","processing","reconciling","succeeded","failed","canceled"]},"quoteId":{"type":"string","pattern":"^quote_[0-9a-f-]{36}$"},"inputDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"terminalReason":{"type":["string","null"]},"artifact":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["id","digest","resultSchemaVersion","engineVersion","generatorVersion","fairnessVersion","expiresAt"],"properties":{"id":{"type":"string","pattern":"^artifact_[0-9a-f-]{36}$"},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"resultSchemaVersion":{"type":"string"},"engineVersion":{"type":"string"},"generatorVersion":{"type":"string"},"fairnessVersion":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}}]},"exports":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["json","csv","jsonExportId","csvExportId"],"properties":{"json":{"type":"string","pattern":"^/v1/schedules/.+/exports/json$"},"csv":{"type":"string","pattern":"^/v1/schedules/.+/exports/csv$"},"jsonExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"},"csvExportId":{"type":"string","pattern":"^export_[0-9a-f-]{36}$"}}}]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}}}}},"Problem":{"type":"object","additionalProperties":false,"required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"requestId":{"type":"string","minLength":1,"maxLength":128},"issues":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}}}}}}}