{"openapi":"3.1.0","info":{"title":"Kibo7 mission control API","description":"Trusted-user local organizer engine. Regular Course points are versioned local estimates; no official web quota is used.","version":"0.1.0"},"paths":{"/api/v1/health":{"get":{"tags":["system"],"summary":"Health","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/capabilities":{"get":{"tags":["system"],"summary":"Capabilities","operationId":"capabilities_api_v1_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/auth/login":{"post":{"tags":["authentication"],"summary":"Login","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["authentication"],"summary":"Logout","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/me":{"get":{"tags":["authentication"],"summary":"Me","operationId":"me_api_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/keys":{"get":{"tags":["authentication"],"summary":"Keys","operationId":"keys_api_v1_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]},"post":{"tags":["authentication"],"summary":"New Key","operationId":"new_key_api_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/keys/{key_id}":{"delete":{"tags":["authentication"],"summary":"Revoke Key","operationId":"revoke_key_api_v1_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/submissions":{"post":{"tags":["submissions"],"summary":"Upload","operationId":"upload_api_v1_submissions_post","parameters":[{"name":"x-filename","in":"header","required":false,"schema":{"type":"string","maxLength":1800,"default":"submission.tar.gz","title":"X-Filename"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/gzip":{"schema":{"type":"string","format":"binary"}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]},"get":{"tags":["submissions"],"summary":"Submissions","operationId":"submissions_api_v1_submissions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs":{"post":{"tags":["runs"],"summary":"Create Run","operationId":"create_run_api_v1_runs_post","parameters":[{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]},"get":{"tags":["runs"],"summary":"Runs","operationId":"runs_api_v1_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/batches":{"post":{"tags":["runs"],"summary":"Create Batch","operationId":"create_batch_api_v1_batches_post","parameters":[{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/batches/{batch_id}":{"get":{"tags":["runs"],"summary":"Batch","operationId":"batch_api_v1_batches__batch_id__get","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/submissions/{submission_id}/download":{"get":{"tags":["reports"],"summary":"Download Source","operationId":"download_source_api_v1_submissions__submission_id__download_get","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"string","title":"Submission Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}":{"get":{"tags":["runs"],"summary":"Run","operationId":"run_api_v1_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/cancel":{"post":{"tags":["runs"],"summary":"Cancel","operationId":"cancel_api_v1_runs__run_id__cancel_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/events":{"get":{"tags":["runs"],"summary":"Events","operationId":"events_api_v1_runs__run_id__events_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"After"}},{"name":"last-event-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/report":{"get":{"tags":["reports"],"summary":"Report","operationId":"report_api_v1_runs__run_id__report_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/artifacts":{"get":{"tags":["reports"],"summary":"Artifacts","operationId":"artifacts_api_v1_runs__run_id__artifacts_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/artifacts/{artifact_id}":{"get":{"tags":["reports"],"summary":"Download","operationId":"download_api_v1_runs__run_id__artifacts__artifact_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/artifacts/{artifact_id}/preview":{"get":{"tags":["reports"],"summary":"Preview","operationId":"preview_api_v1_runs__run_id__artifacts__artifact_id__preview_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/resources":{"get":{"tags":["system"],"summary":"Resources","operationId":"resources_api_v1_resources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/live":{"get":{"tags":["runs"],"summary":"Live Info","operationId":"live_info_api_v1_runs__run_id__live_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/runs/{run_id}/replay":{"get":{"tags":["replay"],"summary":"Info","operationId":"info_api_v1_runs__run_id__replay_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]},"post":{"tags":["replay"],"summary":"Start","operationId":"start_api_v1_runs__run_id__replay_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplayOptions"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}},"/api/v1/replays/{identifier}/stop":{"post":{"tags":["replay"],"summary":"Stop Session","operationId":"stop_session_api_v1_replays__identifier__stop_post","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKey":[]},{"BrowserSession":[]}]}}},"components":{"schemas":{"BatchRequest":{"properties":{"submission_id":{"type":"string","pattern":"^[a-f0-9]{32}$","title":"Submission Id"},"config":{"$ref":"#/components/schemas/RunConfig"},"memo":{"type":"string","maxLength":1000,"title":"Memo","default":""},"count":{"type":"integer","const":10,"title":"Count","default":10}},"additionalProperties":false,"type":"object","required":["submission_id"],"title":"BatchRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyRequest":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"},"scopes":{"items":{"type":"string","enum":["read","submit","cancel","keys"]},"type":"array","title":"Scopes","default":["read","submit","cancel"]}},"additionalProperties":false,"type":"object","required":["name"],"title":"KeyRequest"},"Login":{"properties":{"username":{"type":"string","maxLength":80,"minLength":1,"title":"Username"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"}},"additionalProperties":false,"type":"object","required":["username","password"],"title":"Login"},"ReplayOptions":{"properties":{"rate":{"enum":[0.5,1,2],"title":"Rate","default":1}},"additionalProperties":false,"type":"object","title":"ReplayOptions"},"RunConfig":{"properties":{"course":{"type":"string","enum":["regular","beginners"],"title":"Course","default":"regular"},"difficulty":{"type":"string","enum":["easy","normal","hard","veryhard"],"title":"Difficulty","default":"normal"},"language":{"type":"string","enum":["python","cpp"],"title":"Language","default":"python"}},"additionalProperties":false,"type":"object","title":"RunConfig"},"RunRequest":{"properties":{"submission_id":{"type":"string","pattern":"^[a-f0-9]{32}$","title":"Submission Id"},"config":{"$ref":"#/components/schemas/RunConfig"},"memo":{"type":"string","maxLength":1000,"title":"Memo","default":""}},"additionalProperties":false,"type":"object","required":["submission_id"],"title":"RunRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"k7_…"},"BrowserSession":{"type":"apiKey","in":"cookie","name":"kibo_session"}}}}