{"openapi":"3.1.0","info":{"title":"Pareton API","description":"Stage 0 campaign + submission surface (SN10).","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/campaigns":{"get":{"summary":"Campaigns","operationId":"campaigns_v1_campaigns_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}":{"get":{"summary":"Campaign Detail","operationId":"campaign_detail_v1_campaigns__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/submissions":{"get":{"summary":"Campaign Submissions","operationId":"campaign_submissions_v1_campaigns__campaign_id__submissions_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionsPageModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stats":{"get":{"summary":"Stats","operationId":"stats_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/campaigns/{campaign_id}/leader":{"get":{"summary":"Campaign Leader","description":"The crown holder. A vacant crown has no row, so it is a 404.","operationId":"campaign_leader_v1_campaigns__campaign_id__leader_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/rounds":{"get":{"summary":"Campaign Rounds","operationId":"campaign_rounds_v1_campaigns__campaign_id__rounds_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoundsPageModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/score-progress":{"get":{"summary":"Campaign Score Progress","description":"Chart series, oldest ordinal first. Void rounds keep their ordinal.","operationId":"campaign_score_progress_v1_campaigns__campaign_id__score_progress_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreProgressModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rounds/{round_id}":{"get":{"summary":"Round Detail","operationId":"round_detail_v1_rounds__round_id__get","parameters":[{"name":"round_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Round Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoundDetailModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rounds/{round_id}/entries/{entry_id}/report":{"get":{"summary":"Round Entry Report","description":"The arithmetic behind one entry's score, prompt by prompt.\n\nThe round score is the named rule applied to `prompts`, so a miner can\nre-derive it and see which prompts paid and which were gated. Absolute\nseconds are served alongside the ratios: a speedup on its own cannot be\nchecked against a local run.\n\nThe baseline entry stores its SLA replay rather than a comparison, so it\ncomes back with `sla` populated and `prompts` empty. It is the reference\nthe rest are measured against, not a competitor with a score of its own.","operationId":"round_entry_report_v1_rounds__round_id__entries__entry_id__report_get","parameters":[{"name":"round_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Round Id"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoundEntryReportModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/weights":{"get":{"summary":"Latest Weights","description":"The newest stored weight vector. Reads only; never computes.\n\n`weights[i]` is UID `i`. Pass it to `SetWeights` with\n`uids=range(len(weights))`. A missing or all-zero row is 404: an empty\nvector is a valid on-chain instruction to pay nobody.","operationId":"latest_weights_v1_weights_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeightsModel"}}}}}}},"/v1/campaigns/{campaign_id}/submissions/{patch_hash}":{"get":{"summary":"Campaign Submission Detail","operationId":"campaign_submission_detail_v1_campaigns__campaign_id__submissions__patch_hash__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"patch_hash","in":"path","required":true,"schema":{"type":"string","title":"Patch Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDetailModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/submissions/{patch_hash}":{"get":{"summary":"Submission Detail","operationId":"submission_detail_v1_submissions__patch_hash__get","parameters":[{"name":"patch_hash","in":"path","required":true,"schema":{"type":"string","title":"Patch Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDetailModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/submissions/{patch_hash}/patch":{"get":{"summary":"Campaign Submission Patch","operationId":"campaign_submission_patch_v1_campaigns__campaign_id__submissions__patch_hash__patch_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"patch_hash","in":"path","required":true,"schema":{"type":"string","title":"Patch Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/submissions/{patch_hash}/patch":{"get":{"summary":"Submission Patch","operationId":"submission_patch_v1_submissions__patch_hash__patch_get","parameters":[{"name":"patch_hash","in":"path","required":true,"schema":{"type":"string","title":"Patch Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/submissions/{patch_hash}/build-log":{"get":{"summary":"Campaign Submission Build Log","operationId":"campaign_submission_build_log_v1_campaigns__campaign_id__submissions__patch_hash__build_log_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"patch_hash","in":"path","required":true,"schema":{"type":"string","title":"Patch Hash"}},{"name":"tail","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Tail"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/submissions/{patch_hash}/build-log":{"get":{"summary":"Submission Build Log","description":"Last `tail` lines of the durable build log (PAR-37 path), sanitized.\n\nContent is miner-influenced build output: ANSI/control chars stripped,\nserved as text/plain. Non-terminal submissions are Cache-Control: no-store\nso live tails are not held by CDN/browser caches (PAR-44).","operationId":"submission_build_log_v1_submissions__patch_hash__build_log_get","parameters":[{"name":"patch_hash","in":"path","required":true,"schema":{"type":"string","title":"Patch Hash"}},{"name":"tail","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Tail"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uploads/patch":{"post":{"summary":"Presign Patch","operationId":"presign_patch_v1_uploads_patch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignResponse"}}}},"403":{"description":"Invalid upload authorization or disqualified hotkey"},"409":{"description":"Upload UUID already contains a different patch"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BenchPhase":{"type":"string","enum":["provisioning","bootstrapping","pulling_image","downloading_model","starting_engine","correctness","sla_bench","teardown"],"title":"BenchPhase","description":"Current operation. Multi-SKU runs cycle, so this is not monotonic."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LeaderModel":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"submission_id":{"type":"string","title":"Submission Id"},"patch_hash":{"type":"string","title":"Patch Hash"},"hotkey":{"type":"string","title":"Hotkey"},"engine_image_ref":{"type":"string","title":"Engine Image Ref"},"won_at_round_id":{"type":"string","title":"Won At Round Id"},"won_at_ordinal":{"type":"integer","title":"Won At Ordinal"},"last_score":{"type":"number","title":"Last Score"},"last_scored_round_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Scored Round Id"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["campaign_id","submission_id","patch_hash","hotkey","engine_image_ref","won_at_round_id","won_at_ordinal","last_score","updated_at"],"title":"LeaderModel","description":"`GET /v1/campaigns/{campaign_id}/leader`. Detail page: full hotkey."},"PresignRequest":{"properties":{"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"hotkey":{"type":"string","maxLength":128,"minLength":8,"title":"Hotkey"},"patch_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","title":"Patch Hash"},"upload_id":{"type":"string","format":"uuid4","title":"Upload Id"},"expires_at":{"type":"integer","exclusiveMinimum":0.0,"title":"Expires At"},"network":{"type":"string","maxLength":256,"minLength":1,"title":"Network"},"netuid":{"type":"integer","maximum":65535.0,"minimum":0.0,"title":"Netuid"},"signature":{"type":"string","pattern":"^[0-9a-fA-F]{128}$","title":"Signature"}},"additionalProperties":false,"type":"object","required":["campaign_id","hotkey","patch_hash","upload_id","expires_at","network","netuid","signature"],"title":"PresignRequest"},"PresignResponse":{"properties":{"upload_url":{"type":"string","title":"Upload Url"},"retrieval_url":{"type":"string","title":"Retrieval Url"},"object_key":{"type":"string","title":"Object Key"},"expires_in":{"type":"integer","title":"Expires In"},"required_headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Required Headers"},"already_uploaded":{"type":"boolean","title":"Already Uploaded","default":false}},"type":"object","required":["upload_url","retrieval_url","object_key","expires_in","required_headers"],"title":"PresignResponse"},"PromptScoreModel":{"properties":{"request_id":{"type":"string","title":"Request Id"},"speedup":{"type":"number","title":"Speedup"},"aligned_tokens":{"type":"integer","title":"Aligned Tokens"},"baseline_e2e_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Baseline E2E S"},"candidate_e2e_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Candidate E2E S"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"candidate_failed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Candidate Failed"},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens"},"input_length_group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Length Group"}},"type":"object","required":["request_id","speedup","aligned_tokens"],"title":"PromptScoreModel","description":"One prompt's contribution to an entry's score.\n\n`speedup` is the fraction faster than baseline at the same output token\ncount: 0.35 is 35 percent faster, and a negative value is slower. A\nnon-null `reason` means the prompt was forced to 0.0 and did not measure\nanything; a 0.0 with no reason is a real result meaning baseline speed."},"PromptSummaryModel":{"properties":{"total":{"type":"integer","title":"Total"},"scored":{"type":"integer","title":"Scored"},"zeroed":{"type":"integer","title":"Zeroed"},"below_tolerance":{"type":"integer","title":"Below Tolerance"},"zeroed_by_reason":{"additionalProperties":{"type":"integer"},"type":"object","title":"Zeroed By Reason"}},"type":"object","required":["total","scored","zeroed","below_tolerance","zeroed_by_reason"],"title":"PromptSummaryModel","description":"Counts over `prompts`, so the headline number needs no client math."},"ReportWorkloadModel":{"properties":{"algo_version":{"type":"integer","title":"Algo Version"},"request_interval_ms":{"type":"integer","title":"Request Interval Ms"},"enable_thinking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Thinking"},"max_model_len":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Model Len"}},"type":"object","required":["algo_version","request_interval_ms"],"title":"ReportWorkloadModel"},"RoundDetailModel":{"properties":{"id":{"type":"string","title":"Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"ordinal":{"type":"integer","title":"Ordinal"},"status":{"type":"string","title":"Status"},"void_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Void Reason"},"void_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Void Detail"},"gpu_sku":{"type":"string","title":"Gpu Sku"},"seed_block":{"type":"integer","title":"Seed Block"},"seed_block_hash":{"type":"string","title":"Seed Block Hash"},"seed_hex":{"type":"string","title":"Seed Hex"},"sampled_trace_sha256":{"type":"string","title":"Sampled Trace Sha256"},"scoring_rule":{"additionalProperties":true,"type":"object","title":"Scoring Rule"},"incumbent_submission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Incumbent Submission Id"},"winner_submission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Submission Id"},"leader_changed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Leader Changed"},"baseline_drift":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Baseline Drift"},"phase":{"anyOf":[{"$ref":"#/components/schemas/BenchPhase"},{"type":"string"},{"type":"null"}],"title":"Phase"},"phase_started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase Started At"},"heartbeat_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heartbeat At"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress"},"created_at":{"type":"string","title":"Created At"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"entries":{"items":{"$ref":"#/components/schemas/RoundEntryModel"},"type":"array","title":"Entries"}},"type":"object","required":["id","campaign_id","ordinal","status","gpu_sku","seed_block","seed_block_hash","seed_hex","sampled_trace_sha256","scoring_rule","created_at","entries"],"title":"RoundDetailModel","description":"`GET /v1/rounds/{round_id}`. `phase` is live while the round runs."},"RoundEntryModel":{"properties":{"id":{"type":"integer","title":"Id"},"submission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submission Id"},"patch_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Patch Hash"},"hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hotkey"},"role":{"type":"string","title":"Role"},"engine_image_ref":{"type":"string","title":"Engine Image Ref"},"status":{"type":"string","title":"Status"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"disqualify_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disqualify Reason"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","role","engine_image_ref","status"],"title":"RoundEntryModel","description":"One image run inside a round. Evidence URLs stay behind their gate.\n\n`role` and `status` are `round_entries` values; the vocabularies are\n`round.rank.ENTRY_ROLES` and `round.rank.ENTRY_STATUSES`. `score` is null\nfor a disqualified or infra-failed entry; 0.0 means baseline speed."},"RoundEntryReportModel":{"properties":{"round_id":{"type":"string","title":"Round Id"},"round_ordinal":{"type":"integer","title":"Round Ordinal"},"entry_id":{"type":"integer","title":"Entry Id"},"submission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submission Id"},"patch_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Patch Hash"},"hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hotkey"},"role":{"type":"string","title":"Role"},"status":{"type":"string","title":"Status"},"engine_image_ref":{"type":"string","title":"Engine Image Ref"},"image_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Digest"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"engine_crashed":{"type":"boolean","title":"Engine Crashed","default":false},"scoring_rule":{"additionalProperties":true,"type":"object","title":"Scoring Rule"},"prompt_summary":{"$ref":"#/components/schemas/PromptSummaryModel"},"score_breakdown":{"anyOf":[{"$ref":"#/components/schemas/ScoreBreakdownModel"},{"type":"null"}]},"workload":{"anyOf":[{"$ref":"#/components/schemas/ReportWorkloadModel"},{"type":"null"}]},"prompts":{"items":{"$ref":"#/components/schemas/PromptScoreModel"},"type":"array","title":"Prompts"},"sla":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Sla"},"correctness":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Correctness"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["round_id","round_ordinal","entry_id","role","status","engine_image_ref","scoring_rule","prompt_summary","prompts"],"title":"RoundEntryReportModel","description":"`GET /v1/rounds/{round_id}/entries/{entry_id}/report`.\n\nThe arithmetic behind one entry's score. `prompts` is empty for an entry\nthat never reached scoring, which is every disqualified and infra-failed\nentry: read `status` and `reason` for why."},"RoundSummaryModel":{"properties":{"id":{"type":"string","title":"Id"},"ordinal":{"type":"integer","title":"Ordinal"},"status":{"type":"string","title":"Status"},"void_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Void Reason"},"void_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Void Detail"},"gpu_sku":{"type":"string","title":"Gpu Sku"},"seed_block":{"type":"integer","title":"Seed Block"},"seed_block_hash":{"type":"string","title":"Seed Block Hash"},"entry_count":{"type":"integer","title":"Entry Count"},"leader_changed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Leader Changed"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","ordinal","status","gpu_sku","seed_block","seed_block_hash","entry_count","created_at"],"title":"RoundSummaryModel","description":"One row of `GET /v1/campaigns/{campaign_id}/rounds`."},"RoundsPageModel":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"rounds":{"items":{"$ref":"#/components/schemas/RoundSummaryModel"},"type":"array","title":"Rounds"}},"type":"object","required":["campaign_id","total","limit","offset","rounds"],"title":"RoundsPageModel"},"ScoreBreakdownModel":{"properties":{"median_speedup":{"type":"number","title":"Median Speedup"},"scheduled_requests":{"type":"integer","title":"Scheduled Requests"},"failed_requests":{"type":"integer","title":"Failed Requests"},"failure_rate":{"type":"number","title":"Failure Rate"},"failure_penalty":{"type":"number","title":"Failure Penalty"},"penalty":{"type":"number","title":"Penalty"}},"type":"object","required":["median_speedup","scheduled_requests","failed_requests","failure_rate","failure_penalty","penalty"],"title":"ScoreBreakdownModel"},"ScorePointEntryModel":{"properties":{"submission_id":{"type":"string","title":"Submission Id"},"hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hotkey"},"role":{"type":"string","title":"Role"},"status":{"type":"string","title":"Status"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"}},"type":"object","required":["submission_id","role","status"],"title":"ScorePointEntryModel","description":"One scatter dot. List response, so the hotkey is truncated."},"ScorePointModel":{"properties":{"round_id":{"type":"string","title":"Round Id"},"ordinal":{"type":"integer","title":"Ordinal"},"status":{"type":"string","title":"Status"},"leader_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Leader Score"},"entries":{"items":{"$ref":"#/components/schemas/ScorePointEntryModel"},"type":"array","title":"Entries"}},"type":"object","required":["round_id","ordinal","status","entries"],"title":"ScorePointModel","description":"One round ordinal on the chart. A void round leaves a gap, not a zero."},"ScoreProgressModel":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"points":{"items":{"$ref":"#/components/schemas/ScorePointModel"},"type":"array","title":"Points"}},"type":"object","required":["campaign_id","points"],"title":"ScoreProgressModel"},"SubmissionDetailModel":{"properties":{"submission":{"additionalProperties":true,"type":"object","title":"Submission"},"latest_state":{"anyOf":[{"$ref":"#/components/schemas/SubmissionState"},{"type":"string"},{"type":"null"}],"title":"Latest State"},"jobs":{"items":{"$ref":"#/components/schemas/SubmissionJobModel"},"type":"array","title":"Jobs"},"events":{"items":{"$ref":"#/components/schemas/SubmissionEventModel"},"type":"array","title":"Events"},"round":{"anyOf":[{"$ref":"#/components/schemas/SubmissionRoundModel"},{"type":"null"}]}},"type":"object","required":["submission","jobs","events"],"title":"SubmissionDetailModel","description":"`submission` stays loose: no state field, no payoff."},"SubmissionEventModel":{"properties":{"state":{"anyOf":[{"$ref":"#/components/schemas/SubmissionState"},{"type":"string"}],"title":"State"},"evidence_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Ref"},"detail":{"additionalProperties":true,"type":"object","title":"Detail"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["state","created_at"],"title":"SubmissionEventModel"},"SubmissionJobModel":{"properties":{"status":{"type":"string","title":"Status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"phase":{"anyOf":[{"$ref":"#/components/schemas/BenchPhase"},{"type":"string"},{"type":"null"}],"title":"Phase"},"phase_started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase Started At"},"heartbeat_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heartbeat At"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress"}},"type":"object","required":["status"],"title":"SubmissionJobModel"},"SubmissionRoundModel":{"properties":{"round_id":{"type":"string","title":"Round Id"},"ordinal":{"type":"integer","title":"Ordinal"},"status":{"type":"string","title":"Status"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"disqualify_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disqualify Reason"}},"type":"object","required":["round_id","ordinal","status"],"title":"SubmissionRoundModel","description":"A submission's newest round entry: where it ran and how it did.\n\n`status` is the entry verdict (`round_entries.status`). A submission that\nnever reached a round has no model at all, and `rejected` is reported by\n`latest_state`: a rejected submission never got an entry."},"SubmissionState":{"type":"string","enum":["committed","picked_up","fetched","verified","applied","surface_ok","building","image_pushed","built","bench_queued","round_assigned","infra_failed","scored","disqualified","rejected","rejected_duplicate"],"title":"SubmissionState","description":"The pipeline state vocabulary. This is the only definition.\n\n`campaign.store.KNOWN_SUBMISSION_STATES`, the OpenAPI schema, and the\nfrontend `SubmissionState` union all derive from these members. Adding a\nstate here is the whole change on the backend. Member order is the pipeline\norder and is used for `/v1/stats` bucket ordering, so append new states in\nthe position the worker reaches them."},"SubmissionSummaryModel":{"properties":{"id":{"type":"string","title":"Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"patch_hash":{"type":"string","title":"Patch Hash"},"hotkey":{"type":"string","title":"Hotkey"},"baseline_commit":{"type":"string","title":"Baseline Commit"},"retrieval_url":{"type":"string","title":"Retrieval Url"},"commit_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commit Block"},"committed_at":{"type":"string","title":"Committed At"},"engine_image_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Engine Image Ref"},"latest_state":{"anyOf":[{"$ref":"#/components/schemas/SubmissionState"},{"type":"string"},{"type":"null"}],"title":"Latest State"},"round":{"anyOf":[{"$ref":"#/components/schemas/SubmissionRoundModel"},{"type":"null"}]},"patch_reveal_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Patch Reveal At"},"patch_download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Patch Download Url"}},"type":"object","required":["id","campaign_id","patch_hash","hotkey","baseline_commit","retrieval_url","committed_at"],"title":"SubmissionSummaryModel","description":"One row of `GET /v1/campaigns/{campaign_id}/submissions`."},"SubmissionsPageModel":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"submissions":{"items":{"$ref":"#/components/schemas/SubmissionSummaryModel"},"type":"array","title":"Submissions"}},"type":"object","required":["campaign_id","total","limit","offset","submissions"],"title":"SubmissionsPageModel"},"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"},"WeightBreakdownModel":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hotkey"},"uid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Uid"},"blocks_held":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blocks Held"},"weight":{"type":"number","title":"Weight"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["campaign_id","weight"],"title":"WeightBreakdownModel","description":"One campaign's contribution, so the vector is auditable, not magic.\n\n`uid` is what the metagraph reported at compute time and is NOT\nauthoritative afterwards: a UID is a lease that deregistration reassigns,\nso nobody may cache it. Resolve a hotkey against the live metagraph.\n\n`note` says why a share was withheld (`vacant`, `closed`, `deregistered`)\nand is null for a share that paid. A withheld share burns."},"WeightsModel":{"properties":{"computed_at_block":{"type":"integer","title":"Computed At Block"},"version_key":{"type":"integer","title":"Version Key"},"burn_uid":{"type":"integer","title":"Burn Uid"},"weights":{"items":{"type":"number"},"type":"array","title":"Weights"},"breakdown":{"items":{"$ref":"#/components/schemas/WeightBreakdownModel"},"type":"array","title":"Breakdown"}},"type":"object","required":["computed_at_block","version_key","burn_uid","weights","breakdown"],"title":"WeightsModel","description":"`GET /v1/weights`. `weights[i]` is the weight for UID `i`."}}}}