{"openapi":"3.1.0","info":{"title":"SimForge Cloud API","version":"1.0.0","description":"The public SimForge API: what `simforge --cloud`, `simforge login` and the Python client call. Authenticate with a bearer token: the access token `simforge login` stores, an AI agent's access token (its recipe is `/auth.md`), or an `sfk_` API key. A `/api/v1` 401 carries `WWW-Authenticate: Bearer resource_metadata=\"<host>/.well-known/oauth-protected-resource\"`. `/api/v1` errors are an `ErrorEnvelope`; `/api/cli` and `/agent` errors are an OAuth error object.","license":{"name":"Apache-2.0","identifier":"Apache-2.0"}},"components":{"schemas":{"ApiKeyId":{"type":"string","pattern":"^key_[0-9A-HJKMNP-TV-Z]{26}$"},"ApiKeyListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"createdBy":{"type":"string"},"createdAt":{"type":"string"},"lastUsedAt":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"revokedAt":{"type":["string","null"]}},"required":["id","name","scopes","createdBy","createdAt","lastUsedAt","expiresAt","revokedAt"]}}},"required":["data"]},"CreateApiKeyRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"scopes":{"type":"array","items":{"type":"string"},"minItems":1},"expiresInDays":{"type":"integer","exclusiveMinimum":0,"maximum":3650}},"required":["name","scopes"]},"CreateApiKeyResponse":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"createdBy":{"type":"string"},"createdAt":{"type":"string"},"lastUsedAt":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"revokedAt":{"type":["string","null"]}},"required":["id","name","scopes","createdBy","createdAt","lastUsedAt","expiresAt","revokedAt"]},"secret":{"type":"string"}},"required":["key","secret"]},"ArtifactDownload":{"type":"object","properties":{"url":{"type":"string","minLength":1},"expiresAt":{"type":"string"},"sha256":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"mediaType":{"type":"string"}},"required":["url","expiresAt","sha256","sizeBytes","mediaType"]},"ArtifactId":{"type":"string","pattern":"^art_[0-9A-HJKMNP-TV-Z]{26}$"},"ArtifactList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"mediaType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"sha256":{"type":"string"},"state":{"type":"string","enum":["available"]},"createdAt":{"type":"string"},"expiresAt":{"type":["string","null"]}},"required":["id","kind","name","mediaType","sizeBytes","sha256","state","createdAt","expiresAt"]}}},"required":["data"]},"RunReplay":{"type":"object","properties":{"runId":{"type":"string"},"scenarioId":{"type":"string"},"revisionId":{"type":"string"},"mapVersionId":{"type":"string"},"egoActorId":{"type":["string","null"]},"timelineSha256":{"type":"string"},"timeline":{"type":"object","properties":{"artifactId":{"type":"string"},"sha256":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"url":{"type":"string","minLength":1},"expiresAt":{"type":"string"}},"required":["artifactId","sha256","sizeBytes","url","expiresAt"]},"plan2d":{"type":["object","null"],"properties":{"sha256":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"url":{"type":"string","minLength":1}},"required":["sha256","sizeBytes","url"]}},"required":["runId","scenarioId","revisionId","mapVersionId","egoActorId","timelineSha256","timeline","plan2d"]},"Artifact":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"mediaType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"sha256":{"type":"string"},"state":{"type":"string","enum":["available"]},"createdAt":{"type":"string"},"expiresAt":{"type":["string","null"]}},"required":["id","kind","name","mediaType","sizeBytes","sha256","state","createdAt","expiresAt"]},"CloudId":{"type":"string","pattern":"^(?:run_|job_|art_|key_|req_)[0-9A-HJKMNP-TV-Z]{26}$"},"CloudScope":{"type":"string","enum":["maps:read","scenarios:read","scenarios:write","datasets:read","runs:read","runs:write","artifacts:read","usage:read","keys:admin","runtime:read"]},"DryRunResponse":{"type":"object","properties":{"dryRun":{"type":"boolean","enum":[true]},"type":{"type":"string"},"input":{},"requestSha256":{"type":"string"},"jobs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"kind":{"type":"string"},"input":{},"dependsOn":{"type":"array","items":{"type":"string"}},"maxAttempts":{"type":"integer","exclusiveMinimum":0}},"required":["key","kind","dependsOn"]}},"estimate":{"type":"object","properties":{"jobs":{"type":"integer","minimum":0},"seconds":{"type":"number","minimum":0}},"required":["jobs","seconds"]},"costEstimateCents":{"type":"integer","minimum":0},"costBreakdown":{"type":"array","items":{"type":"object","properties":{"jobKey":{"type":"string"},"kind":{"type":"string"},"cents":{"type":"integer","minimum":0}},"required":["jobKey","kind","cents"]}},"maxCost":{"type":["object","null"],"properties":{"limitCents":{"type":"integer","minimum":0},"exceeded":{"type":"boolean"}},"required":["limitCents","exceeded"],"description":"The request's maxCostCents and whether the estimate exceeds it (the same request without dryRun would be refused budget_exceeded); null when no maxCostCents was sent. A dry run over the cap is still priced, never refused."},"cancellation":{"type":"object","properties":{"queuedCostCents":{"type":"number","enum":[0]},"failedRunCostCents":{"type":"number","enum":[0]},"partialCharge":{"type":"string","enum":["succeeded_jobs_only"]},"wholeRunPriceRequiresSuccess":{"type":"boolean"}},"required":["queuedCostCents","failedRunCostCents","partialCharge","wholeRunPriceRequiresSuccess"]}},"required":["dryRun","type","requestSha256","jobs","estimate","costEstimateCents","costBreakdown","maxCost","cancellation"]},"ErrorCode":{"type":"string","enum":["bad_request","validation_failed","unauthorized","insufficient_scope","workspace_required","not_found","conflict","gone","idempotency_conflict","lease_lost","budget_exceeded","max_cost_required","idempotency_key_required","insufficient_credits","checkout_closed","cloud_not_open","email_unverified","evaluation_launch_disabled","rate_limited","internal_error"]},"ErrorDetail":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","validation_failed","unauthorized","insufficient_scope","workspace_required","not_found","conflict","gone","idempotency_conflict","lease_lost","budget_exceeded","max_cost_required","idempotency_key_required","insufficient_credits","checkout_closed","cloud_not_open","email_unverified","evaluation_launch_disabled","rate_limited","internal_error"]},"reason":{"type":"string"},"detail":{},"path":{"type":"string"},"requestId":{"type":"string","pattern":"^req_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["code","reason","requestId"]},"ErrorEnvelope":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","validation_failed","unauthorized","insufficient_scope","workspace_required","not_found","conflict","gone","idempotency_conflict","lease_lost","budget_exceeded","max_cost_required","idempotency_key_required","insufficient_credits","checkout_closed","cloud_not_open","email_unverified","evaluation_launch_disabled","rate_limited","internal_error"]},"reason":{"type":"string"},"detail":{},"path":{"type":"string"},"requestId":{"type":"string","pattern":"^req_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["code","reason","requestId"]}},"required":["error"]},"HealthResponse":{"type":"object","properties":{"status":{"type":"string","enum":["ok"]}},"required":["status"]},"StatusResponse":{"type":"object","properties":{"updatedAt":{"type":"string"},"components":{"type":"array","items":{"$ref":"#/components/schemas/StatusComponent"}},"workers":{"type":"array","items":{"$ref":"#/components/schemas/StatusWorkers"}},"queues":{"type":"array","items":{"$ref":"#/components/schemas/StatusQueue"}},"incidents":{"type":"array","items":{"$ref":"#/components/schemas/StatusIncident"}}},"required":["updatedAt","components","workers","queues","incidents"]},"StatusComponent":{"type":"object","properties":{"id":{"type":"string","enum":["database","storage","email","auth","cli-downloads"]},"label":{"type":"string"},"state":{"type":"string","enum":["up","degraded","down","unchecked"]},"note":{"type":"string"}},"required":["id","label","state"]},"StatusWorkers":{"type":"object","properties":{"class":{"type":"string","enum":["cpu","gpu"]},"env":{"type":"string","enum":["dev","prod","local"]},"pool":{"type":"string","enum":["cloud","render"]},"online":{"type":"integer","minimum":0},"busy":{"type":"integer","minimum":0},"incompleteMaps":{"type":"integer","minimum":0}},"required":["class","env","pool","online","busy"]},"StatusQueue":{"type":"object","properties":{"source":{"type":"string","enum":["cloud","simulation","render"]},"kind":{"type":"string"},"queued":{"type":"integer","minimum":0},"oldestWaitSeconds":{"type":"integer","minimum":0},"etaSeconds":{"type":"integer","minimum":0}},"required":["source","kind","queued","oldestWaitSeconds"]},"StatusIncident":{"type":"object","properties":{"title":{"type":"string"},"since":{"type":"string"},"state":{"type":"string","enum":["investigating","identified","monitoring","resolved"]}},"required":["title","since","state"]},"JobId":{"type":"string","pattern":"^job_[0-9A-HJKMNP-TV-Z]{26}$"},"MeResponse":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["id","email","name"]},"workspace":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}},"required":["id","name","role"]},"principal":{"type":"object","properties":{"kind":{"type":"string","enum":["session","cli","api_key"]},"scopes":{"type":"array","items":{"type":"string"}}},"required":["kind","scopes"]}},"required":["user","workspace","principal"]},"Principal":{"type":"object","properties":{"kind":{"type":"string","enum":["session","cli","api_key"]},"userId":{"type":"string","minLength":1},"workspaceId":{"type":["string","null"],"minLength":1},"scopes":{"type":"array","items":{"type":"string","enum":["maps:read","scenarios:read","scenarios:write","datasets:read","runs:read","runs:write","artifacts:read","usage:read","keys:admin","runtime:read"]}},"credentialId":{"type":"string","minLength":1}},"required":["kind","userId","workspaceId","scopes","credentialId"]},"RequestId":{"type":"string","pattern":"^req_[0-9A-HJKMNP-TV-Z]{26}$"},"PublicApiKey":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"createdBy":{"type":"string"},"createdAt":{"type":"string"},"lastUsedAt":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"revokedAt":{"type":["string","null"]}},"required":["id","name","scopes","createdBy","createdAt","lastUsedAt","expiresAt","revokedAt"]},"WorkspacesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}},"required":["id","name","role"]}}},"required":["data"]},"RunCreateRequest":{"type":"object","properties":{"type":{"type":"string","minLength":1},"input":{"description":"The run type's input. For `type: \"render\"` it is a RenderRunInput; the other run types' inputs are objects of their own.","anyOf":[{"$ref":"#/components/schemas/RenderRunInput"},{"type":"object","additionalProperties":true}]},"dryRun":{"type":"boolean"},"maxCostCents":{"type":"integer","minimum":0,"description":"Required for non-dry submissions with a positive cost estimate; the maximum approved price in cents."}},"required":["type"],"examples":[{"type":"render","input":{"scenarioId":"<scenario-id>","engine":"3d","preset":"showcase","rig":{"schema":"simforge.render-rig/v1","sources":[{"actorId":"ego","sensorId":"cam-front","outputName":"cam-front","transform":{"position":{"x":1.6,"y":1.45,"z":0},"rotation":{"yawRad":0,"pitchRad":-0.0524,"rollRad":0}},"modality":"rgb","attributes":{"width":1280,"height":720,"fps":20,"horizontalFovDeg":90,"nearM":0.05,"farM":1000}}]}},"maxCostCents":100}]},"RunEvent":{"type":"object","properties":{"runId":{"type":"string"},"seq":{"type":"integer","exclusiveMinimum":0},"type":{"type":"string"},"data":{},"createdAt":{"type":"string"}},"required":["runId","seq","type","createdAt"]},"RunEventsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"runId":{"type":"string"},"seq":{"type":"integer","exclusiveMinimum":0},"type":{"type":"string"},"data":{},"createdAt":{"type":"string"}},"required":["runId","seq","type","createdAt"]}},"nextAfter":{"type":"integer","minimum":0}},"required":["data","nextAfter"]},"RunPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"idempotencyKey":{"type":["string","null"],"description":"Caller-supplied run identity; qualification namespaces are excluded from evaluation suites."},"type":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","partial","failed","cancelled"]},"input":{},"createdAt":{"type":"string"},"startedAt":{"type":["string","null"]},"finishedAt":{"type":["string","null"]},"createdBy":{"type":"string"},"costEstimateCents":{"type":["integer","null"],"minimum":0},"costCents":{"type":["integer","null"],"minimum":0},"providerCostCents":{"type":["integer","null"],"minimum":0},"providerCostEvidence":{"type":["array","null"],"items":{"type":"object","properties":{},"additionalProperties":{}}},"billing":{"type":"object","properties":{"hold":{"type":["string","null"],"enum":["pending","released",null]},"heldCents":{"type":"integer","minimum":0},"chargedCents":{"type":"integer","minimum":0}},"required":["hold","heldCents","chargedCents"]},"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string","enum":["queued","leased","running","succeeded","failed","cancelled","skipped"]},"attempt":{"type":"integer","minimum":0},"maxAttempts":{"type":"integer","exclusiveMinimum":0},"leaseExpiresAt":{"type":["string","null"]},"workerClass":{"type":["string","null"],"enum":["cpu","gpu",null]},"queue":{"type":["object","null"],"properties":{"blockedBy":{"type":"array","items":{"type":"string"}},"ahead":{"type":["integer","null"],"minimum":0},"etaSeconds":{"type":["integer","null"],"minimum":0}},"required":["blockedBy","ahead","etaSeconds"]},"progress":{},"errorCode":{"type":["string","null"]},"errorReason":{"type":["string","null"]},"providerCostCents":{"type":["integer","null"],"minimum":0},"providerCostEvidence":{"type":["object","null"],"properties":{},"additionalProperties":{}},"startedAt":{"type":["string","null"]},"finishedAt":{"type":["string","null"]}},"required":["id","kind","status","attempt","maxAttempts","leaseExpiresAt","workerClass","queue","errorCode","errorReason","providerCostCents","providerCostEvidence","startedAt","finishedAt"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"object","properties":{},"additionalProperties":{}},"jobId":{"type":"string"}},"required":["code","message","jobId"]}},"result":{},"unavailable":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"description":"Present when this run's artifacts and result could not be read: `result` is null and its artifacts are left out, while every other field still holds. The rest of a page is unaffected."}},"required":["id","type","status","createdAt","startedAt","finishedAt","createdBy","costEstimateCents","costCents","providerCostCents","providerCostEvidence","billing","jobs","warnings"]}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"]},"Run":{"type":"object","properties":{"id":{"type":"string"},"idempotencyKey":{"type":["string","null"],"description":"Caller-supplied run identity; qualification namespaces are excluded from evaluation suites."},"type":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","partial","failed","cancelled"]},"input":{},"createdAt":{"type":"string"},"startedAt":{"type":["string","null"]},"finishedAt":{"type":["string","null"]},"createdBy":{"type":"string"},"costEstimateCents":{"type":["integer","null"],"minimum":0},"costCents":{"type":["integer","null"],"minimum":0},"providerCostCents":{"type":["integer","null"],"minimum":0},"providerCostEvidence":{"type":["array","null"],"items":{"type":"object","properties":{},"additionalProperties":{}}},"billing":{"type":"object","properties":{"hold":{"type":["string","null"],"enum":["pending","released",null]},"heldCents":{"type":"integer","minimum":0},"chargedCents":{"type":"integer","minimum":0}},"required":["hold","heldCents","chargedCents"]},"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string","enum":["queued","leased","running","succeeded","failed","cancelled","skipped"]},"attempt":{"type":"integer","minimum":0},"maxAttempts":{"type":"integer","exclusiveMinimum":0},"leaseExpiresAt":{"type":["string","null"]},"workerClass":{"type":["string","null"],"enum":["cpu","gpu",null]},"queue":{"type":["object","null"],"properties":{"blockedBy":{"type":"array","items":{"type":"string"}},"ahead":{"type":["integer","null"],"minimum":0},"etaSeconds":{"type":["integer","null"],"minimum":0}},"required":["blockedBy","ahead","etaSeconds"]},"progress":{},"errorCode":{"type":["string","null"]},"errorReason":{"type":["string","null"]},"providerCostCents":{"type":["integer","null"],"minimum":0},"providerCostEvidence":{"type":["object","null"],"properties":{},"additionalProperties":{}},"startedAt":{"type":["string","null"]},"finishedAt":{"type":["string","null"]}},"required":["id","kind","status","attempt","maxAttempts","leaseExpiresAt","workerClass","queue","errorCode","errorReason","providerCostCents","providerCostEvidence","startedAt","finishedAt"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"object","properties":{},"additionalProperties":{}},"jobId":{"type":"string"}},"required":["code","message","jobId"]}},"result":{},"unavailable":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"description":"Present when this run's artifacts and result could not be read: `result` is null and its artifacts are left out, while every other field still holds. The rest of a page is unaffected."}},"required":["id","type","status","createdAt","startedAt","finishedAt","createdBy","costEstimateCents","costCents","providerCostCents","providerCostEvidence","billing","jobs","warnings"]},"DatasetFilesRequest":{"type":"object","properties":{"q":{"type":"string","description":"Free-text search, as in the library's search box."},"filter":{"type":"string","description":"Library filters: space-separated `facet:value[,value]` tokens, e.g. `grade:A tag:cut-in`."},"sourceLog":{"type":"string","description":"Only the scenarios of one recorded drive (its recording digest or source id)."},"ids":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Exactly these scenarios (document ids); not with q, filter or sourceLog."},"include":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"`renders[:training|showcase|schematic]`, `labels`, `gt`, `recordings`, or `scenarios` for none of them; default `renders:training`."},"passes":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Keep only these render modalities: rgb, depth, semantic, instance, lidar, radar."},"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Files per page (whole scenarios, at least one); default 1000."},"format":{"type":"string","enum":["json","urls"],"description":"`urls`: the whole selection as an aria2c input file of 24-hour links (text/plain)."},"dryRun":{"type":"boolean","description":"Counts and size of the whole selection; no links, nothing prepared."}}},"DatasetFilesPage":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.dataset-files/v1"]},"dataset":{"$ref":"#/components/schemas/DatasetFilesDataset"},"selection":{"$ref":"#/components/schemas/DatasetFilesSelection"},"include":{"$ref":"#/components/schemas/DatasetFilesInclude"},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFilesScenario"},"description":"This page's scenarios.jsonl rows, by document id."},"files":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFile"},"description":"Every file of this page's scenarios, and the recordings they bring."},"excluded":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFilesExclusion"}},"nextCursor":{"type":["string","null"]}},"required":["schema","dataset","selection","include","scenarios","files","excluded","nextCursor"]},"DatasetFilesDataset":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"DatasetFilesSelection":{"oneOf":[{"$ref":"#/components/schemas/DatasetFilesWholeDataset"},{"$ref":"#/components/schemas/DatasetFilesFiltered"},{"$ref":"#/components/schemas/DatasetFilesDocuments"}],"discriminator":{"propertyName":"kind","mapping":{"dataset":"#/components/schemas/DatasetFilesWholeDataset","query":"#/components/schemas/DatasetFilesFiltered","documents":"#/components/schemas/DatasetFilesDocuments"}}},"DatasetFilesWholeDataset":{"type":"object","properties":{"kind":{"type":"string","enum":["dataset"]}},"required":["kind"]},"DatasetFilesFiltered":{"type":"object","properties":{"kind":{"type":"string","enum":["query"]},"query":{"$ref":"#/components/schemas/DatasetFilesQuery"}},"required":["kind","query"]},"DatasetFilesQuery":{"type":"object","properties":{"q":{"type":"string"},"filters":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"sourceLogId":{"type":["string","null"]}},"required":["q","filters","sourceLogId"]},"DatasetFilesDocuments":{"type":"object","properties":{"kind":{"type":"string","enum":["documents"]},"documentIds":{"type":"array","items":{"type":"string"}}},"required":["kind","documentIds"]},"DatasetFilesInclude":{"type":"object","properties":{"renders":{"$ref":"#/components/schemas/DatasetFilesRenders"},"labels":{"type":"boolean"},"groundTruth":{"type":"boolean"},"recordings":{"type":"boolean"}},"required":["renders","labels","groundTruth","recordings"]},"DatasetFilesRenders":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"string","enum":["training","showcase","schematic"]}},"modalities":{"type":["array","null"],"items":{"type":"string","enum":["rgb","depth","semantic","instance","lidar","radar"]}}},"required":["presets","modalities"]},"DatasetFilesScenario":{"type":"object","properties":{"id":{"type":"string"},"revisionId":{"type":"string"},"title":{"type":"string"},"dir":{"type":"string"},"map":{"$ref":"#/components/schemas/DatasetFilesMap"},"grade":{"type":["object","null"],"properties":{"tier":{"type":"string"},"basis":{"type":["string","null"]}},"required":["tier","basis"]},"tags":{"type":"array","items":{"type":"string"}},"split":{"type":"string"},"lineage":{"$ref":"#/components/schemas/DatasetFilesLineage"},"licence":{"type":["string","null"]},"simulation":{"type":"object","properties":{"simKey":{"type":"string"},"engineSemVer":{"type":"string"},"resolvedInputDigest":{"type":"string"}},"required":["simKey","engineSemVer","resolvedInputDigest"]},"recording":{"type":["string","null"],"description":"The source drive, when `recordings` is included."},"recordings":{"type":"array","items":{"type":"string"},"description":"The recordings the document pins (always pulled: the document replays them)."},"renders":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFilesRender"}},"members":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFilesMember"}}},"required":["id","revisionId","title","dir","map","grade","tags","split","lineage","licence","simulation","recording","recordings","renders","members"]},"DatasetFilesMap":{"type":"object","properties":{"versionId":{"type":"string"},"name":{"type":["string","null"]},"sourceMapId":{"type":["string","null"]},"xodrSha256":{"type":["string","null"]}},"required":["versionId","name","sourceMapId","xodrSha256"]},"DatasetFilesLineage":{"type":"object","properties":{"derivationKind":{"type":["string","null"]},"parentId":{"type":["string","null"]},"sourceRecordingSha256":{"type":["string","null"]},"source":{"type":["object","null"],"properties":{"dataset":{"type":["string","null"]},"logId":{"type":["string","null"]},"label":{"type":["string","null"]}},"required":["dataset","logId","label"]}},"required":["derivationKind","parentId","sourceRecordingSha256","source"]},"DatasetFilesRender":{"type":"object","properties":{"id":{"type":"string"},"preset":{"type":"string","enum":["training","showcase","schematic"]},"engine":{"type":"string"},"source":{"type":"string","enum":["studio","cloud"]},"dir":{"type":"string"},"files":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFilesRenderFile"}}},"required":["id","preset","engine","source","dir","files"]},"DatasetFilesRenderFile":{"type":"object","properties":{"path":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"size":{"type":"integer","minimum":0},"role":{"type":"string"},"mediaType":{"type":"string"},"sensorId":{"type":["string","null"]},"actorId":{"type":["string","null"]},"modality":{"type":["string","null"]}},"required":["path","sha256","size","role","mediaType","sensorId","actorId","modality"]},"DatasetFilesMember":{"type":"object","properties":{"path":{"type":"string"},"role":{"type":"string","enum":["document","openscenario","trace","resolution","labels","gt-ego","gt-actors"]},"sha256":{"type":["string","null"],"pattern":"^[a-f0-9]{64}$"},"size":{"type":["integer","null"],"minimum":0}},"required":["path","role","sha256","size"]},"DatasetFile":{"type":"object","properties":{"path":{"type":"string","description":"Where the file goes in the pulled folder (relative, `/`-separated)."},"role":{"type":"string","enum":["document","openscenario","trace","resolution","labels","gt-ego","gt-actors","recording","render"]},"mediaType":{"type":"string"},"state":{"type":"string","enum":["ready","pending"],"description":"`pending`: still being prepared (no digest, size or URL yet); ask for the same page again."},"sha256":{"type":["string","null"],"pattern":"^[a-f0-9]{64}$"},"size":{"type":["integer","null"],"minimum":0},"url":{"type":["string","null"],"description":"A signed GET of the stored object; it supports HTTP range requests. Ask for the page again for a fresh one."},"urlExpiresAt":{"type":["string","null"]},"documentId":{"type":["string","null"],"description":"The scenario it belongs to; null for a recording several scenarios share."}},"required":["path","role","mediaType","state","sha256","size","url","urlExpiresAt","documentId"]},"DatasetFilesExclusion":{"type":"object","properties":{"documentId":{"type":"string"},"title":{"type":"string"},"code":{"type":"string"},"reason":{"type":"string"},"path":{"type":["string","null"],"description":"The file that cannot be produced; null when the whole scenario is left out."}},"required":["documentId","title","code","reason","path"]},"DatasetFilesSummary":{"type":"object","properties":{"dryRun":{"type":"boolean","enum":[true]},"schema":{"type":"string","enum":["simforge.dataset-files/v1"]},"dataset":{"$ref":"#/components/schemas/DatasetFilesDataset"},"selection":{"$ref":"#/components/schemas/DatasetFilesSelection"},"include":{"$ref":"#/components/schemas/DatasetFilesInclude"},"counts":{"$ref":"#/components/schemas/DatasetFilesCounts"},"excluded":{"type":"array","items":{"$ref":"#/components/schemas/DatasetFilesExclusion"},"description":"The first 100 exclusions."}},"required":["dryRun","schema","dataset","selection","include","counts","excluded"]},"DatasetFilesCounts":{"type":"object","properties":{"scenarios":{"type":"integer","minimum":0},"files":{"type":"integer","minimum":0},"bytes":{"type":"number","minimum":0,"description":"The bytes of every file whose size is known."},"pendingFiles":{"type":"integer","minimum":0,"description":"Files not prepared yet; sized when they are first listed."},"renders":{"type":"integer","minimum":0},"recordings":{"type":"integer","minimum":0},"excluded":{"type":"integer","minimum":0}},"required":["scenarios","files","bytes","pendingFiles","renders","recordings","excluded"]},"DatasetCopyCreateRequest":{"type":"object","properties":{"scope":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["dataset"]},"datasetId":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","datasetId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["query"]},"datasetId":{"type":"string","minLength":1,"maxLength":200},"query":{"type":"object","properties":{"q":{"type":"string","maxLength":500},"filters":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":500}},"sourceLogId":{"type":["string","null"],"minLength":1,"maxLength":200}},"required":["q","filters","sourceLogId"],"additionalProperties":false}},"required":["kind","datasetId","query"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["documents"]},"datasetId":{"type":"string","minLength":1,"maxLength":200},"documentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100000}},"required":["kind","datasetId","documentIds"],"additionalProperties":false}]},"target":{"anyOf":[{"type":"object","properties":{"datasetId":{"type":"string","minLength":1,"maxLength":200}},"required":["datasetId"],"additionalProperties":false},{"type":"object","properties":{"newDatasetName":{"type":"string","minLength":1,"maxLength":200}},"required":["newDatasetName"],"additionalProperties":false}]},"dryRun":{"type":"boolean"}},"required":["scope"],"additionalProperties":false},"DatasetCopyEstimate":{"type":"object","properties":{"dryRun":{"type":"boolean","enum":[true]},"scenarios":{"type":"integer","minimum":0},"estimateSeconds":{"type":"integer","minimum":0}},"required":["dryRun","scenarios","estimateSeconds"]},"DatasetCopy":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"target":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"scope":{"type":"string","enum":["dataset","query","documents"]},"state":{"type":"string","enum":["queued","running","succeeded","failed"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":0},"done":{"type":"integer","minimum":0},"copied":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"estimateSeconds":{"type":"integer","minimum":0}},"required":["total","done","copied","skipped","failed","estimateSeconds"]},"failures":{"type":"array","items":{"type":"object","properties":{"scenarioId":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["scenarioId","code","message"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"object","properties":{},"additionalProperties":{}}},"required":["code","message"]}},"error":{"type":["object","null"],"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"finishedAt":{"type":["string","null"]}},"required":["id","source","target","scope","state","progress","failures","warnings","error","createdAt","updatedAt","finishedAt"]},"DatasetCopyList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"target":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"scope":{"type":"string","enum":["dataset","query","documents"]},"state":{"type":"string","enum":["queued","running","succeeded","failed"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":0},"done":{"type":"integer","minimum":0},"copied":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"estimateSeconds":{"type":"integer","minimum":0}},"required":["total","done","copied","skipped","failed","estimateSeconds"]},"failures":{"type":"array","items":{"type":"object","properties":{"scenarioId":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["scenarioId","code","message"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"object","properties":{},"additionalProperties":{}}},"required":["code","message"]}},"error":{"type":["object","null"],"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"finishedAt":{"type":["string","null"]}},"required":["id","source","target","scope","state","progress","failures","warnings","error","createdAt","updatedAt","finishedAt"]}}},"required":["data"]},"UsageDay":{"type":"object","properties":{"day":{"type":"string"},"runs":{"type":"integer","minimum":0},"costCents":{"type":"integer","minimum":0},"byType":{"type":"object","additionalProperties":{"type":"object","properties":{"runs":{"type":"integer","minimum":0},"costCents":{"type":"integer","minimum":0}},"required":["runs","costCents"]}}},"required":["day","runs","costCents","byType"]},"EvaluationCreateRequest":{"type":"object","properties":{"renderRunId":{"type":"string","minLength":1,"maxLength":200},"predictionIntervalS":{"type":"number","exclusiveMinimum":0,"default":0.5,"description":"Seconds between scored prediction instants, an exact multiple of 0.1 s; the default 0.5 is 2 Hz."},"seed":{"type":"integer","minimum":0,"default":1},"numTrajSamples":{"type":"integer","minimum":1,"maximum":64,"default":1},"maxCostCents":{"type":"integer","minimum":0},"dryRun":{"type":"boolean","default":false},"modelVersionId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$","description":"Registered model version in this workspace to evaluate instead of the default Alpamayo 1.5; its family, revision and checkpoint digest come from the registry."},"endpointId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$","description":"A registered, enabled `service` endpoint of modelVersionId. Never a URL: the host is operator-bound."},"observationContract":{"type":"object","properties":{"frameHistoryOffsetsS":{"type":"array","items":{"type":"number","maximum":0},"minItems":1,"maxItems":32},"requiresRoute":{"type":"boolean"},"frameEncoding":{"type":"string","enum":["png","jpeg"]},"egoHistoryS":{"type":"number","minimum":0.1,"maximum":10},"planAdoptDelayS":{"type":"object","properties":{"first":{"type":"number","minimum":0,"maximum":5},"later":{"type":"number","minimum":0,"maximum":5}},"required":["first","later"],"additionalProperties":false},"renderOverrides":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"}]}}},"required":["frameHistoryOffsetsS","requiresRoute"],"additionalProperties":false,"description":"The registered host's /healthz capabilities.observation, when it differs from the family default. The worker refuses unless the loaded host declares exactly this."}},"required":["renderRunId","maxCostCents"],"additionalProperties":false},"Evaluation":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["alpamayo.openloop","policy.openloop"]},"idempotencyKey":{"type":["string","null"],"description":"Caller-supplied job identity; qualification namespaces are excluded from evaluation suites."},"status":{"type":"string","enum":["queued","dispatching","dispatch_unknown","running","cancelling","succeeded","partial","failed","cancelled"]},"workspaceId":{"type":"string"},"model":{"type":"object","properties":{"family":{"type":"string","enum":["alpamayo-1.5","qwen-drive-1.0"]},"revision":{"type":"string"},"quant":{"type":"string","enum":["bf16"]}},"required":["family","revision","quant"]},"params":{"type":"object","additionalProperties":{}},"estimateCents":{"type":"object","properties":{"lowCents":{"type":"number","minimum":0},"highCents":{"type":"number","minimum":0},"basis":{"type":"string","enum":["measured","unbenchmarked"]}},"required":["lowCents","highCents","basis"]},"reservedCents":{"type":"number"},"settledCents":{"type":["number","null"]},"scored":{"type":["boolean","null"]},"result":{"type":["object","null"],"properties":{"metrics":{"type":"object","additionalProperties":{}},"artifacts":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"artifactId":{"type":"string"},"mediaType":{"type":"string"},"bytes":{"type":"number","minimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["role","artifactId","mediaType","bytes","sha256"]}}},"required":["metrics","artifacts"],"additionalProperties":{}}},"required":["id","kind","status","workspaceId","model","params","estimateCents","reservedCents","settledCents","scored","result"],"additionalProperties":{}},"EvaluationQuote":{"type":"object","properties":{"dryRun":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["alpamayo.openloop","policy.openloop"]},"renderRunId":{"type":"string"},"estimate":{"type":"object","properties":{"lowCents":{"type":"number","minimum":0},"highCents":{"type":"number","minimum":0},"basis":{"type":"string","enum":["measured","unbenchmarked"]}},"required":["lowCents","highCents","basis"]},"allowed":{"type":"boolean"},"refusal":{"type":["object","null"],"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"availableCreditsCents":{"type":"number"},"concurrency":{"type":"object","properties":{"active":{"type":"number"},"limit":{"type":"number"}},"required":["active","limit"]},"maxCostCents":{"type":"integer","minimum":0},"cancellationTerms":{"type":"string"},"modelVersionId":{"type":"string"},"modelName":{"type":"string"}},"required":["dryRun","type","renderRunId","estimate","allowed","refusal","availableCreditsCents","concurrency","maxCostCents","cancellationTerms"]},"EvaluationPage":{"type":"object","properties":{"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["alpamayo.openloop","policy.openloop"]},"idempotencyKey":{"type":["string","null"],"description":"Caller-supplied job identity; qualification namespaces are excluded from evaluation suites."},"status":{"type":"string","enum":["queued","dispatching","dispatch_unknown","running","cancelling","succeeded","partial","failed","cancelled"]},"workspaceId":{"type":"string"},"model":{"type":"object","properties":{"family":{"type":"string","enum":["alpamayo-1.5","qwen-drive-1.0"]},"revision":{"type":"string"},"quant":{"type":"string","enum":["bf16"]}},"required":["family","revision","quant"]},"params":{"type":"object","additionalProperties":{}},"estimateCents":{"type":"object","properties":{"lowCents":{"type":"number","minimum":0},"highCents":{"type":"number","minimum":0},"basis":{"type":"string","enum":["measured","unbenchmarked"]}},"required":["lowCents","highCents","basis"]},"reservedCents":{"type":"number"},"settledCents":{"type":["number","null"]},"scored":{"type":["boolean","null"]},"result":{"type":["object","null"],"properties":{"metrics":{"type":"object","additionalProperties":{}},"artifacts":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"artifactId":{"type":"string"},"mediaType":{"type":"string"},"bytes":{"type":"number","minimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["role","artifactId","mediaType","bytes","sha256"]}}},"required":["metrics","artifacts"],"additionalProperties":{}}},"required":["id","kind","status","workspaceId","model","params","estimateCents","reservedCents","settledCents","scored","result"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["jobs","nextCursor"]},"EvaluationResult":{"type":"object","properties":{"manifestSchema":{"type":"string"},"status":{"type":"string","enum":["succeeded","partial","failed","cancelled"]},"scored":{"type":"boolean"},"evidenceRetainedUntil":{"type":["string","null"]},"manifest":{"type":"object","additionalProperties":{}},"metrics":{"type":"object","additionalProperties":{}},"artifacts":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"artifactId":{"type":"string"},"mediaType":{"type":"string"},"bytes":{"type":"number","minimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["role","artifactId","mediaType","bytes","sha256"]}}},"required":["manifestSchema","status","scored","evidenceRetainedUntil","manifest","metrics","artifacts"]},"EvaluationDownload":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string"},"sha256":{"type":"string"},"bytes":{"type":"number"},"mediaType":{"type":"string"}},"required":["url","expiresAt","sha256","bytes","mediaType"]},"UsageResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"runs":{"type":"integer","minimum":0},"costCents":{"type":"integer","minimum":0},"byType":{"type":"object","additionalProperties":{"type":"object","properties":{"runs":{"type":"integer","minimum":0},"costCents":{"type":"integer","minimum":0}},"required":["runs","costCents"]}}},"required":["day","runs","costCents","byType"]}},"totalCents":{"type":"integer","minimum":0},"balanceCents":{"type":"integer"},"dailyCapCents":{"type":["integer","null"],"minimum":0}},"required":["data","totalCents","balanceCents","dailyCapCents"]},"DatasetDetail":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"scenarioCount":{"type":"integer","minimum":0},"updatedAt":{"type":"string"},"shared":{"type":"object","properties":{"readOnly":{"type":"boolean","enum":[true]}},"required":["readOnly"]},"scenarioIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","scenarioCount","updatedAt","scenarioIds"]},"DatasetSummary":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"scenarioCount":{"type":"integer","minimum":0},"updatedAt":{"type":"string"},"shared":{"type":"object","properties":{"readOnly":{"type":"boolean","enum":[true]}},"required":["readOnly"]}},"required":["id","name","scenarioCount","updatedAt"]},"MapPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"version":{"type":["string","null"]},"displayName":{"type":"string"},"public":{"type":"boolean"},"capabilities":{"type":"object","properties":{"render2d":{"type":"boolean"},"render3d":{"type":"boolean"}},"required":["render2d","render3d"]}},"required":["id","name","version","displayName","public","capabilities"]}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"]},"MapSummary":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"version":{"type":["string","null"]},"displayName":{"type":"string"},"public":{"type":"boolean"},"capabilities":{"type":"object","properties":{"render2d":{"type":"boolean"},"render3d":{"type":"boolean"}},"required":["render2d","render3d"]}},"required":["id","name","version","displayName","public","capabilities"]},"VehicleImportRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9_-]{1,48}$"},"name":{"type":"string","minLength":1,"maxLength":120},"vehicleClass":{"type":"string","enum":["car","van","truck","bus"]},"dims":{"type":"array","prefixItems":[{"type":"number","exclusiveMinimum":0},{"type":"number","exclusiveMinimum":0},{"type":"number","exclusiveMinimum":0}]},"license":{"type":"string","pattern":"^(?:LicenseRef-[A-Za-z0-9.-]{1,100}|[A-Za-z0-9][A-Za-z0-9.+-]{0,63})$"},"licenseText":{"type":"string","minLength":1,"maxLength":20000},"attribution":{"type":"string","minLength":1,"maxLength":1000},"source":{"type":"string","minLength":1,"maxLength":1000},"uploadId":{"type":"string"}},"required":["id","vehicleClass","license","attribution","uploadId"]},"VehiclePage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"catalogId":{"type":"string","minLength":1},"name":{"type":"string"},"source":{"type":"string","enum":["shared","workspace"]},"vehicleClass":{"type":"string"},"dims":{"type":"object","properties":{"length":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"}},"required":["length","width","height"]},"license":{"type":"string"},"attribution":{"type":"string"},"glbSha256":{"type":"string"},"wheels":{"type":"boolean"},"tintable":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["catalogId","name","source","vehicleClass","dims"]}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"]},"VehicleSummary":{"type":"object","properties":{"catalogId":{"type":"string","minLength":1},"name":{"type":"string"},"source":{"type":"string","enum":["shared","workspace"]},"vehicleClass":{"type":"string"},"dims":{"type":"object","properties":{"length":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"}},"required":["length","width","height"]},"license":{"type":"string"},"attribution":{"type":"string"},"glbSha256":{"type":"string"},"wheels":{"type":"boolean"},"tintable":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["catalogId","name","source","vehicleClass","dims"]},"AssetList":{"type":"object","properties":{"closure":{"type":"string","pattern":"^[0-9a-f]{64}$"},"runtime":{"type":"string","pattern":"^[0-9a-f]{40}$"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"family":{"type":"string","enum":["car","truck","bus","van","motorcycle","bicycle","scooter","pedestrian","animal","drone","sidewalk_robot","prop"]},"subfamily":{"type":"string","enum":["construction","hazard","occluder","street"]},"source":{"type":"string","enum":["carla","simforge-procedural","generated-meshy","simforge-custom"]},"licence":{"type":["string","null"]},"licenceConfirmed":{"type":"boolean"},"attribution":{"type":"string"},"authorable":{"type":"boolean"},"editor":{"type":"boolean"},"status":{"type":"string","enum":["rendered","failed"]},"image":{"type":["string","null"]},"thumb":{"type":["string","null"]},"sha256":{"type":["string","null"]},"failure":{"type":"string"}},"required":["id","name","family","source","licence","attribution","authorable","editor","status","image","thumb","sha256"]}}},"required":["closure","runtime","data"]},"AssetSummary":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"family":{"type":"string","enum":["car","truck","bus","van","motorcycle","bicycle","scooter","pedestrian","animal","drone","sidewalk_robot","prop"]},"subfamily":{"type":"string","enum":["construction","hazard","occluder","street"]},"source":{"type":"string","enum":["carla","simforge-procedural","generated-meshy","simforge-custom"]},"licence":{"type":["string","null"]},"licenceConfirmed":{"type":"boolean"},"attribution":{"type":"string"},"authorable":{"type":"boolean"},"editor":{"type":"boolean"},"status":{"type":"string","enum":["rendered","failed"]},"image":{"type":["string","null"]},"thumb":{"type":["string","null"]},"sha256":{"type":["string","null"]},"failure":{"type":"string"}},"required":["id","name","family","source","licence","attribution","authorable","editor","status","image","thumb","sha256"]},"ScenarioCopyRequest":{"type":"object","properties":{"datasetId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":200}}},"ScenarioCopy":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"mapId":{"type":["string","null"]},"mapVersionId":{"type":["string","null"]},"latestRevisionId":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdBy":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"datasetIds":{"type":"array","items":{"type":"string"}},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"createdAt":{"type":"string"},"contentSha256":{"type":"string"},"mapVersionId":{"type":["string","null"]},"mapClosureSha256":{"type":["string","null"]}},"required":["id","createdAt","contentSha256","mapVersionId","mapClosureSha256"]}},"copiedFrom":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name","mapId","mapVersionId","latestRevisionId","updatedAt","createdBy","tags","datasetIds","revisions","copiedFrom"]},"ScenarioDetail":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"mapId":{"type":["string","null"]},"mapVersionId":{"type":["string","null"]},"latestRevisionId":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdBy":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"datasetIds":{"type":"array","items":{"type":"string"}},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"createdAt":{"type":"string"},"contentSha256":{"type":"string"},"mapVersionId":{"type":["string","null"]},"mapClosureSha256":{"type":["string","null"]}},"required":["id","createdAt","contentSha256","mapVersionId","mapClosureSha256"]}}},"required":["id","name","mapId","mapVersionId","latestRevisionId","updatedAt","createdBy","tags","datasetIds","revisions"]},"ScenarioPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"mapId":{"type":["string","null"]},"mapVersionId":{"type":["string","null"]},"latestRevisionId":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdBy":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"datasetIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","mapId","mapVersionId","latestRevisionId","updatedAt","createdBy","tags","datasetIds"]}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"]},"ScenarioRevision":{"type":"object","properties":{"id":{"type":"string","minLength":1},"createdAt":{"type":"string"},"contentSha256":{"type":"string"},"mapVersionId":{"type":["string","null"]},"mapClosureSha256":{"type":["string","null"]}},"required":["id","createdAt","contentSha256","mapVersionId","mapClosureSha256"]},"ScenarioSummary":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"mapId":{"type":["string","null"]},"mapVersionId":{"type":["string","null"]},"latestRevisionId":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdBy":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"datasetIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","mapId","mapVersionId","latestRevisionId","updatedAt","createdBy","tags","datasetIds"]},"RunId":{"type":"string","pattern":"^run_[0-9A-HJKMNP-TV-Z]{26}$"},"RecordingCreateRequest":{"type":"object","properties":{"uploadId":{"type":"string"}},"required":["uploadId"]},"RecordingDownload":{"type":"object","properties":{"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceKind":{"type":"string","enum":["log","manual-drive","rollout","openscenario"]},"producer":{"type":"string"},"clipRef":{"type":"string"},"licence":{"type":["string","null"]},"map":{"type":["object","null"],"properties":{"mapId":{"type":"string"},"version":{"type":["string","null"]},"xodrSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["mapId","version","xodrSha256"]},"tickCount":{"type":"integer","minimum":0},"actorCount":{"type":"integer","minimum":0},"sizeBytes":{"type":"integer","exclusiveMinimum":0},"createdAt":{"type":"string"},"url":{"type":"string","minLength":1},"expiresAt":{"type":"string"}},"required":["sha256","sourceKind","producer","clipRef","licence","map","tickCount","actorCount","sizeBytes","createdAt","url","expiresAt"]},"Recording":{"type":"object","properties":{"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceKind":{"type":"string","enum":["log","manual-drive","rollout","openscenario"]},"producer":{"type":"string"},"clipRef":{"type":"string"},"licence":{"type":["string","null"]},"map":{"type":["object","null"],"properties":{"mapId":{"type":"string"},"version":{"type":["string","null"]},"xodrSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["mapId","version","xodrSha256"]},"tickCount":{"type":"integer","minimum":0},"actorCount":{"type":"integer","minimum":0},"sizeBytes":{"type":"integer","exclusiveMinimum":0},"createdAt":{"type":"string"}},"required":["sha256","sourceKind","producer","clipRef","licence","map","tickCount","actorCount","sizeBytes","createdAt"]},"UploadRequest":{"type":"object","properties":{"kind":{"type":"string","enum":["recording","clip-bundle","vehicle-model","mcap","openscenario"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$/i"},"sizeBytes":{"type":"integer","minimum":0,"maximum":5368709120}},"required":["kind","sha256","sizeBytes"]},"UploadResponse":{"type":"object","properties":{"uploadId":{"type":"string"},"uploadUrl":{"type":"string","minLength":1},"uploadHeaders":{"type":"object","additionalProperties":{"type":"string"}},"expiresAt":{"type":"string"}},"required":["uploadId","uploadUrl","uploadHeaders","expiresAt"]},"AuthoringCatalogue":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.authoring-operations/v1"]},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":256},"summary":{"type":"string"},"inputSchema":{"type":"object","additionalProperties":{}},"resultSchema":{"type":"object","additionalProperties":{}},"applicability":{},"effectCategory":{"type":"string","enum":["document"]},"requiredContext":{"type":"array","items":{"type":"string"}},"diagnostics":{"type":"array","items":{}}},"required":["id","summary","inputSchema","resultSchema","effectCategory","requiredContext","diagnostics"],"additionalProperties":{}}}},"required":["schema","operations"],"additionalProperties":{}},"AuthoringResult":{"type":"object","additionalProperties":{}},"AuthoringDiscoveryRequest":{"type":"object","properties":{"kind":{"type":"string","enum":["locations","lanes","movements","catalogue"],"default":"lanes"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20},"x":{"type":["number","null"]},"z":{"type":["number","null"]},"catalogId":{"type":"string","minLength":1,"maxLength":256}},"additionalProperties":false},"AuthoringSpawnRequest":{"type":"object","properties":{"catalogId":{"type":"string","minLength":1,"maxLength":256},"laneRsl":{"type":"string","minLength":1,"maxLength":256},"s":{"type":"number","minimum":0},"x":{"type":"number"},"z":{"type":"number"},"headingRad":{"type":"number"},"lateralM":{"type":"number"},"opposing":{"type":"boolean"},"static":{"type":"boolean"},"draftId":{"type":"string","minLength":1,"maxLength":256},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["catalogId"],"additionalProperties":false},"DraftCreateRequest":{"type":"object","properties":{"mapId":{"type":"string","minLength":1,"maxLength":256},"mapReleaseDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"name":{"type":"string","minLength":1,"maxLength":256},"datasetId":{"type":"string","minLength":1,"maxLength":256},"clipSeconds":{"type":"number","minimum":3,"maximum":120},"createdAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"content":{"type":"object","additionalProperties":{}},"contentDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"provisional":{"type":"boolean"}},"required":["name"],"additionalProperties":false},"DraftReceipt":{"type":"object","properties":{"documentId":{"type":"string","minLength":1,"maxLength":256},"workspaceId":{"type":"string","minLength":1,"maxLength":256},"datasetId":{"type":"string","minLength":1,"maxLength":256},"draftVersion":{"type":"integer","minimum":0},"contentDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"operationDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"content":{"type":"object","additionalProperties":{}},"mapPin":{"type":"object","properties":{"versionId":{"type":"string","minLength":1,"maxLength":256},"mapId":{"type":"string","minLength":1,"maxLength":256},"xodrSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"closureSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"assetCatalogVersionId":{"type":"string","minLength":1,"maxLength":256},"assetCatalogSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"releaseDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["versionId","mapId","xodrSha256","closureSha256","assetCatalogVersionId","assetCatalogSha256"],"additionalProperties":false},"actorPins":{"type":"array","items":{"type":"object","properties":{"actorId":{"type":"string","minLength":1,"maxLength":256},"catalogId":{"type":["string","null"],"minLength":1,"maxLength":256},"class":{"type":"string","minLength":1,"maxLength":256},"catalogueDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["actorId","catalogId","class","catalogueDigest"]}},"recordingPins":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":256},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","sha256"],"additionalProperties":{}}},"provisional":{"type":"boolean"}},"required":["documentId","workspaceId","datasetId","draftVersion","contentDigest","operationDigest","content","mapPin","actorPins","recordingPins","provisional"],"additionalProperties":{}},"DraftRevisionReceipt":{"type":"object","properties":{"documentId":{"type":"string","minLength":1,"maxLength":256},"workspaceId":{"type":"string","minLength":1,"maxLength":256},"datasetId":{"type":"string","minLength":1,"maxLength":256},"draftVersion":{"type":"integer","minimum":0},"contentDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"operationDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"content":{"type":"object","additionalProperties":{}},"mapPin":{"type":"object","properties":{"versionId":{"type":"string","minLength":1,"maxLength":256},"mapId":{"type":"string","minLength":1,"maxLength":256},"xodrSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"closureSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"assetCatalogVersionId":{"type":"string","minLength":1,"maxLength":256},"assetCatalogSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"releaseDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["versionId","mapId","xodrSha256","closureSha256","assetCatalogVersionId","assetCatalogSha256"],"additionalProperties":false},"actorPins":{"type":"array","items":{"type":"object","properties":{"actorId":{"type":"string","minLength":1,"maxLength":256},"catalogId":{"type":["string","null"],"minLength":1,"maxLength":256},"class":{"type":"string","minLength":1,"maxLength":256},"catalogueDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["actorId","catalogId","class","catalogueDigest"]}},"recordingPins":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":256},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","sha256"],"additionalProperties":{}}},"provisional":{"type":"boolean"},"revisionId":{"type":"string","minLength":1,"maxLength":256},"revisionContentDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["documentId","workspaceId","datasetId","draftVersion","contentDigest","operationDigest","content","mapPin","actorPins","recordingPins","provisional","revisionId","revisionContentDigest"],"additionalProperties":{}},"DraftTransactionRequest":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"label":{"type":"string","minLength":1,"maxLength":256,"default":"CLI authoring transaction"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/AuthoringOperationInput"},"minItems":1,"maxItems":128}},"required":["expectedVersion","expectedDigest","operations"],"additionalProperties":false},"DraftSaveRequest":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"name":{"type":"string","minLength":1,"maxLength":256}},"required":["expectedVersion","expectedDigest"],"additionalProperties":false},"DraftValidateRequest":{"type":"object","properties":{"strict":{"type":"boolean","default":true},"preview":{"type":"boolean","default":false}},"additionalProperties":false},"DistributionAgreementResponse":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.distribution-agreement/v1"]},"status":{"type":"string","enum":["available","unavailable"]},"reason":{"type":["string","null"],"enum":["no_current_agreement","agreement_not_approved",null]},"agreement":{"type":["object","null"],"properties":{"version":{"type":"string"},"title":{"type":"string"},"text":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"draft":{"type":"boolean"},"audience":{"type":"string","enum":["staff","preview","public"]},"approvedBy":{"type":["string","null"]},"approvedAt":{"type":["string","null"]},"publishedAt":{"type":"string"}},"required":["version","title","text","sha256","draft","audience","approvedBy","approvedAt","publishedAt"]},"acceptance":{"type":["object","null"],"properties":{"agreementVersion":{"type":"string"},"agreementSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acceptedAt":{"type":"string"}},"required":["agreementVersion","agreementSha256","acceptedAt"]}},"required":["schema","status","reason","agreement","acceptance"]},"DistributionAgreementAcceptRequest":{"type":"object","properties":{"agreementVersion":{"type":"string","minLength":1,"maxLength":128},"agreementSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["agreementVersion","agreementSha256"],"additionalProperties":false},"DistributionAgreementAcceptance":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.distribution-acceptance/v1"]},"agreementVersion":{"type":"string"},"agreementSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acceptedAt":{"type":"string"}},"required":["schema","agreementVersion","agreementSha256","acceptedAt"]},"DistributionRuntimeRequest":{"type":"object","properties":{"target":{"type":"string","enum":["x86_64-unknown-linux-gnu","aarch64-apple-darwin","x86_64-apple-darwin","x86_64-pc-windows-gnu"]},"version":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z.+_-]{0,63}$"}},"required":["target"],"additionalProperties":false},"DistributionCliRequest":{"type":"object","properties":{"target":{"type":"string","enum":["x86_64-unknown-linux-gnu","aarch64-apple-darwin","x86_64-apple-darwin","x86_64-pc-windows-gnu","aarch64-pc-windows-gnullvm"]},"version":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z.+_-]{0,63}$"}},"required":["target"],"additionalProperties":false},"DistributionMapRequest":{"type":"object","properties":{"version":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z.+_-]{0,63}$"}},"additionalProperties":false},"DistributionDownload":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.distribution-download/v1"]},"kind":{"type":"string","enum":["runtime","map","cli"]},"name":{"type":"string"},"target":{"type":"string"},"version":{"type":"string"},"url":{"type":"string","format":"uri"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","exclusiveMinimum":0},"expiresAt":{"type":"string"},"agreementVersion":{"type":"string"},"manifest":{"type":"object","additionalProperties":{}}},"required":["schema","kind","name","version","url","sha256","bytes","expiresAt","agreementVersion","manifest"]},"TelemetryBatch":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.usage-batch/v1"]},"batchId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"sealedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"},"accountId":{"type":"string","minLength":1,"maxLength":128},"installId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"machine":{"type":"object","properties":{"os":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$"},"arch":{"type":"string","pattern":"^[a-z0-9_]{1,16}$"},"gpus":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[\\x20-\\x7e]+$"},"vramMib":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"driver":{"type":["string","null"],"maxLength":64,"pattern":"^[\\x20-\\x7e]*$"}},"required":["model","vramMib","driver"],"additionalProperties":false},"maxItems":16},"gpuCount":{"type":"integer","minimum":0,"maximum":16},"gpuProbe":{"type":"string","enum":["nvidia-smi","none"]}},"required":["os","arch","gpus","gpuCount","gpuProbe"],"additionalProperties":false},"droppedEvents":{"type":"integer","minimum":0,"maximum":1000000000000},"events":{"type":"array","items":{"type":"object","properties":{"eventId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"finishedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"},"runtimeVersion":{"type":"string","pattern":"^[0-9A-Za-z.+-]{1,32}$"},"cliVersion":{"type":["string","null"],"pattern":"^[0-9A-Za-z.+-]{1,32}$"},"kind":{"type":"string","enum":["simulate","compile","render","preview","env","evaluate","transfer","export","command"]},"command":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$"},"renderMode":{"type":["string","null"],"enum":["2d","schematic","3d",null]},"renderProfile":{"type":["string","null"],"enum":["training","showcase","schematic",null]},"sensors":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"frames":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"wallSeconds":{"type":"number","minimum":0,"maximum":100000000},"gpuBusySeconds":{"type":["number","null"],"minimum":0,"maximum":100000000},"outcome":{"type":"string","enum":["ok","findings","error"]},"errorCode":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_]{0,63}$"},"episodes":{"type":"integer","minimum":0,"maximum":1000000000000},"envSteps":{"type":"integer","minimum":0,"maximum":1000000000000},"map":{"type":["string","null"],"enum":["belmont-research-center","di-rosa-sf","easterbrook-discovery-school","el-camino-road","richmond-field-station","san-ramon-phase-1","yale-street",null]},"sessionId":{"type":["string","null"],"pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},"required":["eventId","finishedAt","runtimeVersion","cliVersion","kind","command","renderMode","renderProfile","sensors","frames","wallSeconds","gpuBusySeconds","outcome","errorCode","episodes","envSteps","map","sessionId"],"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["schema","batchId","sealedAt","accountId","installId","machine","droppedEvents","events"],"additionalProperties":false},"TelemetryBatchV2":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.usage-batch/v2"]},"batchId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"sealedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"},"accountId":{"type":"string","minLength":1,"maxLength":128},"installId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"agreementVersion":{"type":"string","enum":["simforge-terms-draft-4"]},"machine":{"type":"object","properties":{"os":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$"},"arch":{"type":"string","pattern":"^[a-z0-9_]{1,16}$"},"gpus":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[\\x20-\\x7e]+$"},"vramMib":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"driver":{"type":["string","null"],"maxLength":64,"pattern":"^[\\x20-\\x7e]*$"}},"required":["model","vramMib","driver"],"additionalProperties":false},"maxItems":16},"gpuCount":{"type":"integer","minimum":0,"maximum":16},"gpuProbe":{"type":"string","enum":["nvidia-smi","none"]}},"required":["os","arch","gpus","gpuCount","gpuProbe"],"additionalProperties":false},"droppedEvents":{"type":"integer","minimum":0,"maximum":1000000000000},"events":{"type":"array","items":{"type":"object","properties":{"eventId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"finishedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"},"runtimeVersion":{"type":"string","pattern":"^[0-9A-Za-z.+-]{1,32}$"},"cliVersion":{"type":["string","null"],"pattern":"^[0-9A-Za-z.+-]{1,32}$"},"kind":{"type":"string","enum":["simulate","compile","render","preview","env","evaluate","transfer","export","command","cli","crash","session"]},"command":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$"},"renderMode":{"type":["string","null"],"enum":["2d","schematic","3d",null]},"renderProfile":{"type":["string","null"],"enum":["training","showcase","schematic",null]},"sensors":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"frames":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"wallSeconds":{"type":"number","minimum":0,"maximum":100000000},"gpuBusySeconds":{"type":["number","null"],"minimum":0,"maximum":100000000},"outcome":{"type":"string","enum":["ok","findings","error"]},"errorCode":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_]{0,63}$"},"episodes":{"type":"integer","minimum":0,"maximum":1000000000000},"envSteps":{"type":"integer","minimum":0,"maximum":1000000000000},"map":{"type":["string","null"],"enum":["belmont-research-center","di-rosa-sf","easterbrook-discovery-school","el-camino-road","richmond-field-station","san-ramon-phase-1","yale-street",null]},"sessionId":{"type":["string","null"],"pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"cliCommand":{"type":["string","null"],"pattern":"^[a-z][a-z0-9-]{0,31}( [a-z][a-z0-9-]{0,31}){0,3}$"},"cliFlags":{"type":["array","null"],"items":{"type":"string","pattern":"^(--[a-z][a-z0-9-]{0,47}|-[A-Za-z])$"},"maxItems":64},"crashSite":{"type":["string","null"],"pattern":"^[0-9a-f]{16}$"},"rigPreset":{"type":["string","null"],"enum":["basic-dash-camera","tesla-hw3","waymo-5th-gen","surround-7cam-1lidar","roof-8cam-6lidar-4radar","alpamayo-2cam","alpamayo-4cam","alpamayo-6cam","alpamayo-6cam-vqa","front-4cam-wide-cross-tele","drone-fpv-forward","drone-inspection-wide-zoom","drone-inspection-wide","drone-mapping-nadir","custom",null]},"resolution":{"type":["string","null"],"enum":["sd","hd","fhd","qhd","uhd","uhd-plus",null]},"renderPasses":{"type":["array","null"],"items":{"type":"string","enum":["rgb","id","depth","semantic","instance","lidar","radar"]},"maxItems":7},"weather":{"type":["string","null"],"enum":["clear","cloudy","overcast","light_rain","heavy_rain","wet_road","fog_light","fog_dense","snow","sleet","custom",null]},"timeOfDay":{"type":["string","null"],"enum":["dawn","morning","noon","afternoon","dusk","night","night_lit","custom",null]},"datasetScenario":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"datasetVersion":{"type":["string","null"],"pattern":"^\\d{1,6}\\.\\d{1,6}\\.\\d{1,6}$"},"agent":{"type":["string","null"],"enum":["claude-code","codex","cursor","other-agent","none",null]},"cliSessionId":{"type":["string","null"],"pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"firstRun":{"type":["boolean","null"]},"daysSinceInstall":{"type":["integer","null"],"minimum":0,"maximum":100000}},"required":["eventId","finishedAt","runtimeVersion","cliVersion","kind","command","renderMode","renderProfile","sensors","frames","wallSeconds","gpuBusySeconds","outcome","errorCode","episodes","envSteps","map","sessionId","cliCommand","cliFlags","crashSite","rigPreset","resolution","renderPasses","weather","timeOfDay","datasetScenario","datasetVersion","agent","cliSessionId","firstRun","daysSinceInstall"],"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["schema","batchId","sealedAt","accountId","installId","agreementVersion","machine","droppedEvents","events"],"additionalProperties":false},"TelemetryReceipt":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.usage-receipt/v1"]},"batchId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"firstDelivery":{"type":"boolean"},"accepted":{"type":"integer","minimum":0}},"required":["schema","batchId","firstDelivery","accepted"]},"TelemetryTerms":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.usage-terms/v1"]},"agreementVersion":{"type":["string","null"]},"batchSchema":{"type":"string","enum":["simforge.usage-batch/v1","simforge.usage-batch/v2"]}},"required":["schema","agreementVersion","batchSchema"],"additionalProperties":false},"CliOAuthError":{"type":"object","properties":{"error":{"type":"string","description":"Machine code: an RFC 6749/8628 error (`invalid_grant`, `authorization_pending`, `slow_down`, `invalid_token`, `insufficient_scope`) or a SimForge code (`not_found`, `rate_limited`, …)."},"error_description":{"type":"string","description":"One sentence for a person."},"detail":{"type":"object","additionalProperties":{}}},"required":["error","error_description"]},"CliAuthorizationServerMetadata":{"type":"object","properties":{"issuer":{"type":"string"},"resource":{"type":"string","description":"The protected resource (`/api/v1`), as its RFC 9728 metadata names it."},"authorization_servers":{"type":"array","items":{"type":"string"}},"bearer_methods_supported":{"type":"array","items":{"type":"string","enum":["header"]}},"authorization_endpoint":{"type":"string"},"token_endpoint":{"type":"string"},"device_authorization_endpoint":{"type":"string"},"revocation_endpoint":{"type":"string"},"userinfo_endpoint":{"type":"string"},"scopes_supported":{"type":"array","items":{"type":"string"}},"response_types_supported":{"type":"array","items":{"type":"string","enum":["code"]}},"grant_types_supported":{"type":"array","items":{"type":"string"}},"code_challenge_methods_supported":{"type":"array","items":{"type":"string","enum":["S256"]}},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string","enum":["none"]}},"revocation_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string","enum":["none"]}},"simforge_bench_results":{"type":"string"},"simforge_bench_packs":{"type":"string"},"simforge_scenario_documents":{"type":"string"},"simforge_cli_sessions_page":{"type":"string"},"agent_auth":{"type":"object","properties":{"skill":{"type":"string","description":"This host's auth.md: the agent recipe."},"identity_endpoint":{"type":"string"},"claim_endpoint":{"type":"string"},"identity_types_supported":{"type":"array","items":{"type":"string","enum":["service_auth","identity_assertion"]}},"events_endpoint":{"type":"string","description":"Where a trusted agent provider pushes Security Event Tokens (RFC 8935). Present while a provider is trusted."},"identity_assertion":{"type":"object","properties":{"assertion_types_supported":{"type":"array","items":{"type":"string","enum":["urn:ietf:params:oauth:token-type:id-jag"]}},"trusted_issuers":{"type":"array","items":{"type":"string"},"description":"The agent providers whose ID-JAGs this host accepts."}},"required":["assertion_types_supported","trusted_issuers"]},"events_supported":{"type":"array","items":{"type":"string","enum":["https://schemas.workos.com/events/agent/auth/identity/assertion/revoked"]}}},"required":["skill","identity_endpoint","claim_endpoint","identity_types_supported"],"description":"The auth.md profile: how an AI agent registers and is approved by a person."}},"required":["issuer","resource","authorization_servers","bearer_methods_supported","authorization_endpoint","token_endpoint","device_authorization_endpoint","revocation_endpoint","userinfo_endpoint","scopes_supported","response_types_supported","grant_types_supported","code_challenge_methods_supported","token_endpoint_auth_methods_supported","revocation_endpoint_auth_methods_supported","simforge_bench_results","simforge_bench_packs","simforge_scenario_documents","simforge_cli_sessions_page","agent_auth"]},"CliDeviceCodeRequest":{"type":"object","properties":{"client_id":{"type":"string","enum":["simforge-cli"]},"device_name":{"type":"string","maxLength":80,"description":"Shown on the approval page and the account's CLI sessions list."},"client_version":{"type":"string","maxLength":32},"client_platform":{"type":"string","maxLength":40},"scope":{"type":"string","description":"Space-separated scopes (default `maps:read`): maps:read, bench:write, scenarios:read, scenarios:write, datasets:read, runs:read, runs:write, artifacts:read, usage:read, keys:admin, runtime:read, challenge:write."}},"required":["client_id"]},"CliDeviceCodeResponse":{"type":"object","properties":{"device_code":{"type":"string"},"user_code":{"type":"string","description":"The code the person confirms on the verification page."},"verification_uri":{"type":"string"},"verification_uri_complete":{"type":"string"},"expires_in":{"type":"integer"},"interval":{"type":"integer","description":"Seconds between token polls."}},"required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"]},"CliTokenRequest":{"oneOf":[{"type":"object","properties":{"client_id":{"type":"string","enum":["simforge-cli"]},"grant_type":{"type":"string","enum":["urn:ietf:params:oauth:grant-type:device_code"]},"device_code":{"type":"string"}},"required":["client_id","grant_type","device_code"]},{"type":"object","properties":{"client_id":{"type":"string","enum":["simforge-cli"]},"grant_type":{"type":"string","enum":["authorization_code"]},"code":{"type":"string"},"redirect_uri":{"type":"string","description":"The loopback redirect the authorization request named."},"code_verifier":{"type":"string","description":"The PKCE (S256) verifier."}},"required":["client_id","grant_type","code","redirect_uri","code_verifier"]},{"type":"object","properties":{"client_id":{"type":"string","enum":["simforge-cli"]},"grant_type":{"type":"string","enum":["refresh_token"]},"refresh_token":{"type":"string","description":"An unspent `sfc_rt_…` token. Refresh tokens rotate: each one is spent once."}},"required":["client_id","grant_type","refresh_token"]},{"type":"object","properties":{"grant_type":{"type":"string","enum":["urn:workos:agent-auth:grant-type:claim"]},"claim_token":{"type":"string","description":"The `claim_token` of the registration."}},"required":["grant_type","claim_token"]},{"type":"object","properties":{"grant_type":{"type":"string","enum":["urn:ietf:params:oauth:grant-type:jwt-bearer"]},"assertion":{"type":"string","description":"The `identity_assertion` the claim grant returned."},"resource":{"type":"string","description":"Optional (RFC 8707): the protected resource, which must be this host's `/api/v1`."}},"required":["grant_type","assertion"]}]},"CliTokenResponse":{"type":"object","properties":{"access_token":{"type":"string","description":"A `sfc_at_…` bearer token for `/api/v1` and `/api/cli`."},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer"},"refresh_token":{"type":"string"},"refresh_expires_in":{"type":"integer"},"scope":{"type":"string"},"session_id":{"type":"string"},"account":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"}},"required":["id","email","name"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"workspace_id":{"type":"string"}},"required":["id","name","workspace_id"]}},"required":["access_token","token_type","expires_in","refresh_token","refresh_expires_in","scope","session_id","account","organization"]},"CliRevokeRequest":{"type":"object","properties":{"client_id":{"type":"string","enum":["simforge-cli"],"description":"The CLI sends it; an agent may omit it."},"token":{"type":"string","description":"An access or refresh token, or an agent's identity assertion; each ends the whole session."},"token_type_hint":{"type":"string","description":"Accepted and ignored (RFC 7009)."}},"required":["token"]},"CliUserinfo":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"}},"required":["id","email","name"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"workspace_id":{"type":"string"}},"required":["id","name","workspace_id"]},"scopes":{"type":"array","items":{"type":"string"}},"session":{"type":"object","properties":{"id":{"type":"string"},"device_name":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","device_name","created_at"]},"access_token_expires_at":{"type":"string"},"email_verification":{"type":"object","properties":{"verified":{"type":"boolean","description":"Whether the account's email address is verified."},"required":{"type":"boolean","description":"Whether this host refuses runs and downloads to an unverified account (`email_unverified`)."},"resend_url":{"type":"string","description":"The page that resends the verification link to a signed-in account."}},"required":["verified","required","resend_url"],"description":"The account's email verification, read fresh on every request; separate from whether the token is valid."}},"required":["account","organization","scopes","session","access_token_expires_at","email_verification"]},"ProtectedResourceMetadata":{"type":"object","properties":{"resource":{"type":"string"},"resource_name":{"type":"string"},"resource_logo_uri":{"type":"string"},"resource_documentation":{"type":"string"},"authorization_servers":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"bearer_methods_supported":{"type":"array","items":{"type":"string","enum":["header"]}}},"required":["resource","resource_name","resource_logo_uri","resource_documentation","authorization_servers","scopes_supported","bearer_methods_supported"]},"AgentIdentityRequest":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["service_auth"]},"login_hint":{"type":"string","minLength":3,"maxLength":320,"description":"The email of the SimForge account the agent acts for. Only that account, signed in and with a verified email, can approve the registration."},"scope":{"type":"string","maxLength":200,"description":"Space-separated scopes the person is asked to approve. Omitted: every scope in the metadata's `scopes_supported`."}},"required":["type","login_hint"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["identity_assertion"]},"assertion_type":{"type":"string","enum":["urn:ietf:params:oauth:token-type:id-jag"]},"assertion":{"type":"string","minLength":1,"maxLength":8192,"description":"An ID-JAG from a trusted agent provider: `aud` = this issuer, a fresh `jti`, `exp` within 10 minutes, `email` with `email_verified: true`, and `auth_time` within the last hour."}},"required":["type","assertion_type","assertion"],"additionalProperties":false}]},"AgentIdentityResponse":{"type":"object","properties":{"registration_id":{"type":"string"},"registration_type":{"type":"string","enum":["service_auth","identity_assertion"]},"claim_url":{"type":"string","description":"Where to re-mint a user code for this registration (`POST`, with `claim_token` and the same `email`)."},"claim_token":{"type":"string","description":"Returned once: poll the token endpoint with it. Keep it in memory only."},"claim_token_expires":{"type":"string","description":"When the registration closes (ISO 8601); after it, register again."},"post_claim_scopes":{"type":"array","items":{"type":"string"}},"claim":{"type":"object","properties":{"user_code":{"type":"string","description":"The code the person types on the verification page. Show it to the person, never send it anywhere."},"expires_in":{"type":"integer","description":"Seconds until this user code expires."},"verification_uri":{"type":"string","description":"The page the person opens: it asks them to sign in first, then for the code."},"interval":{"type":"integer","description":"Seconds between token polls."}},"required":["user_code","expires_in","verification_uri","interval"]}},"required":["registration_id","registration_type","claim_url","claim_token","claim_token_expires","post_claim_scopes","claim"]},"AgentAssertionResponse":{"type":"object","properties":{"registration_id":{"type":"string"},"registration_type":{"type":"string","enum":["identity_assertion"]},"identity_assertion":{"type":"string","description":"Exchange it with the JWT-bearer grant for an access token until `assertion_expires` (at most an hour)."},"assertion_expires":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["registration_id","registration_type","identity_assertion","assertion_expires","scopes"]},"AgentInteractionRequired":{"type":"object","properties":{"registration_id":{"type":"string"},"registration_type":{"type":"string","enum":["service_auth","identity_assertion"]},"claim_url":{"type":"string","description":"Where to re-mint a user code for this registration (`POST`, with `claim_token` and the same `email`)."},"claim_token":{"type":"string","description":"Returned once: poll the token endpoint with it. Keep it in memory only."},"claim_token_expires":{"type":"string","description":"When the registration closes (ISO 8601); after it, register again."},"post_claim_scopes":{"type":"array","items":{"type":"string"}},"claim":{"type":"object","properties":{"user_code":{"type":"string","description":"The code the person types on the verification page. Show it to the person, never send it anywhere."},"expires_in":{"type":"integer","description":"Seconds until this user code expires."},"verification_uri":{"type":"string","description":"The page the person opens: it asks them to sign in first, then for the code."},"interval":{"type":"integer","description":"Seconds between token polls."}},"required":["user_code","expires_in","verification_uri","interval"]},"error":{"type":"string","enum":["interaction_required"]},"error_description":{"type":"string"}},"required":["registration_id","registration_type","claim_url","claim_token","claim_token_expires","post_claim_scopes","claim","error","error_description"]},"AgentClaimRequest":{"type":"object","properties":{"claim_token":{"type":"string","minLength":1,"maxLength":128},"email":{"type":"string","minLength":3,"maxLength":320,"description":"The email the registration was made for."}},"required":["claim_token","email"],"additionalProperties":false},"AgentClaimResponse":{"type":"object","properties":{"registration_id":{"type":"string"},"claim_attempt_id":{"type":"string"},"status":{"type":"string","enum":["initiated"]},"expires_at":{"type":"string","description":"When this user code expires (ISO 8601)."},"claim_attempt":{"type":"object","properties":{"user_code":{"type":"string","description":"The code the person types on the verification page. Show it to the person, never send it anywhere."},"expires_in":{"type":"integer","description":"Seconds until this user code expires."},"verification_uri":{"type":"string","description":"The page the person opens: it asks them to sign in first, then for the code."},"interval":{"type":"integer","description":"Seconds between token polls."}},"required":["user_code","expires_in","verification_uri","interval"]}},"required":["registration_id","claim_attempt_id","status","expires_at","claim_attempt"]},"AgentClaimTokenResponse":{"type":"object","properties":{"access_token":{"type":"string","description":"A `sfc_at_…` bearer token for `/api/v1`, valid for `expires_in` seconds."},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer"},"scope":{"type":"string"},"identity_assertion":{"type":"string","description":"A service-signed JWT: exchange it with the JWT-bearer grant for a fresh access token until `assertion_expires`. A secret: keep it like a password."},"assertion_expires":{"type":"string"},"session_id":{"type":"string","description":"The session the account sees and can revoke under Account → CLI sessions."},"account":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"}},"required":["id","email","name"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"workspace_id":{"type":"string"}},"required":["id","name","workspace_id"]}},"required":["access_token","token_type","expires_in","scope","identity_assertion","assertion_expires","session_id","account","organization"]},"AgentJwtBearerTokenResponse":{"type":"object","properties":{"access_token":{"type":"string","description":"A `sfc_at_…` bearer token for `/api/v1`, valid for `expires_in` seconds."},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer"},"scope":{"type":"string"}},"required":["access_token","token_type","expires_in","scope"]},"CliScenarioDocument":{"type":"object","properties":{"content":{"description":"The scenario document as the editor stores it."},"mapVersionId":{"type":["string","null"]},"mapXodrSha256":{"type":["string","null"]}},"additionalProperties":{},"description":"One scenario of the session's workspace, as the editor stores it."},"CliBenchResult":{"type":"object","properties":{"schema":{"type":"string","enum":["simforge.bench-result/v1"]}},"required":["schema"],"additionalProperties":{},"description":"The `simforge.bench-result/v1` document `simforge bench --submit` writes."},"CliBenchReceipt":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","description":"The result's page."}},"required":["id","url"]},"ChallengeTeamStatus":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"]},"role":{"type":"string","enum":["captain","member"]},"caps":{"type":"array","items":{"type":"object","properties":{"track":{"type":"string","enum":["dev","final"]},"limit":{"type":"integer"},"used":{"type":"integer"},"remaining":{"type":"integer"},"window":{"type":"string"},"resetsAt":{"type":"string"}},"required":["track","limit","used","remaining","window","resetsAt"]}},"registry":{"type":"object","properties":{"registry":{"type":"string"},"repository":{"type":"string"}},"required":["registry","repository"]}},"required":["team","role","caps","registry"]},"ChallengeSubmissionList":{"type":"object","properties":{"submissions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"teamId":{"type":"string"},"track":{"type":"string","enum":["dev","final"]},"imageRef":{"type":"string"},"imageDigest":{"type":"string"},"status":{"type":"string","enum":["queued","scheduled","evaluating","scored","failed","rejected"]},"night":{"type":"string"},"score":{"type":["number","null"]},"errorCode":{"type":["string","null"]},"errorReason":{"type":["string","null"]},"createdAt":{"type":"string"},"scoredAt":{"type":["string","null"]}},"required":["id","teamId","track","imageRef","imageDigest","status","night","score","errorCode","errorReason","createdAt","scoredAt"]}}},"required":["submissions"]},"ChallengeSubmissionReceipt":{"type":"object","properties":{"submission":{"type":"object","properties":{"id":{"type":"string"},"teamId":{"type":"string"},"track":{"type":"string","enum":["dev","final"]},"imageRef":{"type":"string"},"imageDigest":{"type":"string"},"status":{"type":"string","enum":["queued","scheduled","evaluating","scored","failed","rejected"]},"night":{"type":"string"},"score":{"type":["number","null"]},"errorCode":{"type":["string","null"]},"errorReason":{"type":["string","null"]},"createdAt":{"type":"string"},"scoredAt":{"type":["string","null"]}},"required":["id","teamId","track","imageRef","imageDigest","status","night","score","errorCode","errorReason","createdAt","scoredAt"]}},"required":["submission"]},"ChallengeSubmitRequest":{"type":"object","properties":{"track":{"type":"string","enum":["dev","final"]},"image":{"type":"string","minLength":1,"maxLength":512,"description":"`<registry>/<repository>@sha256:<digest>`, already pushed to the team's repository."}},"required":["track","image"],"additionalProperties":false},"ChallengeRegistryCredentials":{"type":"object","properties":{"registry":{"type":"string"},"repository":{"type":"string"},"username":{"type":"string"},"password":{"type":"string","description":"A secret: pipe it to `docker login --password-stdin`."},"expiresAt":{"type":"string"}},"required":["registry","repository","username","password","expiresAt"]},"AuthoringDiagnostic":{"type":"object","additionalProperties":false,"required":["code","severity","path","message"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","warning","info"]},"path":{"type":"string"},"message":{"type":"string"},"actorId":{"type":"string"}}},"AuthoringDocumentTransactionResult":{"type":"object","additionalProperties":false,"required":["document","version","digest","changedPaths","entityIds","diagnostics","inverseDocument"],"properties":{"document":{"type":"object"},"version":{"type":"integer","minimum":1},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"changedPaths":{"type":"array","items":{"type":"string"}},"entityIds":{"type":"array","items":{"type":"string"}},"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/AuthoringDiagnostic"}},"inverseDocument":{"type":"object"}}},"AuthoringHttpDraftTransactionResult":{"type":"object","additionalProperties":false,"required":["document","version","digest","changedPaths","entityIds","diagnostics","inverseDocument","documentId","workspaceId","datasetId","draftVersion","contentDigest","operationDigest","content","mapPin","actorPins","recordingPins","provisional"],"properties":{"document":{"type":"object"},"version":{"type":"integer","minimum":1},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"changedPaths":{"type":"array","items":{"type":"string"}},"entityIds":{"type":"array","items":{"type":"string"}},"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/AuthoringDiagnostic"}},"inverseDocument":{"type":"object"},"documentId":{"type":"string","minLength":1,"maxLength":256},"workspaceId":{"type":"string","minLength":1,"maxLength":256},"datasetId":{"type":"string","minLength":1,"maxLength":256},"draftVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"contentDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"operationDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"content":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"mapPin":{"type":"object","properties":{"versionId":{"type":"string","minLength":1,"maxLength":256},"mapId":{"type":"string","minLength":1,"maxLength":256},"xodrSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"closureSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"assetCatalogVersionId":{"type":"string","minLength":1,"maxLength":256},"assetCatalogSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"releaseDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["versionId","mapId","xodrSha256","closureSha256","assetCatalogVersionId","assetCatalogSha256"],"additionalProperties":false},"actorPins":{"type":"array","items":{"type":"object","properties":{"actorId":{"type":"string","minLength":1,"maxLength":256},"catalogId":{"anyOf":[{"type":"string","minLength":1,"maxLength":256},{"type":"null"}]},"class":{"type":"string","minLength":1,"maxLength":256},"catalogueDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["actorId","catalogId","class","catalogueDigest"],"additionalProperties":false}},"recordingPins":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":256},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["id","sha256"],"additionalProperties":{}}},"provisional":{"type":"boolean"}}},"AuthoringAddActorInput":{"type":"object","additionalProperties":false,"required":["type","id","catalogId"],"properties":{"type":{"const":"addActor","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"New actor id (never allocated implicitly)."},"catalogId":{"type":"string","description":"Built-in actor (`simforge scenario actors`): vehicle.sedan, pedestrian.adult, ..."},"laneRsl":{"type":"string","pattern":"^-?[0-9]+:[0-9]+:-?[0-9]+$","description":"Semantic lane `road:section:lane` (with s)."},"s":{"type":"number","description":"Station along laneRsl in storage direction.","minimum":0,"x-unit":"m"},"x":{"type":"number","description":"Scene-frame x (east).","x-unit":"m"},"z":{"type":"number","description":"Scene-frame z (minus north).","x-unit":"m"},"y":{"type":"number","description":"Explicit height; otherwise the map ground at (x,z) is used and refused without ground.","x-unit":"m"},"headingRad":{"type":"number","description":"Heading in the scene frame; default: the lane heading or the actor class default.","x-unit":"rad"},"lateralM":{"type":"number","description":"Lateral offset in the lane, positive to the left of travel.","x-unit":"m"},"overlapOverride":{"type":"boolean","default":false,"description":"Accept overlap with another actor (free/static actors only; refused for moving road vehicles)."},"opposing":{"type":"boolean","default":false,"description":"Snap to the nearest genuinely opposing lane."},"static":{"type":"boolean","default":false,"description":"Place as a static actor (no motion, zero speed)."},"speedKph":{"type":"number","description":"Initial speed; default: posted limit for road vehicles.","minimum":0,"maximum":160,"x-unit":"km/h"},"bodyColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","description":"Presentation body colour `#rrggbb`."},"label":{"type":"string","maxLength":80,"description":"Display label."}},"oneOf":[{"required":["laneRsl","s"]},{"required":["x","z"]}]},"AuthoringMoveActorInput":{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"const":"moveActor","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor to move."},"laneRsl":{"type":"string","pattern":"^-?[0-9]+:[0-9]+:-?[0-9]+$","description":"Semantic lane `road:section:lane` (with s)."},"s":{"type":"number","description":"Station along laneRsl in storage direction.","minimum":0,"x-unit":"m"},"x":{"type":"number","description":"Scene-frame x (east).","x-unit":"m"},"z":{"type":"number","description":"Scene-frame z (minus north).","x-unit":"m"},"y":{"type":"number","description":"Explicit height; otherwise the map ground at (x,z) is used and refused without ground.","x-unit":"m"},"headingRad":{"type":"number","description":"Heading in the scene frame; default: the lane heading or the actor class default.","x-unit":"rad"},"lateralM":{"type":"number","description":"Lateral offset in the lane, positive to the left of travel.","x-unit":"m"},"overlapOverride":{"type":"boolean","default":false,"description":"Accept overlap with another actor (free/static actors only; refused for moving road vehicles)."}},"oneOf":[{"required":["laneRsl","s"]},{"required":["x","z"]}]},"AuthoringDuplicateActorInput":{"type":"object","additionalProperties":false,"required":["type","id","newId"],"properties":{"type":{"const":"duplicateActor","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Source actor."},"newId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"New actor id."},"laneRsl":{"type":"string","pattern":"^-?[0-9]+:[0-9]+:-?[0-9]+$","description":"Semantic lane `road:section:lane` (with s)."},"s":{"type":"number","description":"Station along laneRsl in storage direction.","minimum":0,"x-unit":"m"},"x":{"type":"number","description":"Scene-frame x (east).","x-unit":"m"},"z":{"type":"number","description":"Scene-frame z (minus north).","x-unit":"m"},"y":{"type":"number","description":"Explicit height; otherwise the map ground at (x,z) is used and refused without ground.","x-unit":"m"},"headingRad":{"type":"number","description":"Heading in the scene frame; default: the lane heading or the actor class default.","x-unit":"rad"},"lateralM":{"type":"number","description":"Lateral offset in the lane, positive to the left of travel.","x-unit":"m"},"overlapOverride":{"type":"boolean","default":false,"description":"Accept overlap with another actor (free/static actors only; refused for moving road vehicles)."}},"oneOf":[{"required":["laneRsl","s"]},{"required":["x","z"]}]},"AuthoringRemoveRoleInput":{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"const":"removeRole","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor to delete."}}},"AuthoringSetEgoInput":{"type":"object","additionalProperties":false,"required":["type","roleId"],"properties":{"type":{"const":"setEgo","description":"Operation id."},"roleId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor to make ego."}}},"AuthoringSetActorSpeedInput":{"type":"object","additionalProperties":false,"required":["type","id","speedKph"],"properties":{"type":{"const":"setActorSpeed","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor."},"speedKph":{"type":"number","description":"Initial speed.","minimum":0,"maximum":160,"x-unit":"km/h"}}},"AuthoringSetActorStaticInput":{"type":"object","additionalProperties":false,"required":["type","id","static"],"properties":{"type":{"const":"setActorStatic","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor."},"static":{"type":"boolean","description":"true: static; false: mobile."}}},"AuthoringAddLaneChangeInput":{"type":"object","additionalProperties":false,"required":["type","id","actorId","direction","startS"],"properties":{"type":{"const":"addLaneChange","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"New event id."},"actorId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor."},"direction":{"type":"string","enum":["left","right"],"description":"Target lane side."},"startS":{"type":"number","description":"Clip time the change starts.","minimum":0,"x-unit":"s"},"endS":{"type":"number","description":"Clip time the event ends.","minimum":0,"x-unit":"s"},"durationS":{"type":"number","description":"Lane-change duration.","exclusiveMinimum":0,"default":3,"x-unit":"s"}}},"AuthoringAddNextJunctionTurnInput":{"type":"object","additionalProperties":false,"required":["type","id","actorId","direction","startS"],"properties":{"type":{"const":"addNextJunctionTurn","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"New event id."},"actorId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor."},"direction":{"type":"string","enum":["left","right","straight"],"description":"Movement at the next junction."},"startS":{"type":"number","description":"Clip time the choice applies from.","minimum":0,"x-unit":"s"},"endS":{"type":"number","description":"Clip time the event ends.","minimum":0,"x-unit":"s"}}},"AuthoringSetWaypointRouteInput":{"type":"object","additionalProperties":false,"required":["type","id","actorId","points","startS","durationS"],"properties":{"type":{"const":"setWaypointRoute","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"New event id."},"actorId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Actor."},"points":{"type":"array","minItems":2,"description":"Scene points, the actor's start first.","items":{"type":"object","additionalProperties":false,"required":["x","z"],"properties":{"x":{"type":"number"},"z":{"type":"number"}}}},"startS":{"type":"number","description":"Clip time the route starts.","minimum":0,"x-unit":"s"},"durationS":{"type":"number","description":"Route duration.","exclusiveMinimum":0,"x-unit":"s"},"endS":{"type":"number","description":"Clip time the event ends.","minimum":0,"x-unit":"s"}}},"AuthoringSetEventTimingInput":{"type":"object","additionalProperties":false,"required":["type","id","startS"],"properties":{"type":{"const":"setEventTiming","description":"Operation id."},"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","description":"Event."},"startS":{"type":"number","description":"Start clip time.","minimum":0,"x-unit":"s"},"endS":{"type":"number","description":"End clip time.","minimum":0,"x-unit":"s"}}},"AuthoringSetWeatherInput":{"type":"object","additionalProperties":false,"required":["type","weather"],"properties":{"type":{"const":"setWeather","description":"Operation id."},"weather":{"type":"string","enum":["clear","cloudy","overcast","light_rain","heavy_rain","wet_road","fog_light","fog_dense","snow","sleet"],"description":"Canonical scenario weather."}}},"AuthoringSetClockInput":{"type":"object","additionalProperties":false,"required":["type","minutes"],"properties":{"type":{"const":"setClock","description":"Operation id."},"minutes":{"type":"integer","minimum":0,"maximum":1439,"description":"Minutes after local midnight.","x-unit":"min"}}},"AuthoringSetClipInput":{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"const":"setClip","description":"Operation id."},"clipSeconds":{"type":"number","description":"Clip length.","minimum":3,"maximum":120,"x-unit":"s"},"warmupSeconds":{"type":"number","description":"Warm-up before the clip.","minimum":0,"maximum":30,"x-unit":"s"}},"anyOf":[{"required":["clipSeconds"]},{"required":["warmupSeconds"]}]},"AuthoringTemplateOperationInput":{"type":"object","required":["type"],"properties":{"type":{"type":"string"}},"additionalProperties":true,"description":"Advanced existing TemplateOp request; common operations use the typed catalogue inputs."},"AuthoringOperationInput":{"anyOf":[{"$ref":"#/components/schemas/AuthoringAddActorInput"},{"$ref":"#/components/schemas/AuthoringMoveActorInput"},{"$ref":"#/components/schemas/AuthoringDuplicateActorInput"},{"$ref":"#/components/schemas/AuthoringRemoveRoleInput"},{"$ref":"#/components/schemas/AuthoringSetEgoInput"},{"$ref":"#/components/schemas/AuthoringSetActorSpeedInput"},{"$ref":"#/components/schemas/AuthoringSetActorStaticInput"},{"$ref":"#/components/schemas/AuthoringAddLaneChangeInput"},{"$ref":"#/components/schemas/AuthoringAddNextJunctionTurnInput"},{"$ref":"#/components/schemas/AuthoringSetWaypointRouteInput"},{"$ref":"#/components/schemas/AuthoringSetEventTimingInput"},{"$ref":"#/components/schemas/AuthoringSetWeatherInput"},{"$ref":"#/components/schemas/AuthoringSetClockInput"},{"$ref":"#/components/schemas/AuthoringSetClipInput"},{"$ref":"#/components/schemas/AuthoringTemplateOperationInput"}]},"RenderRigOutputName":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"},"RenderRigVec3":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}},"required":["x","y","z"],"additionalProperties":false},"RenderRigTransform":{"type":"object","properties":{"position":{"$ref":"#/components/schemas/RenderRigVec3"},"rotation":{"default":{},"type":"object","properties":{"yawRad":{"default":0,"type":"number","minimum":-3.141593,"maximum":3.141593},"pitchRad":{"default":0,"type":"number","minimum":-1.5707963267948966,"maximum":1.5707963267948966},"rollRad":{"default":0,"type":"number","minimum":-3.141593,"maximum":3.141593}},"additionalProperties":false}},"required":["position"],"additionalProperties":false},"RenderRigSource":{"oneOf":[{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/components/schemas/RenderRigOutputName"},"transform":{"$ref":"#/components/schemas/RenderRigTransform"},"modality":{"type":"string","enum":["rgb","depth","semantic","instance"]},"mountFrame":{"type":"string","enum":["body","gimbal"]},"attributes":{"type":"object","properties":{"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"detector":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.hdr-detector-config/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"inputDomain":{"type":"string","const":"renderer-relative-scene-signal"},"responseGainPerRendererSignal":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]},"alphaPolicy":{"type":"string","const":"require-opaque-and-discard"}},"required":["schema","inputDomain","responseGainPerRendererSignal","blackLevelNormalized","bitDepth","alphaPolicy"],"additionalProperties":false},"temporal":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.camera-temporal-request/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"timing":{"type":"object","properties":{"height":{"type":"integer","minimum":1,"maximum":16384},"shutter":{"type":"string","enum":["global","rolling"]},"readoutDirection":{"type":"string","enum":["top-to-bottom","bottom-to-top"]},"readoutSeconds":{"type":"number","minimum":0,"maximum":60},"exposureSeconds":{"type":"number","exclusiveMinimum":0,"maximum":60},"processingLatencySeconds":{"type":"number","const":0}},"required":["height","shutter","readoutDirection","readoutSeconds","exposureSeconds","processingLatencySeconds"],"additionalProperties":false},"samplesPerRow":{"type":"integer","minimum":1,"maximum":4096},"response":{"type":"object","properties":{"inputDomain":{"type":"string","const":"renderer-relative-scene-signal-seconds"},"responseGainPerRendererSignalSecond":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]}},"required":["inputDomain","responseGainPerRendererSignalSecond","blackLevelNormalized","bitDepth"],"additionalProperties":false},"budgets":{"type":"object","properties":{"maxUniqueCaptures":{"type":"integer","minimum":1,"maximum":4096},"maxCapturePixels":{"type":"integer","minimum":1,"maximum":67108864},"maxCaptureBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxReductionReadBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxWeightedValues":{"type":"integer","minimum":1,"maximum":268435456},"maxSceneActorSamples":{"type":"integer","minimum":1,"maximum":262144},"maxResidentPixelBytes":{"type":"integer","minimum":1,"maximum":536870912},"maxRetainedBytes":{"type":"integer","minimum":1,"maximum":1073741824}},"required":["maxUniqueCaptures","maxCapturePixels","maxCaptureBytes","maxReductionReadBytes","maxWeightedValues","maxSceneActorSamples","maxResidentPixelBytes","maxRetainedBytes"],"additionalProperties":false}},"required":["schema","timing","samplesPerRow","response","budgets"],"additionalProperties":false},"width":{"type":"integer","minimum":64,"maximum":8192},"height":{"type":"integer","minimum":64,"maximum":8192},"fps":{"type":"number","exclusiveMinimum":0,"maximum":240},"horizontalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"cameraModel":{"type":"object","properties":{"type":{"type":"string","const":"ftheta"},"referenceResolution":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"integer","minimum":1,"maximum":8192}},"principalPoint":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"number"}},"pixeldistToAnglePoly":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"number"}},"angleToPixeldistPoly":{"type":"array","items":{"type":"number"}},"linearCde":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number"}},"maxAngleRad":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":3.141592653589793}},"required":["type","referenceResolution","principalPoint","pixeldistToAnglePoly","maxAngleRad"],"additionalProperties":false},"nearM":{"type":"number","exclusiveMinimum":0},"farM":{"type":"number","exclusiveMinimum":0},"orthographicHeightM":{"type":"number","exclusiveMinimum":0,"maximum":10000}},"required":["width","height","fps","nearM","farM"],"additionalProperties":false},"sensorProfile":{"type":"string","const":"generic-rgb@1"},"reportedCalibration":{"type":"object","properties":{"transform":{"$ref":"#/components/schemas/RenderRigTransform"},"attributes":{"type":"object","properties":{"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"detector":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.hdr-detector-config/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"inputDomain":{"type":"string","const":"renderer-relative-scene-signal"},"responseGainPerRendererSignal":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]},"alphaPolicy":{"type":"string","const":"require-opaque-and-discard"}},"required":["schema","inputDomain","responseGainPerRendererSignal","blackLevelNormalized","bitDepth","alphaPolicy"],"additionalProperties":false},"temporal":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.camera-temporal-request/v1"},"captureStage":{"type":"string","const":"scene-pre-postprocess/v1"},"noise":{"type":"object","properties":{"model":{"type":"string","const":"gaussian-electron-ptc/v1"},"electronsPerInputUnit":{"type":"number","minimum":1e-12,"maximum":1000000000000},"shotEnabled":{"type":"boolean"},"readSigmaElectrons":{"type":"number","minimum":0,"maximum":1000000},"rootSeedHex":{"type":"string","pattern":"^[a-f0-9]{64}$"},"runNamespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["model","electronsPerInputUnit","shotEnabled","readSigmaElectrons","rootSeedHex","runNamespace"],"additionalProperties":false},"timing":{"type":"object","properties":{"height":{"type":"integer","minimum":1,"maximum":16384},"shutter":{"type":"string","enum":["global","rolling"]},"readoutDirection":{"type":"string","enum":["top-to-bottom","bottom-to-top"]},"readoutSeconds":{"type":"number","minimum":0,"maximum":60},"exposureSeconds":{"type":"number","exclusiveMinimum":0,"maximum":60},"processingLatencySeconds":{"type":"number","const":0}},"required":["height","shutter","readoutDirection","readoutSeconds","exposureSeconds","processingLatencySeconds"],"additionalProperties":false},"samplesPerRow":{"type":"integer","minimum":1,"maximum":4096},"response":{"type":"object","properties":{"inputDomain":{"type":"string","const":"renderer-relative-scene-signal-seconds"},"responseGainPerRendererSignalSecond":{"type":"number","exclusiveMinimum":0},"blackLevelNormalized":{"type":"number","minimum":0,"maximum":1},"bitDepth":{"anyOf":[{"type":"number","const":8},{"type":"number","const":10},{"type":"number","const":12},{"type":"number","const":16}]}},"required":["inputDomain","responseGainPerRendererSignalSecond","blackLevelNormalized","bitDepth"],"additionalProperties":false},"budgets":{"type":"object","properties":{"maxUniqueCaptures":{"type":"integer","minimum":1,"maximum":4096},"maxCapturePixels":{"type":"integer","minimum":1,"maximum":67108864},"maxCaptureBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxReductionReadBytes":{"type":"integer","minimum":1,"maximum":1073741824},"maxWeightedValues":{"type":"integer","minimum":1,"maximum":268435456},"maxSceneActorSamples":{"type":"integer","minimum":1,"maximum":262144},"maxResidentPixelBytes":{"type":"integer","minimum":1,"maximum":536870912},"maxRetainedBytes":{"type":"integer","minimum":1,"maximum":1073741824}},"required":["maxUniqueCaptures","maxCapturePixels","maxCaptureBytes","maxReductionReadBytes","maxWeightedValues","maxSceneActorSamples","maxResidentPixelBytes","maxRetainedBytes"],"additionalProperties":false}},"required":["schema","timing","samplesPerRow","response","budgets"],"additionalProperties":false},"width":{"type":"integer","minimum":64,"maximum":8192},"height":{"type":"integer","minimum":64,"maximum":8192},"fps":{"type":"number","exclusiveMinimum":0,"maximum":240},"horizontalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"cameraModel":{"type":"object","properties":{"type":{"type":"string","const":"ftheta"},"referenceResolution":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"integer","minimum":1,"maximum":8192}},"principalPoint":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"number"}},"pixeldistToAnglePoly":{"minItems":2,"maxItems":8,"type":"array","items":{"type":"number"}},"angleToPixeldistPoly":{"type":"array","items":{"type":"number"}},"linearCde":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number"}},"maxAngleRad":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":3.141592653589793}},"required":["type","referenceResolution","principalPoint","pixeldistToAnglePoly","maxAngleRad"],"additionalProperties":false},"nearM":{"type":"number","exclusiveMinimum":0},"farM":{"type":"number","exclusiveMinimum":0},"orthographicHeightM":{"type":"number","exclusiveMinimum":0,"maximum":10000}},"required":["width","height","fps","nearM","farM"],"additionalProperties":false}},"required":["transform","attributes"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false},{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/components/schemas/RenderRigOutputName"},"transform":{"$ref":"#/components/schemas/RenderRigTransform"},"modality":{"type":"string","const":"lidar"},"attributes":{"type":"object","properties":{"observationRun":{"type":"object","properties":{"schema":{"type":"string","const":"simforge.cloud-lidar-observation/v1"},"profile":{"type":"string","const":"generic-uniform-cpu/v1"},"geometryPolicy":{"type":"string","const":"authored-dimension-primitives/v1"},"trajectoryKeyIntervalNs":{"type":"integer","minimum":1,"maximum":10000000000},"deliveryDelayNs":{"type":"integer","minimum":0,"maximum":10000000000},"consumerArchiveByteLimit":{"type":"integer","minimum":1,"maximum":1073741824},"rangeEstimation":{"type":"object","properties":{"effectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"randomNamespace":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"seed":{"type":"integer","minimum":0,"maximum":9007199254740991},"biasM":{"type":"number"},"uniformHalfWidthM":{"type":"number","minimum":0}},"required":["effectId","randomNamespace","seed","biasM","uniformHalfWidthM"],"additionalProperties":false},"channelFault":{"type":"object","properties":{"effectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"channel":{"type":"integer","minimum":0,"maximum":255},"startNs":{"type":"integer","minimum":0,"maximum":9007199254740991},"endNs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["effectId","channel","startNs","endNs"],"additionalProperties":false},"engineering":{"type":"object","properties":{"archiveByteLimit":{"type":"integer","minimum":1,"maximum":1073741824},"truthArchiveByteLimit":{"type":"integer","minimum":1,"maximum":1073741824},"queryProvenance":{"type":"object","properties":{"maxUniqueTriangles":{"type":"integer","minimum":1,"maximum":4000000},"maxInstances":{"type":"integer","minimum":1,"maximum":65536}},"required":["maxUniqueTriangles","maxInstances"],"additionalProperties":false}},"required":["archiveByteLimit","truthArchiveByteLimit"],"additionalProperties":false}},"required":["schema","profile","geometryPolicy","trajectoryKeyIntervalNs","deliveryDelayNs","consumerArchiveByteLimit"],"additionalProperties":false},"minimumRangeM":{"type":"number","minimum":0},"returnMode":{"type":"string","const":"single"},"channels":{"type":"integer","minimum":1,"maximum":256},"rangeM":{"type":"number","exclusiveMinimum":0,"maximum":1000},"pointsPerSecond":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"rotationFrequencyHz":{"type":"number","exclusiveMinimum":0,"maximum":240},"upperFovDeg":{"type":"number","minimum":-180,"maximum":180},"lowerFovDeg":{"type":"number","minimum":-180,"maximum":180},"horizontalFovDeg":{"default":360,"type":"number","minimum":5,"maximum":360}},"required":["channels","rangeM","pointsPerSecond","rotationFrequencyHz","upperFovDeg","lowerFovDeg"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false},{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/components/schemas/RenderRigOutputName"},"transform":{"$ref":"#/components/schemas/RenderRigTransform"},"modality":{"type":"string","const":"radar"},"attributes":{"type":"object","properties":{"horizontalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"verticalFovDeg":{"type":"number","exclusiveMinimum":0,"maximum":180},"rangeM":{"type":"number","exclusiveMinimum":0,"maximum":1000},"pointsPerSecond":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["horizontalFovDeg","verticalFovDeg","rangeM","pointsPerSecond"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false},{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"sensorLabel":{"type":"string","minLength":1,"maxLength":200},"outputName":{"$ref":"#/components/schemas/RenderRigOutputName"},"transform":{"$ref":"#/components/schemas/RenderRigTransform"},"modality":{"type":"string","const":"topdown"},"attributes":{"type":"object","properties":{"width":{"type":"integer","minimum":320,"maximum":3840},"height":{"type":"integer","minimum":240,"maximum":2160},"fps":{"type":"number","exclusiveMinimum":0,"maximum":120},"camera":{"type":"string","enum":["follow-ego","overview"]},"northUp":{"type":"boolean"},"pxPerM":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["width","height","fps","camera"],"additionalProperties":false}},"required":["actorId","sensorId","outputName","transform","modality","attributes"],"additionalProperties":false}]},"RenderRig":{"$comment":"GENERATED from RenderRigV1Schema by `pnpm --filter @simforge/scenario schema:render-rig`. Do not edit.","title":"simforge.render-rig/v1","description":"Actor-mounted capture sources. Consumers also enforce unique actor/sensor/modality identities and output names, reject topdown rig sources, and check cross-field camera and scan constraints.","type":"object","properties":{"schema":{"type":"string","const":"simforge.render-rig/v1"},"sources":{"minItems":1,"maxItems":64,"type":"array","items":{"$ref":"#/components/schemas/RenderRigSource"}},"sensorHosts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"sourceId":{"$ref":"#/components/schemas/RenderRigOutputName"},"actorId":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z_-]{0,63}$"},"vehicleAsset":{"type":"object","properties":{"catalogAssetId":{"type":"string","minLength":1,"maxLength":200}},"required":["catalogAssetId"],"additionalProperties":{}}},"required":["sourceId","actorId","vehicleAsset"],"additionalProperties":false}},"clip":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0},"endSeconds":{"type":"number","exclusiveMinimum":0}},"required":["startSeconds","endSeconds"],"additionalProperties":false},"video":{"type":"object","properties":{"width":{"type":"integer","minimum":64,"maximum":8192},"height":{"type":"integer","minimum":64,"maximum":8192},"fps":{"type":"number","exclusiveMinimum":0,"maximum":240},"container":{"type":"string","enum":["mp4","webm"]},"codec":{"type":"string","enum":["h264","vp9","av1"]},"quality":{"type":"string","enum":["draft","standard","high","lossless"]}},"required":["width","height","fps","container","codec","quality"],"additionalProperties":false}},"required":["schema","sources"],"additionalProperties":false,"examples":[{"schema":"simforge.render-rig/v1","sources":[{"actorId":"ego","sensorId":"cam-front","outputName":"cam-front","transform":{"position":{"x":1.6,"y":1.45,"z":0},"rotation":{"yawRad":0,"pitchRad":-0.0524,"rollRad":0}},"modality":"rgb","attributes":{"width":1280,"height":720,"fps":20,"horizontalFovDeg":90,"nearM":0.05,"farM":1000}}]}]},"RenderRunInput":{"description":"The input of a `render` run: a scenario of the workspace (at a revision) rendered by the 2D or the 3D engine, through a sensor rig.","oneOf":[{"type":"object","additionalProperties":false,"required":["scenarioId","engine"],"properties":{"scenarioId":{"type":"string","minLength":1,"description":"A scenario of the workspace (`GET /api/v1/scenarios`)."},"revisionId":{"type":"string","minLength":1,"description":"An immutable revision of it. Default: the scenario's current revision."},"engine":{"enum":["2d"],"description":"`2d`: the top-down map video (CPU). `3d`: the Helios Engine (GPU); the schematic look is `3d` with `preset: schematic`."},"preset":{"type":"string","minLength":1,"description":"`training`, `showcase` or `schematic` (3D only). Default for a hosted 3D render: `training`."},"rig":{"description":"A complete simforge.render-rig/v1 rig, or {clip} for 2D only. Clip endSeconds must exceed startSeconds. Default: the built-in front camera on the scenario's ego.","anyOf":[{"$ref":"#/components/schemas/RenderRig"},{"type":"object","additionalProperties":false,"required":["clip"],"properties":{"clip":{"type":"object","properties":{"startSeconds":{"type":"number","minimum":0},"endSeconds":{"type":"number","exclusiveMinimum":0}},"required":["startSeconds","endSeconds"],"additionalProperties":false}}}]},"outputs":{"enum":["video","stills"],"description":"`video` (default): one MP4 per sensor. `stills`: the RGB frames as PNGs (a preview)."},"replayOf":{"type":"string","pattern":"^run_","description":"A succeeded `closed_loop` run of this scenario: render the drive that run scored (its episode's render timeline, `GET /api/v1/runs/{id}/replay`) instead of the scenario's own simulation. The render is pinned to that run's revision."}}},{"type":"object","additionalProperties":false,"required":["scenarioId","engine"],"properties":{"scenarioId":{"type":"string","minLength":1,"description":"A scenario of the workspace (`GET /api/v1/scenarios`)."},"revisionId":{"type":"string","minLength":1,"description":"An immutable revision of it. Default: the scenario's current revision."},"engine":{"enum":["3d"],"description":"`2d`: the top-down map video (CPU). `3d`: the Helios Engine (GPU); the schematic look is `3d` with `preset: schematic`."},"preset":{"type":"string","minLength":1,"description":"`training`, `showcase` or `schematic` (3D only). Default for a hosted 3D render: `training`."},"rig":{"$ref":"#/components/schemas/RenderRig","description":"A complete simforge.render-rig/v1 rig. Default: the built-in front camera on the scenario's ego."},"outputs":{"enum":["video","stills"],"description":"`video` (default): one MP4 per sensor. `stills`: the RGB frames as PNGs (a preview)."},"replayOf":{"type":"string","pattern":"^run_","description":"A succeeded `closed_loop` run of this scenario: render the drive that run scored (its episode's render timeline, `GET /api/v1/runs/{id}/replay`) instead of the scenario's own simulation. The render is pinned to that run's revision."},"rigs":{"type":"array","minItems":1,"maxItems":16,"description":"Several ego actors (3D): which rig each ego carries, every source of `rig` hosted by one of them. `rigId` is a built-in sensor rig that fits the actor's kind (a car, truck, bus, van or motorcycle takes road rigs, a drone drone rigs), or `custom` for a rig file. Each actor must be an ego of the scenario (its `ego`, or a role marked `org.simforge.ego.v1`). Absent: one ego, every source mounted on it.","items":{"type":"object","additionalProperties":false,"required":["actorId","rigId"],"properties":{"actorId":{"type":"string","minLength":1},"rigId":{"type":"string","minLength":1}}}}}}]}},"parameters":{},"securitySchemes":{"simforgeToken":{"type":"http","scheme":"bearer","description":"A `sfc_at_…` access token from `simforge login`, or an `sfk_…` API key. An operation's security lists the scopes the credential must hold."}}},"paths":{"/api/cli/metadata":{"get":{"operationId":"getCliAuthorizationServer","description":"RFC 8414 authorization server metadata, also served at `/.well-known/oauth-authorization-server`. The CLI knows only the host's name and reads every endpoint here; an AI agent reads the auth.md `agent_auth` block.","responses":{"200":{"description":"The server's endpoints, scopes and grants.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorizationServerMetadata"}}}}},"summary":"Authorization server metadata","tags":["Sign-in"],"security":[]}},"/api/cli/device/code":{"post":{"operationId":"createCliDeviceCode","description":"RFC 8628 device authorization (`simforge login --device`). Show `user_code` to the person, who approves it at `verification_uri` in a signed-in browser; then poll the token endpoint every `interval` seconds.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CliDeviceCodeRequest"}}}},"responses":{"200":{"description":"A device code to poll with and a user code to confirm.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliDeviceCodeResponse"}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Start a device sign-in","tags":["Sign-in"],"security":[]}},"/api/cli/token":{"post":{"operationId":"createCliToken","description":"The token endpoint (RFC 6749). The public `simforge-cli` client (its `client_id` required): the device code grant, `authorization_code` with PKCE, and rotating `refresh_token`. An AI agent (auth.md, no `client_id`): the claim grant `urn:workos:agent-auth:grant-type:claim`, polling its registration, and the JWT-bearer grant (RFC 7523) re-exchanging the identity assertion the claim grant returned; agents get no refresh token. Unauthenticated by design: each grant is bound by a device code, PKCE, a claim token, an assertion this host signed, or an unspent refresh token. While the person has not approved yet, the device and claim grants answer `authorization_pending` (or `slow_down`).","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CliTokenRequest"}}}},"responses":{"200":{"description":"A CLI session's access and refresh tokens; an agent's first access token and identity assertion (claim grant); or a fresh access token (JWT-bearer grant).","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CliTokenResponse"},{"$ref":"#/components/schemas/AgentClaimTokenResponse"},{"$ref":"#/components/schemas/AgentJwtBearerTokenResponse"}]}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Exchange a grant for tokens","tags":["Sign-in"],"security":[]}},"/api/cli/revoke":{"post":{"operationId":"revokeCliToken","description":"RFC 7009 revocation (`simforge logout`, an agent's sign-out). An access or refresh token, or an agent's identity assertion, ends its whole session. Always 200 for a well-formed request, whether or not the token was known.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CliRevokeRequest"}}}},"responses":{"200":{"description":"Revoked (or unknown).","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Revoke a session","tags":["Sign-in"],"security":[]}},"/api/cli/protected-resource":{"get":{"operationId":"getProtectedResourceMetadata","description":"RFC 9728 protected resource metadata of `/api/v1`, also served at `/.well-known/oauth-protected-resource` (the URL every `/api/v1` 401 names in `WWW-Authenticate: Bearer resource_metadata=…`) and `/.well-known/oauth-protected-resource/api/v1`.","responses":{"200":{"description":"The resource, its authorization server and scopes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProtectedResourceMetadata"}}}}},"summary":"Protected resource metadata","tags":["Sign-in"],"security":[]}},"/auth.md":{"get":{"operationId":"getAuthMd","description":"The auth.md recipe (https://workos.com/auth-md) for this host, also at `/.well-known/auth.md`: how an AI agent registers, is approved by a person and calls `/api/v1`. Generated from the same source as the metadata.","responses":{"200":{"description":"The recipe.","content":{"text/markdown":{"schema":{"type":"string"}}}}},"summary":"The agent sign-in recipe (auth.md)","tags":["Sign-in"],"security":[]}},"/agent/identity":{"post":{"operationId":"createAgentRegistration","description":"auth.md Step 3. `service_auth`: an AI agent registers for the account `login_hint` names; show the person `claim.verification_uri` and `claim.user_code` (only that account, signed in with a verified email, can approve it), then poll the token endpoint with the claim grant. `identity_assertion`: an ID-JAG from a trusted agent provider (`issuer_not_enabled` while none is); it never creates or verifies an account. The first ID-JAG of a provider subject answers `401 interaction_required` with a claim ceremony; once the person confirmed the link, an ID-JAG answers an identity assertion valid for at most an hour. `401 login_required` when `auth_time` is missing or over an hour old. Refusals carry `detail.reason`. `anonymous` answers `anonymous_not_enabled`. 10 registrations per address per minute; 30 ID-JAGs per provider subject per 10 minutes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityRequest"}}}},"responses":{"200":{"description":"A `service_auth` registration and its first user code, or an identity assertion for a linked provider subject.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AgentIdentityResponse"},{"$ref":"#/components/schemas/AgentAssertionResponse"}]}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"`interaction_required` (the person confirms the first link; `WWW-Authenticate: AgentAuth error=\"interaction_required\"`), or `login_required` with `max_age` (an OAuth error object).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInteractionRequired"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"503":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Register an AI agent","tags":["Sign-in"],"security":[]}},"/agent/event/notify":{"post":{"operationId":"receiveAgentSecurityEvent","description":"auth.md `events_endpoint` (present while an agent provider is trusted): the provider pushes a Security Event Token (RFC 8417, RFC 8935 push delivery), signed by its pinned JWKS with this issuer as `aud`. The identity-assertion revoked event revokes every session of its (provider, subject): their access tokens and identity assertions. Errors are `{err, description}` (RFC 8935 section 2.4).","requestBody":{"required":true,"content":{"application/secevent+jwt":{"schema":{"type":"string"}}}},"responses":{"202":{"description":"Processed (unknown event types are accepted and ignored)."},"400":{"description":"Refused: `err` is `invalid_request`, `invalid_key`, `invalid_issuer`, `invalid_audience` or `authentication_failed`.","content":{"application/json":{"schema":{"type":"object","properties":{"err":{"type":"string"},"description":{"type":"string"}},"required":["err","description"]}}}},"429":{"description":"Too many deliveries."}},"summary":"Receive an agent provider's revocation event","tags":["Sign-in"],"security":[]}},"/agent/identity/claim":{"post":{"operationId":"reissueAgentClaim","description":"auth.md Step 4: a fresh user code and verification link for a registration still waiting for its person; the previous ones stop working. `invalid_claim_token` (401), `claimed_or_in_flight` (409), `claim_expired` (410, after 24 hours).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentClaimRequest"}}}},"responses":{"200":{"description":"The new claim attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentClaimResponse"}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"409":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"410":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Re-mint an agent's user code","tags":["Sign-in"],"security":[]}},"/api/cli/userinfo":{"get":{"operationId":"getCliUserinfo","description":"The account, organization, workspace and scopes behind a CLI access token (`simforge whoami`, `simforge auth status`).","responses":{"200":{"description":"The session behind the bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliUserinfo"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Get the signed-in session","tags":["Sign-in"],"security":[{"simforgeToken":[]}]}},"/api/v1/health":{"get":{"operationId":"health","description":"Check Cloud API availability","responses":{"200":{"description":"The API is up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"summary":"Check availability","tags":["Account"],"security":[]}},"/api/v1/me":{"get":{"operationId":"getMe","responses":{"200":{"description":"Current principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get the current principal","tags":["Account"],"security":[{"simforgeToken":[]}]}},"/api/v1/status":{"get":{"operationId":"getStatus","description":"System status for any signed-in caller: component health, worker counts per class, queue depths and incidents. Counts only, the same for every caller, refreshed at most every 20 seconds.","responses":{"200":{"description":"System status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get system status","tags":["Account"],"security":[{"simforgeToken":[]}]}},"/api/v1/workspaces":{"get":{"operationId":"listWorkspaces","responses":{"200":{"description":"Available workspaces.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspacesResponse"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List workspaces","tags":["Account"],"security":[{"simforgeToken":[]}]}},"/api/v1/api-keys":{"get":{"operationId":"listApiKeys","responses":{"200":{"description":"Workspace API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyListResponse"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List API keys","tags":["Account"],"security":[{"simforgeToken":["keys:admin"]}]},"post":{"operationId":"createApiKey","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}}},"responses":{"201":{"description":"Created API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResponse"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Create an API key","tags":["Account"],"security":[{"simforgeToken":["keys:admin"]}]}},"/api/v1/api-keys/{id}":{"delete":{"operationId":"revokeApiKey","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"API key revoked."},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Revoke an API key","tags":["Account"],"security":[{"simforgeToken":["keys:admin"]}]}},"/api/v1/usage":{"get":{"operationId":"getUsage","parameters":[{"in":"query","name":"from","required":false,"description":"An ISO date or date-time (default 30 days ago).","schema":{"type":"string","minLength":1}},{"in":"query","name":"to","required":false,"description":"An ISO date or date-time after `from` (default tomorrow).","schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Cloud run usage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageResponse"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get usage","tags":["Account"],"security":[{"simforgeToken":["usage:read"]}]}},"/api/v1/runs":{"get":{"operationId":"listRuns","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"in":"query","name":"status","required":false,"schema":{"type":"string","enum":["queued","running","succeeded","partial","failed","cancelled"]}},{"in":"query","name":"type","required":false,"schema":{"type":"string"}},{"in":"query","name":"since","required":false,"description":"Runs created at or after this ISO 8601 time.","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Runs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPage"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List runs","tags":["Runs"],"security":[{"simforgeToken":["runs:read"]}]},"post":{"operationId":"createRun","description":"Start a run; dryRun returns costEstimateCents, costBreakdown and cancellation terms without starting work. Paid submissions require maxCostCents and an Idempotency-Key header (400 max_cost_required or idempotency_key_required). Admission atomically checks account free-2D quotas, max_active_jobs, daily spending and credit holds before queuing work. Over-budget work returns 402 budget_exceeded; insufficient credits return 402 insufficient_credits; unserved work returns 403 cloud_not_open. Reusing the same key and request returns the original run without reserving again.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunCreateRequest"}}}},"responses":{"200":{"description":"Quote or idempotent replay, including managed Alpamayo evaluations.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Run"},{"$ref":"#/components/schemas/DryRunResponse"},{"$ref":"#/components/schemas/Evaluation"},{"$ref":"#/components/schemas/EvaluationQuote"}]}}}},"201":{"description":"Created run or canonical managed evaluation.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Run"},{"$ref":"#/components/schemas/Evaluation"}]}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"`insufficient_credits`: the workspace's credits do not cover the estimate (`detail.requestedCents`, `detail.balanceCents`, `detail.creditsUrl`, `detail.checkout`); or `budget_exceeded` (`detail.limit` `max_cost` or `daily_cap`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"`cloud_not_open`: SimForge Cloud is off here, or no worker here runs the work yet (the reason names it, `detail.code` `run_kind_unavailable`, `detail.kinds` its job kinds); or `insufficient_scope`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Create a run","tags":["Runs"],"security":[{"simforgeToken":["runs:write"]}]}},"/api/v1/runs/{id}":{"get":{"operationId":"getRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a run","tags":["Runs"],"security":[{"simforgeToken":["runs:read"]}]}},"/api/v1/runs/{id}/events":{"get":{"operationId":"listRunEvents","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"type":"integer","minimum":0}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000}}],"responses":{"200":{"description":"Run events.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEventsResponse"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List run events","tags":["Runs"],"security":[{"simforgeToken":["runs:read"]}]}},"/api/v1/runs/{id}/cancel":{"post":{"operationId":"cancelRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cancelled run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Cancel a run","tags":["Runs"],"security":[{"simforgeToken":["runs:write"]}]}},"/api/v1/runs/{id}/artifacts":{"get":{"operationId":"listRunArtifacts","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Available run artifacts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactList"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List run artifacts","tags":["Runs"],"security":[{"simforgeToken":["artifacts:read"]}]}},"/api/v1/runs/{id}/replay":{"get":{"operationId":"getRunReplay","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The closed-loop run's replay: its episode's render timeline and the 2D map.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunReplay"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a closed-loop run's replay","tags":["Runs"],"security":[{"simforgeToken":["runs:read","artifacts:read"]}]}},"/api/v1/artifacts/{id}/download":{"get":{"operationId":"downloadArtifact","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Presigned artifact download.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactDownload"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Download an artifact","tags":["Runs"],"security":[{"simforgeToken":["artifacts:read"]}]}},"/api/v1/evaluations":{"post":{"operationId":"createEvaluation","description":"Score a succeeded 3D scenario render with pinned Alpamayo 1.5 BF16 by default, or with a registered model version (modelVersionId, optional endpointId) whose family, revision, checkpoint digest, observation contract and horizons are resolved server-side. Requires maxCostCents and Idempotency-Key, including dryRun. One canonical compute job; no GPU work or writes for dryRun.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationCreateRequest"}}}},"responses":{"200":{"description":"Quote or idempotent replay.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EvaluationQuote"},{"$ref":"#/components/schemas/Evaluation"}]}}}},"201":{"description":"Created evaluation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evaluation"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Score a scenario render with Alpamayo 1.5","tags":["Runs"],"security":[{"simforgeToken":["runs:write"]}]},"get":{"operationId":"listEvaluations","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}}],"responses":{"200":{"description":"Evaluation data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationPage"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Alpamayo 1.5 evaluations","tags":["Runs"],"security":[{"simforgeToken":["runs:read"]}]}},"/api/v1/evaluations/{id}":{"get":{"operationId":"getEvaluation","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Evaluation data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evaluation"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get an evaluation","tags":["Runs"],"security":[{"simforgeToken":["runs:read"]}]}},"/api/v1/evaluations/{id}/result":{"get":{"operationId":"getEvaluationResult","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Evaluation data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationResult"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get scored metrics and provenance","tags":["Runs"],"security":[{"simforgeToken":["runs:read"]}]}},"/api/v1/evaluations/{id}/artifacts/{artifactId}/download":{"post":{"operationId":"downloadEvaluationArtifact","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"artifactId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Short-lived exact-object download grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationDownload"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Download an evaluation artifact","tags":["Runs"],"security":[{"simforgeToken":["artifacts:read","runs:read"]}]}},"/api/v1/uploads":{"post":{"operationId":"createUpload","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequest"}}}},"responses":{"201":{"description":"Created upload grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Create an upload","tags":["Recordings and uploads"],"security":[{"simforgeToken":["runs:write"]}]}},"/api/v1/recordings":{"post":{"operationId":"createRecording","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingCreateRequest"}}}},"responses":{"201":{"description":"Stored recording (idempotent by digest).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recording"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Store a recording","tags":["Recordings and uploads"],"security":[{"simforgeToken":["scenarios:write"]}]}},"/api/v1/recordings/{sha256}":{"get":{"operationId":"getRecording","parameters":[{"in":"path","name":"sha256","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{64}$"}}],"responses":{"200":{"description":"Recording and a time-limited download URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingDownload"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a recording","tags":["Recordings and uploads"],"security":[{"simforgeToken":["scenarios:read"]}]}},"/api/v1/scenarios":{"get":{"operationId":"listScenarios","description":"List scenarios in the current workspace","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Scenarios.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioPage"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List scenarios","tags":["Scenarios"],"security":[{"simforgeToken":["scenarios:read"]}]}},"/api/v1/scenarios/{id}":{"get":{"operationId":"getScenario","description":"Get a scenario in the current workspace","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenario.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioDetail"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a scenario","tags":["Scenarios"],"security":[{"simforgeToken":["scenarios:read"]}]}},"/api/v1/scenarios/{id}/copy":{"post":{"operationId":"copyScenario","description":"Copy a scenario: an independent copy of its current draft (map pin, actors, timeline, settings and render rig) as a fresh draft whose lineage names the original; renders, runs and transfers are not copied. It lands in `datasetId`, else the original's dataset when the caller may write there, else the caller's default dataset (a read-only dataset is never written), named `<name> (copy)` (`(copy 2)`, ... when taken) unless `name` is given. An `Idempotency-Key` header makes it one copy per key: a repeat answers the same copy with 200, and a key already used for another scenario's copy is 409 `idempotency_conflict`. A map version that is no longer its map's latest is 409 `conflict` (`detail.code: scenario_map_version_not_latest`).","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioCopyRequest"}}}},"responses":{"200":{"description":"The copy an earlier request with this Idempotency-Key made.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioCopy"}}}},"201":{"description":"The new copy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioCopy"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Copy a scenario","tags":["Scenarios"],"security":[{"simforgeToken":["scenarios:write"]}]}},"/api/cli/scenarios/{documentId}":{"get":{"operationId":"pullCliScenario","description":"One scenario of the session's workspace as the editor stores it (`simforge scenario pull`). Unknown and inaccessible ids are the same 404.","parameters":[{"in":"path","name":"documentId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"The scenario.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliScenarioDocument"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Pull a scenario document","tags":["Scenarios"],"security":[{"simforgeToken":["scenarios:read"]}]}},"/api/v1/datasets":{"get":{"operationId":"listDatasets","description":"List the current workspace's datasets; the first page also lists datasets shared with every workspace (`shared`), which are read-only","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Datasets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetPage"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List datasets","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read"]}]}},"/api/v1/datasets/{id}":{"get":{"operationId":"getDataset","description":"Get a dataset of the current workspace, or one shared with every workspace","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Dataset.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetDetail"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a dataset","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read"]}]}},"/api/v1/datasets/{id}/files":{"get":{"operationId":"listDatasetFiles","description":"A dataset, a filter of it or chosen scenarios as files (simforge.dataset-files/v1): signed links to the stored objects, a page at a time; `format=urls` for an aria2c link list; `dryRun` for counts and size. Files still being prepared are `pending`: ask for the same page again.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"q","required":false,"schema":{"type":"string"},"description":"Free-text search, as in the library's search box."},{"in":"query","name":"filter","required":false,"schema":{"type":"string"},"description":"Library filters: space-separated `facet:value[,value]` tokens, e.g. `grade:A tag:cut-in`."},{"in":"query","name":"sourceLog","required":false,"schema":{"type":"string"},"description":"Only the scenarios of one recorded drive."},{"in":"query","name":"ids","required":false,"schema":{"type":"string"},"description":"Exactly these scenarios, comma-separated document ids (POST the same fields for long lists)."},{"in":"query","name":"include","required":false,"schema":{"type":"string"},"description":"Comma-separated: `renders[:training|showcase|schematic]`, `labels`, `gt`, `recordings`, or `scenarios` alone; default `renders:training`."},{"in":"query","name":"passes","required":false,"schema":{"type":"string"},"description":"Keep only these render modalities (comma-separated)."},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000}},{"in":"query","name":"format","required":false,"schema":{"type":"string","enum":["json","urls"]},"description":"`urls`: the whole selection as an aria2c input file of 24-hour links."},{"in":"query","name":"dryRun","required":false,"schema":{"type":"boolean"},"description":"Counts and size of the whole selection; no links."}],"responses":{"200":{"description":"A page of files (each a signed GET of the stored object, range-capable; ask again for fresh links), the dry-run summary, or (`format=urls`) the link list.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DatasetFilesPage"},{"$ref":"#/components/schemas/DatasetFilesSummary"}]}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"`rate_limited`: too many requests this minute; `Retry-After` says when to ask again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List a dataset's files","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read","artifacts:read"]}]},"post":{"operationId":"listDatasetFilesBySelection","description":"The same listing with its fields in a JSON body, for id lists too long for a URL.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetFilesRequest"}}}},"responses":{"200":{"description":"A page of files (each a signed GET of the stored object, range-capable; ask again for fresh links), the dry-run summary, or (`format=urls`) the link list.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DatasetFilesPage"},{"$ref":"#/components/schemas/DatasetFilesSummary"}]}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"`rate_limited`: too many requests this minute; `Retry-After` says when to ask again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List a selection's files","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read","artifacts:read"]}]}},"/api/v1/dataset-files/links/{token}/{path}":{"get":{"operationId":"downloadDatasetFileLink","description":"One file of a link list: redirects to a fresh signed URL of the stored object while the link (24 hours) is valid. The link is the grant; no credential is needed.","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}},{"in":"path","name":"path","required":true,"schema":{"type":"string"},"description":"The file's place in the pulled folder (may contain `/`)."}],"responses":{"302":{"description":"Redirect to the stored object."},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Download one file of a link list","tags":["Datasets"],"security":[]}},"/api/v1/dataset-copies":{"post":{"operationId":"createDatasetCopy","description":"Copy chosen scenarios, a filter or all of a dataset shared with every workspace (SIMLOG-25k) into one of your own datasets, existing or new; a scenario already copied there is skipped. dryRun counts and estimates it","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCopyCreateRequest"}}}},"responses":{"200":{"description":"The count and time estimate (dryRun).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCopyEstimate"}}}},"201":{"description":"The copy, finished in the response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCopy"}}}},"202":{"description":"The copy, going on in the background: follow it with getDatasetCopy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCopy"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Copy scenarios of a shared dataset","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read","scenarios:write"]}]},"get":{"operationId":"listDatasetCopies","parameters":[{"in":"query","name":"datasetId","required":false,"schema":{"type":"string"}},{"in":"query","name":"open","required":false,"schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"The workspace's copies, newest first (at most 20).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCopyList"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List dataset copies","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read"]}]}},"/api/v1/dataset-copies/{id}":{"get":{"operationId":"getDatasetCopy","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"State, counts (copied, skipped as already copied, failed), the first failures and the time left.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCopy"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a dataset copy","tags":["Datasets"],"security":[{"simforgeToken":["datasets:read"]}]}},"/api/v1/maps":{"get":{"operationId":"listMaps","description":"List maps visible in the current workspace","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Maps.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapPage"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List maps","tags":["Maps and vehicles"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/vehicles":{"get":{"operationId":"listVehicles","description":"List the vehicles a scenario in the current workspace can bind: the shared catalog's, then the workspace's own","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Vehicles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehiclePage"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List vehicles","tags":["Maps and vehicles"],"security":[{"simforgeToken":["scenarios:read"]}]},"post":{"operationId":"importVehicle","description":"Store the model an upload of kind vehicle-model holds as the workspace's own vehicle workspace.<id>, private to it; the server re-validates it against the vehicle model contract","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehicleImportRequest"}}}},"responses":{"201":{"description":"The stored vehicle.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehicleSummary"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Import a vehicle","tags":["Maps and vehicles"],"security":[{"simforgeToken":["scenarios:write"]}]}},"/api/v1/vehicles/{id}":{"delete":{"operationId":"deleteVehicle","description":"Retire one of the workspace's own vehicles (workspace.<id>)","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Vehicle retired."},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Retire a vehicle","tags":["Maps and vehicles"],"security":[{"simforgeToken":["scenarios:write"]}]}},"/api/v1/assets":{"get":{"operationId":"listAssets","description":"List every catalog asset of the pinned actor closure with its rendered preview (Helios still and thumbnail), source, licence and whether authoring accepts it","responses":{"200":{"description":"Assets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetList"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List assets","tags":["Maps and vehicles"],"security":[{"simforgeToken":["scenarios:read"]}]}},"/api/v1/maps/{id}":{"get":{"operationId":"getMap","description":"Get a map visible in the current workspace","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Map.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSummary"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a map","tags":["Maps and vehicles"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/authoring/catalogue":{"get":{"operationId":"authoringCatalogue","parameters":[],"responses":{"200":{"description":"Workspace-bound authoring receipt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringCatalogue"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get the operation catalogue","tags":["Authoring"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/authoring/capabilities":{"get":{"operationId":"authoringCapabilities","parameters":[],"responses":{"200":{"description":"Workspace-bound authoring receipt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringResult"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get authoring capabilities","tags":["Authoring"],"security":[{"simforgeToken":[]}]}},"/api/v1/drafts/{id}":{"get":{"operationId":"readDraft","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Workspace-bound authoring receipt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftReceipt"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a draft","tags":["Authoring"],"security":[{"simforgeToken":["maps:read","scenarios:read"]}]}},"/api/v1/drafts":{"post":{"operationId":"createDraft","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftCreateRequest"}}}},"responses":{"200":{"description":"Atomic authoring result; save returns an immutable revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftReceipt"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Create a draft","tags":["Authoring"],"security":[{"simforgeToken":["maps:read","scenarios:write"]}]}},"/api/v1/drafts/{id}/transactions":{"post":{"operationId":"applyDraftTransaction","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftTransactionRequest"}}}},"responses":{"200":{"description":"Atomic authoring result; save returns an immutable revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringHttpDraftTransactionResult"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Apply a transaction","tags":["Authoring"],"security":[{"simforgeToken":["maps:read","scenarios:write"]}]}},"/api/v1/drafts/{id}/save":{"post":{"operationId":"saveDraft","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftSaveRequest"}}}},"responses":{"200":{"description":"Atomic authoring result; save returns an immutable revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftRevisionReceipt"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Save a draft","tags":["Authoring"],"security":[{"simforgeToken":["maps:read","scenarios:write"]}]}},"/api/v1/drafts/{id}/freeze-revision":{"post":{"operationId":"freezeDraftRevision","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftSaveRequest"}}}},"responses":{"200":{"description":"Atomic authoring result; save returns an immutable revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftRevisionReceipt"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Freeze a revision","tags":["Authoring"],"security":[{"simforgeToken":["maps:read","scenarios:write"]}]}},"/api/v1/drafts/{id}/validate":{"post":{"operationId":"validateDraft","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftValidateRequest"}}}},"responses":{"200":{"description":"Atomic authoring result; save returns an immutable revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringResult"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Validate a draft","tags":["Authoring"],"security":[{"simforgeToken":["maps:read","scenarios:read"]}]}},"/api/v1/authoring/maps/{mapVersionId}/spawn":{"post":{"operationId":"probeAuthoringSpawn","parameters":[{"in":"path","name":"mapVersionId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringSpawnRequest"}}}},"responses":{"200":{"description":"Atomic authoring result; save returns an immutable revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringResult"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Probe a spawn point","tags":["Authoring"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/authoring/maps/{mapVersionId}/discovery":{"get":{"operationId":"discoverAuthoringMap","parameters":[{"in":"path","name":"mapVersionId","required":true,"schema":{"type":"string"}},{"schema":{"type":"string","enum":["locations","lanes","movements","catalogue"],"default":"lanes"},"required":false,"name":"kind","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"limit","in":"query"},{"schema":{"type":["number","null"]},"required":false,"name":"x","in":"query"},{"schema":{"type":["number","null"]},"required":false,"name":"z","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":256},"required":false,"name":"catalogId","in":"query"}],"responses":{"200":{"description":"Bounded semantic map discovery; no map package bytes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthoringResult"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Discover a map","tags":["Authoring"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/distribution/license":{"get":{"operationId":"getDistributionAgreement","description":"Current runtime and map pack agreement (CLI credential, maps:read)","responses":{"200":{"description":"The current agreement, or why none is available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionAgreementResponse"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get the agreement","tags":["Distribution"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/distribution/license/accept":{"post":{"operationId":"acceptDistributionAgreement","description":"Accept the exact current agreement version and digest (CLI credential, maps:read)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionAgreementAcceptRequest"}}}},"responses":{"200":{"description":"Recorded acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionAgreementAcceptance"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Accept the agreement","tags":["Distribution"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/distribution/runtime":{"post":{"operationId":"downloadDistributionRuntime","description":"Sign a download of an entitled runtime release (CLI credential, runtime:read)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionRuntimeRequest"}}}},"responses":{"200":{"description":"A signed URL valid for at most 15 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionDownload"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Download the runtime","tags":["Distribution"],"security":[{"simforgeToken":["runtime:read"]}]}},"/api/v1/distribution/cli":{"post":{"operationId":"downloadDistributionCli","description":"Sign a download of the entitled staff local CLI (CLI credential, runtime:read)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionCliRequest"}}}},"responses":{"200":{"description":"A signed URL valid for at most 15 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionDownload"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Download the local CLI","tags":["Distribution"],"security":[{"simforgeToken":["runtime:read"]}]}},"/api/v1/distribution/maps/{slug}":{"post":{"operationId":"downloadDistributionMap","description":"Sign a download of an entitled map pack (CLI credential, maps:read)","parameters":[{"in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionMapRequest"}}}},"responses":{"200":{"description":"A signed URL valid for at most 15 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionDownload"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Download a map pack","tags":["Distribution"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/v1/telemetry":{"get":{"operationId":"getRuntimeUsageTerms","description":"Which usage batch schema the caller's latest accepted agreement allows (CLI credential): v2 only under an agreement that lists the v2 records","responses":{"200":{"description":"The account's latest accepted agreement and the batch schema it allows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryTerms"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get the usage batch schema the account's terms allow","tags":["Telemetry"],"security":[{"simforgeToken":[]}]},"post":{"operationId":"reportRuntimeUsage","description":"Deliver one sealed usage batch from an installed runtime (CLI credential; a condition of the SimForge account and download terms). A v2 batch is refused unless its agreementVersion is the account's latest accepted agreement and lists the v2 records","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TelemetryBatch"},{"$ref":"#/components/schemas/TelemetryBatchV2"}]}}}},"responses":{"200":{"description":"Stored, or already stored under this batch ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryReceipt"}}}},"400":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"The request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Report runtime usage","tags":["Telemetry"],"security":[{"simforgeToken":[]}]}},"/api/cli/bench/results":{"post":{"operationId":"submitCliBenchResult","description":"Submit one renderer benchmark result (`simforge bench --submit`).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliBenchResult"}}}},"responses":{"201":{"description":"The stored result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliBenchReceipt"}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"413":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"415":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Submit a bench result","tags":["Benchmark"],"security":[{"simforgeToken":["bench:write"]}]}},"/api/cli/bench/packs/{path}":{"get":{"parameters":[{"in":"path","name":"path","required":true,"description":"`closures/<digest>.json`, or `blobs/sha256/<aa>/<sha256>` for a member a listed closure names.","schema":{"type":"string"}}],"operationId":"getCliBenchPack","description":"The benchmark's extended scene pack (`simforge bench --extended`): a closure document, or a 302 to a short-lived URL of one of its members. The CLI verifies every byte against the closure's digests.","responses":{"200":{"description":"The closure document.","content":{"application/json":{"schema":{"type":"object"}}}},"302":{"description":"A short-lived URL of the blob."},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"502":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Get a bench pack file","tags":["Benchmark"],"security":[{"simforgeToken":["maps:read"]}]},"head":{"parameters":[{"in":"path","name":"path","required":true,"description":"`closures/<digest>.json`, or `blobs/sha256/<aa>/<sha256>` for a member a listed closure names.","schema":{"type":"string"}}],"operationId":"headCliBenchPack","description":"The same as GET without the body.","responses":{"200":{"description":"The closure exists."},"302":{"description":"A short-lived URL of the blob."},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"502":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Check a bench pack file","tags":["Benchmark"],"security":[{"simforgeToken":["maps:read"]}]}},"/api/cli/challenge/team":{"get":{"operationId":"getChallengeTeam","description":"The caller's driving-challenge team, the submission caps left in each window, and the registry repository to push driver images to (`simforge challenge status`). 404 while the challenge is closed.","responses":{"200":{"description":"The team and its caps.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeTeamStatus"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Get your team","tags":["Challenge"],"security":[{"simforgeToken":["challenge:write"]}]}},"/api/cli/challenge/submissions":{"get":{"operationId":"listChallengeSubmissions","description":"The team's submissions, newest first (`simforge challenge submissions`).","responses":{"200":{"description":"The submissions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeSubmissionList"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"List submissions","tags":["Challenge"],"security":[{"simforgeToken":["challenge:write"]}]},"post":{"operationId":"createChallengeSubmission","description":"Queue a driver image, by digest in the team's repository, for the next nightly evaluation (`simforge challenge submit`).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeSubmitRequest"}}}},"responses":{"201":{"description":"The queued submission.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeSubmissionReceipt"}}}},"400":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"409":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Submit a driver","tags":["Challenge"],"security":[{"simforgeToken":["challenge:write"]}]}},"/api/cli/challenge/registry-credentials":{"post":{"operationId":"issueChallengeRegistryCredentials","description":"A one-hour docker login that can push and pull only the team's repository. The password is a secret: pipe it to `docker login --password-stdin`.","responses":{"200":{"description":"The docker login.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeRegistryCredentials"}}}},"401":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"403":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"404":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}},"429":{"description":"The request failed: an OAuth error object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliOAuthError"}}}}},"summary":"Get a registry login","tags":["Challenge"],"security":[{"simforgeToken":["challenge:write"]}]}}},"webhooks":{},"tags":[{"name":"Sign-in","description":"`simforge login`: OAuth 2.0 device and browser sign-in for the CLI, the session behind a token. AI agents sign in through auth.md (`/auth.md`): register, a person approves, then the claim and JWT-bearer grants."},{"name":"Account","description":"The principal, its workspaces, API keys and usage, and system status."},{"name":"Runs","description":"Cloud runs (`--cloud`): renders, simulations, Recast log ingestion and transfers, their events and artifacts."},{"name":"Recordings and uploads","description":"Upload grants and content-addressed recordings for Recast log ingestion."},{"name":"Scenarios","description":"Scenarios in the current workspace."},{"name":"Datasets","description":"Datasets, their files as signed links (`simforge.dataset-files/v1`, `simforge datasets pull`), and copies out of shared datasets (SIMLOG-25k)."},{"name":"Maps and vehicles","description":"Maps the workspace can use, the vehicles a scenario can bind and the asset gallery."},{"name":"Authoring","description":"Hosted scenario authoring: drafts, transactions, validation and map discovery."},{"name":"Distribution","description":"The runtime and map pack agreement and signed downloads (`simforge runtime install`, `simforge maps pull`)."},{"name":"Telemetry","description":"Runtime usage telemetry, a condition of the runtime terms."},{"name":"Benchmark","description":"Renderer benchmark results and scene packs (`simforge bench`)."},{"name":"Challenge","description":"The driving challenge: team, registry login and submissions (`simforge challenge`)."}]}