{"openapi":"3.1.0","info":{"title":"CoachMate preparation API","version":"1.0.0","description":"Find public teaching packs and prepare a tournament draft for coach review. Does not create tournaments or access student data."},"servers":[{"url":"https://coachmate.lat"}],"security":[{"teacherSession":[]}],"components":{"securitySchemes":{"teacherSession":{"type":"http","scheme":"bearer","bearerFormat":"Supabase access token","description":"Use an existing confirmed coach session token. Service-role keys are not accepted."}}},"paths":{"/api/agent/templates":{"get":{"operationId":"listTeachingPacks","summary":"Find original chess teaching packs","responses":{"200":{"description":"Ten public teaching packs with FEN positions"},"401":{"description":"Confirmed coach with active session required"}}}},"/api/agent/tournament-draft":{"post":{"operationId":"prepareTournamentDraft","summary":"Prepare a draft and return the coach review link","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"pack":{"type":"string","enum":["opposition","pawn-races","active-rooks","back-rank","knight-forks","minor-piece-endgames","italian-centre","queens-gambit","caro-kann","sicilian-development"]},"format":{"type":"string","enum":["swiss","round_robin","knockout"],"default":"swiss"},"rounds":{"type":"integer","minimum":1,"maximum":15,"default":4},"timeControl":{"type":"string","enum":["1+0","3+2","5+0","5+3","10+0","10+2","15+10"],"default":"5+3"}}}}}},"responses":{"200":{"description":"Stateless draft with positions and reviewPath; no events created"},"400":{"description":"Invalid fields or JSON"},"401":{"description":"Confirmed coach with active session required"},"404":{"description":"Unknown pack"},"413":{"description":"Body exceeds 4096 bytes"}}}}}}