{"openapi":"3.0.3","info":{"title":"Bucker API","description":"AI-first error monitoring — control-plane API.","version":"0.1.0"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A Bucker access token: a personal access token (`bpat_…`) for a script, or the session token the dashboard holds. Tokens are org-pinned and their scopes are re-intersected with live memberships on every request, so a demoted owner’s token shrinks without anything being revoked."},"dsnPublicKey":{"type":"apiKey","in":"header","name":"x-sentry-auth","description":"The DSN public key, which authenticates a PROJECT rather than a user and ships inside customer application bundles by design. Accepted in three places for SDK compatibility and this document can only name one: `X-Sentry-Auth: Sentry sentry_key=<key>`, `?sentry_key=<key>` for browsers that cannot set a custom header, and `Authorization: DSN <dsn>`."},"scimBearer":{"type":"http","scheme":"bearer","description":"A per-organization SCIM provisioning token, issued from that organization’s settings and presented by the identity provider. Not a session token: it belongs to a directory integration, not to a person."}},"schemas":{"IsoTimestampInput":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z$"},"Sha256DigestInput":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"IdentifierInput":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},"ProofTierInput":{"type":"string","enum":["A","B","C","VOID","NONE"]},"ProofVerdictInput":{"type":"string","enum":["PASSED","VOID","FAILED"]},"ClaimStatusInput":{"type":"string","enum":["SUPPORTED","REFUTED","INCONCLUSIVE","NOT_ATTESTED"]},"RecheckHandleInput":{"type":"object","properties":{"mechanism":{"type":"string","enum":["SHELL","GIT","ARTIFACT","API","NONE"]},"instruction":{"type":"string","maxLength":2000},"expectation":{"type":"string","maxLength":2000},"inputs":{"type":"object","additionalProperties":{"type":"string"}},"reproducibility":{"type":"string","enum":["DETERMINISTIC","STATISTICAL","NOT_REPRODUCIBLE"]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"nullable":true,"enum":[null]}]}},"required":["mechanism","instruction","expectation","inputs","reproducibility","notes"],"additionalProperties":false},"BehavioralSelectionCriterionInput":{"type":"object","properties":{"basis":{"type":"string","maxLength":80},"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":"string","maxLength":600}},"required":["basis","samples","description"],"additionalProperties":false},"BehavioralSelectionEvidenceInput":{"type":"object","properties":{"candidatePool":{"type":"integer","minimum":0,"maximum":9007199254740991},"selected":{"type":"integer","minimum":0,"maximum":9007199254740991},"replayed":{"type":"integer","minimum":0,"maximum":9007199254740991},"notReplayed":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","maxLength":120},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"criteria":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/BehavioralSelectionCriterionInput"}},"recordedFrom":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"recordedUntil":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]}},"required":["candidatePool","selected","replayed","notReplayed","criteria","recordedFrom","recordedUntil"],"additionalProperties":false},"BehavioralCoverageEvidenceInput":{"type":"object","properties":{"patchedFiles":{"type":"integer","minimum":0,"maximum":9007199254740991},"patchedLinesExecutable":{"type":"integer","minimum":0,"maximum":9007199254740991},"patchedLinesExercised":{"type":"integer","minimum":0,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"filesNotExercised":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":1024}},"addedLinesUnreachableByRecording":{"type":"integer","minimum":0,"maximum":9007199254740991},"instrument":{"type":"string","maxLength":80},"fileGranularityOnly":{"type":"boolean"}},"required":["patchedFiles","patchedLinesExecutable","patchedLinesExercised","ratio","filesNotExercised","addedLinesUnreachableByRecording","instrument","fileGranularityOnly"],"additionalProperties":false},"BehavioralDiffFindingInput":{"type":"object","properties":{"sampleId":{"type":"string","maxLength":200},"selectionBasis":{"type":"string","maxLength":80},"pointer":{"type":"string","maxLength":512},"change":{"type":"string","maxLength":80},"classification":{"type":"string","enum":["INTENDED","UNINTENDED","UNCLASSIFIED"]},"basis":{"type":"object","properties":{"rule":{"type":"string","maxLength":120},"detail":{"type":"string","minLength":1,"maxLength":600},"source":{"type":"string","maxLength":80}},"required":["rule","detail","source"],"additionalProperties":false},"normalizations":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":80}}},"required":["sampleId","selectionBasis","pointer","change","classification","basis","normalizations"],"additionalProperties":false},"BehavioralDiffEvidenceInput":{"type":"object","properties":{"baseCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"patchDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"selection":{"$ref":"#/components/schemas/BehavioralSelectionEvidenceInput"},"coverage":{"$ref":"#/components/schemas/BehavioralCoverageEvidenceInput"},"normalizers":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":80}},"samplesWithDiffs":{"type":"integer","minimum":0,"maximum":9007199254740991},"diffsFound":{"type":"integer","minimum":0,"maximum":9007199254740991},"intended":{"type":"integer","minimum":0,"maximum":9007199254740991},"unintended":{"type":"integer","minimum":0,"maximum":9007199254740991},"unclassified":{"type":"integer","minimum":0,"maximum":9007199254740991},"findings":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/BehavioralDiffFindingInput"}},"findingsTruncated":{"type":"boolean"},"sandboxProvider":{"type":"string","maxLength":120},"dependenciesMockedFromRecording":{"type":"boolean"}},"required":["baseCommit","patchDigest","selection","coverage","normalizers","samplesWithDiffs","diffsFound","intended","unintended","unclassified","findings","findingsTruncated","sandboxProvider","dependenciesMockedFromRecording"],"additionalProperties":false},"DivergencePointInput":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"frameKey":{"type":"string","maxLength":1024},"faultClass":{"type":"string","enum":["WRONG_BRANCH","WRONG_VALUE","MISSING_CALL","EXTRA_CALL","ERROR_RAISED","FRAME_MISMATCH","EXECUTION_TRUNCATED"]},"file":{"anyOf":[{"type":"string","maxLength":1024},{"nullable":true,"enum":[null]}]},"line":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"field":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["index","frameKey","faultClass","file","line","field"],"additionalProperties":false},"DivergenceLocalizationEvidenceInput":{"type":"object","properties":{"status":{"type":"string","enum":["LOCALIZED","NO_DIVERGENCE","INCONCLUSIVE_NONDETERMINISM","UNAVAILABLE"]},"referenceLabel":{"type":"string","maxLength":120},"candidateLabel":{"type":"string","maxLength":120},"referenceCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"candidateCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"patchedCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"referenceTraceDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"candidateTraceDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"patchedTraceDigest":{"anyOf":[{"$ref":"#/components/schemas/Sha256DigestInput"},{"nullable":true,"enum":[null]}]},"controlTraceDigest":{"anyOf":[{"$ref":"#/components/schemas/Sha256DigestInput"},{"nullable":true,"enum":[null]}]},"referenceFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"candidateFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"matchedFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"firstDivergence":{"anyOf":[{"$ref":"#/components/schemas/DivergencePointInput"},{"nullable":true,"enum":[null]}]},"divergenceCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"normalizationRules":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","maxLength":120},"occurrences":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ruleId","occurrences"],"additionalProperties":false}},"disabledNormalizationRules":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":120}},"unnormalizedNondeterminism":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":600}},"controlRunPerformed":{"type":"boolean"},"noiseFrontierIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postPatch":{"type":"object","properties":{"outcome":{"type":"string","enum":["RESOLVED","MOVED_AS_INTENDED","UNCHANGED","NEW_DIVERGENCE","INCONCLUSIVE","NOT_ASSERTED"]},"intendedFrameKeys":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":1024}},"unintendedDivergences":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/DivergencePointInput"}},"addressedPrior":{"type":"boolean"}},"required":["outcome","intendedFrameKeys","unintendedDivergences","addressedPrior"],"additionalProperties":false}},"required":["status","referenceLabel","candidateLabel","referenceCommit","candidateCommit","patchedCommit","referenceTraceDigest","candidateTraceDigest","patchedTraceDigest","controlTraceDigest","referenceFrames","candidateFrames","matchedFrames","firstDivergence","divergenceCount","normalizationRules","disabledNormalizationRules","unnormalizedNondeterminism","controlRunPerformed","noiseFrontierIndex","postPatch"],"additionalProperties":false},"StateSliceProbeInput":{"type":"object","properties":{"probeId":{"type":"string","maxLength":200},"approvedByPrincipalId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"expiresAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"maxCaptures":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"capturesTaken":{"type":"integer","minimum":0,"maximum":9007199254740991},"namesApproved":{"maxItems":16,"type":"array","items":{"type":"string","maxLength":120}}},"required":["probeId","approvedByPrincipalId","approvedAt","expiresAt","maxCaptures","capturesTaken","namesApproved"],"additionalProperties":false},"StateSliceEvidenceInput":{"type":"object","properties":{"origin":{"type":"string","enum":["throw","probe"]},"file":{"type":"string","maxLength":1024},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"faultExpression":{"type":"string","maxLength":400},"valuesCaptured":{"type":"integer","minimum":0,"maximum":9007199254740991},"valuesWithheld":{"type":"integer","minimum":0,"maximum":9007199254740991},"withheldByPolicy":{"type":"integer","minimum":0,"maximum":9007199254740991},"analysisComplete":{"type":"boolean"},"incompletenessReasons":{"maxItems":16,"type":"array","items":{"type":"string","maxLength":300}},"redactionShapes":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":120}},"sliceDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"scrubTiers":{"maxItems":4,"type":"array","items":{"type":"string","maxLength":40}},"probe":{"anyOf":[{"$ref":"#/components/schemas/StateSliceProbeInput"},{"nullable":true,"enum":[null]}]}},"required":["origin","file","line","faultExpression","valuesCaptured","valuesWithheld","withheldByPolicy","analysisComplete","incompletenessReasons","redactionShapes","sliceDigest","scrubTiers","probe"],"additionalProperties":false},"TestObservationInput":{"type":"string","enum":["PASSED","FAILED","ERRORED","NOT_RUN"]},"ReproQualificationInput":{"type":"object","properties":{"outcome":{"type":"string","maxLength":120},"code":{"type":"string","maxLength":120},"reason":{"type":"string","maxLength":1000},"attributedToIssue":{"type":"boolean"}},"required":["outcome","code","reason","attributedToIssue"],"additionalProperties":false},"ReproFailsOnHeadEvidenceInput":{"type":"object","properties":{"testPath":{"type":"string","maxLength":1024},"testDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"command":{"type":"string","maxLength":2000},"baseCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"observed":{"$ref":"#/components/schemas/TestObservationInput"},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"qualification":{"$ref":"#/components/schemas/ReproQualificationInput"}},"required":["testPath","testDigest","command","baseCommit","observed","exitCode","durationMs","qualification"],"additionalProperties":false},"ReproPassesPostPatchEvidenceInput":{"type":"object","properties":{"testPath":{"type":"string","maxLength":1024},"testDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"patchDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"command":{"type":"string","maxLength":2000},"observed":{"$ref":"#/components/schemas/TestObservationInput"},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["testPath","testDigest","patchDigest","command","observed","exitCode","durationMs"],"additionalProperties":false},"SuiteGreenEvidenceInput":{"type":"object","properties":{"scope":{"type":"string","enum":["full","affected","none"]},"command":{"anyOf":[{"type":"string","maxLength":2000},{"nullable":true,"enum":[null]}]},"passed":{"type":"boolean"},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"testsRun":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"testsFailed":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"decidingTest":{"anyOf":[{"type":"string","maxLength":512},{"nullable":true,"enum":[null]}]}},"required":["scope","command","passed","exitCode","durationMs","testsRun","testsFailed","decidingTest"],"additionalProperties":false},"EquivalentMutantInput":{"type":"object","properties":{"file":{"type":"string","maxLength":1024},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"operator":{"type":"string","maxLength":80},"detector":{"type":"string","maxLength":80}},"required":["file","line","operator","detector"],"additionalProperties":false},"MutationPinScoreEvidenceInput":{"type":"object","properties":{"score":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"threshold":{"type":"number","minimum":0,"maximum":1},"generated":{"type":"integer","minimum":0,"maximum":9007199254740991},"killed":{"type":"integer","minimum":0,"maximum":9007199254740991},"survived":{"type":"integer","minimum":0,"maximum":9007199254740991},"equivalent":{"type":"integer","minimum":0,"maximum":9007199254740991},"invalid":{"type":"integer","minimum":0,"maximum":9007199254740991},"aridSuppressed":{"type":"integer","minimum":0,"maximum":9007199254740991},"equivalents":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/EquivalentMutantInput"}},"mutantSetHash":{"anyOf":[{"$ref":"#/components/schemas/Sha256DigestInput"},{"nullable":true,"enum":[null]}]},"operators":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":80}},"budgetCapReached":{"type":"boolean"},"costCents":{"type":"number","minimum":0},"sandboxSeconds":{"type":"number","minimum":0},"scopedToDiff":{"type":"boolean"}},"required":["score","threshold","generated","killed","survived","equivalent","invalid","aridSuppressed","equivalents","mutantSetHash","operators","budgetCapReached","costCents","sandboxSeconds","scopedToDiff"],"additionalProperties":false},"FlakeFreedomEvidenceInput":{"type":"object","properties":{"decidingTest":{"type":"string","maxLength":512},"verdict":{"type":"string","enum":["STABLE","FLAKY","UNKNOWN"]},"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"failures":{"type":"integer","minimum":0,"maximum":9007199254740991},"flakeRatePct":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"nullable":true,"enum":[null]}]},"windowDays":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"observedFrom":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"observedUntil":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"explained":{"type":"boolean"},"explanation":{"anyOf":[{"type":"string","maxLength":1000},{"nullable":true,"enum":[null]}]}},"required":["decidingTest","verdict","samples","failures","flakeRatePct","windowDays","observedFrom","observedUntil","explained","explanation"],"additionalProperties":false},"BlastRadiusContainmentEvidenceInput":{"type":"object","properties":{"pathsTouched":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"pathsPermitted":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"violations":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"derivedFrom":{"type":"string","maxLength":200},"filesChanged":{"type":"integer","minimum":0,"maximum":9007199254740991},"addedLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"removedLines":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["pathsTouched","pathsPermitted","violations","derivedFrom","filesChanged","addedLines","removedLines"],"additionalProperties":false},"NoiseBandInput":{"type":"object","properties":{"known":{"type":"boolean"},"source":{"type":"string","maxLength":200},"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"bandPct":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"nullable":true,"enum":[null]}]},"transitionPct":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"nullable":true,"enum":[null]}]},"insideBand":{"type":"boolean"},"minReportableDeltaPp":{"type":"number","minimum":0,"maximum":100}},"required":["known","source","samples","bandPct","transitionPct","insideBand","minReportableDeltaPp"],"additionalProperties":false},"ResourceEnvelopeEvidenceInput":{"type":"object","properties":{"cpus":{"anyOf":[{"type":"number","exclusiveMinimum":true,"minimum":0},{"nullable":true,"enum":[null]}]},"memoryMb":{"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},{"nullable":true,"enum":[null]}]},"hardKillMs":{"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},{"nullable":true,"enum":[null]}]},"wallClockMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"headroomRatio":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"imageDigest":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"infraErrorClass":{"type":"string","maxLength":80},"sandboxProvider":{"type":"string","maxLength":120},"networkIsolation":{"type":"string","maxLength":40},"egressAllowlist":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":300}},"noiseBand":{"$ref":"#/components/schemas/NoiseBandInput"}},"required":["cpus","memoryMb","hardKillMs","wallClockMs","activeMs","headroomRatio","imageDigest","infraErrorClass","sandboxProvider","networkIsolation","egressAllowlist","noiseBand"],"additionalProperties":false},"ModelAttributionEvidenceInput":{"type":"object","properties":{"authorKind":{"type":"string","enum":["ai","human","hybrid"]},"agent":{"type":"object","properties":{"id":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":200},"version":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"origin":{"type":"string","enum":["internal","external"]}},"required":["id","name","version","origin"],"additionalProperties":false},"modelId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"modelProvider":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"effort":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"seed":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"temperature":{"anyOf":[{"type":"number","minimum":0,"maximum":2},{"nullable":true,"enum":[null]}]},"promptPrefixHash":{"anyOf":[{"$ref":"#/components/schemas/Sha256DigestInput"},{"nullable":true,"enum":[null]}]},"servingDeterminism":{"type":"string","enum":["NOT_CLAIMED"]}},"required":["authorKind","agent","modelId","modelProvider","effort","seed","temperature","promptPrefixHash","servingDeterminism"],"additionalProperties":false},"ActChainLinkInput":{"type":"object","properties":{"actorId":{"type":"string","maxLength":200},"actorKind":{"type":"string","enum":["user","agent","service"]},"actorName":{"type":"string","maxLength":200},"onBehalfOf":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"delegationId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"audience":{"anyOf":[{"type":"string","maxLength":300},{"nullable":true,"enum":[null]}]},"scopes":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":120}},"issuedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]}},"required":["actorId","actorKind","actorName","onBehalfOf","delegationId","jti","audience","scopes","issuedAt","expiresAt"],"additionalProperties":false},"ApproverIdentityEvidenceInput":{"type":"object","properties":{"approver":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string","maxLength":200},"displayName":{"type":"string","maxLength":200},"kind":{"type":"string","enum":["user","agent","service"]},"approvedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"authenticatedBy":{"type":"string","maxLength":120}},"required":["principalId","displayName","kind","approvedAt","authenticatedBy"]},{"nullable":true,"enum":[null]}]},"actChain":{"maxItems":16,"type":"array","items":{"$ref":"#/components/schemas/ActChainLinkInput"}},"requiredApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"receivedApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"humanApproval":{"type":"boolean"},"policyId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["approver","actChain","requiredApprovals","receivedApprovals","humanApproval","policyId"],"additionalProperties":false},"BlameLinkedFingerprintInput":{"type":"object","properties":{"fingerprint":{"type":"string","maxLength":200},"blamedCommit":{"type":"string","maxLength":80},"firstSeen":{"$ref":"#/components/schemas/IsoTimestampInput"},"events":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["fingerprint","blamedCommit","firstSeen","events"],"additionalProperties":false},"DurabilityWindowEvidenceInput":{"type":"object","properties":{"state":{"type":"string","enum":["OPEN","CLOSED","REFUSED"]},"verdict":{"type":"string","enum":["DURABLE","REGRESSED","PENDING","INCONCLUSIVE"]},"windowDays":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"openedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"closesAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"closedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"originalFingerprintRecurrences":{"type":"integer","minimum":0,"maximum":9007199254740991},"newFingerprints":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/BlameLinkedFingerprintInput"}},"reverted":{"type":"boolean"},"revertCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"releaseHealthDelta":{"anyOf":[{"type":"object","properties":{"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1},"sessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"significant":{"type":"boolean"}},"required":["before","after","delta","sessions","significant"]},{"nullable":true,"enum":[null]}]},"creditBack":{"anyOf":[{"type":"object","properties":{"issued":{"type":"boolean"},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"invoiceLineId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"reason":{"type":"string","maxLength":600}},"required":["issued","amountCents","invoiceLineId","reason"]},{"nullable":true,"enum":[null]}]}},"required":["state","verdict","windowDays","openedAt","closesAt","closedAt","originalFingerprintRecurrences","newFingerprints","reverted","revertCommit","releaseHealthDelta","creditBack"],"additionalProperties":false},"VerifierIndependenceInput":{"type":"object","properties":{"patchAuthoredByIssuer":{"type":"boolean"},"reproAuthoredByIssuer":{"type":"boolean"},"sandboxOperatedByIssuer":{"type":"boolean"}},"required":["patchAuthoredByIssuer","reproAuthoredByIssuer","sandboxOperatedByIssuer"],"additionalProperties":false},"DeclaredPatchAuthorInput":{"type":"object","properties":{"vendor":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"agentName":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"agentVersion":{"anyOf":[{"type":"string","maxLength":60},{"nullable":true,"enum":[null]}]},"modelId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["vendor","agentName","agentVersion","modelId"],"additionalProperties":false},"PatchSubmitterInput":{"type":"object","properties":{"principalId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"kind":{"type":"string","enum":["user","agent","service"]},"authenticatedBy":{"type":"string","maxLength":120}},"required":["principalId","kind","authenticatedBy"],"additionalProperties":false},"PatchOriginEvidenceInput":{"type":"object","properties":{"originKind":{"type":"string","enum":["FIRST_PARTY","EXTERNAL_AGENT","HUMAN_CONTRACTOR","UNATTRIBUTED"]},"externallyAuthored":{"type":"boolean"},"submitter":{"$ref":"#/components/schemas/PatchSubmitterInput"},"declaredAuthor":{"$ref":"#/components/schemas/DeclaredPatchAuthorInput"},"attestationSource":{"type":"string","enum":["FIRST_PARTY_LOOP","SIGNED_HANDOFF_BUNDLE","SUBMITTER_DECLARED"]},"submissionChannel":{"type":"string","enum":["REST","MCP","INTERNAL_LOOP"]},"submissionId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"patchDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"diffBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"filesChanged":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":1024}},"receivedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"verifierIndependence":{"$ref":"#/components/schemas/VerifierIndependenceInput"}},"required":["originKind","externallyAuthored","submitter","declaredAuthor","attestationSource","submissionChannel","submissionId","patchDigest","diffBytes","filesChanged","receivedAt","verifierIndependence"],"additionalProperties":false},"MitigationInverseInput":{"type":"object","properties":{"actionType":{"type":"string","maxLength":80},"description":{"type":"string","minLength":1,"maxLength":600},"applied":{"type":"boolean"}},"required":["actionType","description","applied"],"additionalProperties":false},"MitigationBlastRadiusInput":{"type":"object","properties":{"scope":{"type":"string","maxLength":40},"environments":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":120}},"targets":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":200}},"trafficFraction":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"affectedSessions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"basis":{"type":"string","maxLength":300},"notes":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":300}}},"required":["scope","environments","targets","trafficFraction","affectedSessions","basis","notes"],"additionalProperties":false},"MitigationVerificationInput":{"type":"object","properties":{"signal":{"type":"string","maxLength":400},"kind":{"type":"string","maxLength":80},"outcome":{"type":"string","enum":["OBSERVED","NOT_OBSERVED","PENDING","NOT_MEASURED"]},"detail":{"type":"string","maxLength":600},"observedFrom":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"observedUntil":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"before":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"after":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["signal","kind","outcome","detail","observedFrom","observedUntil","before","after"],"additionalProperties":false},"MitigationReversalDebtInput":{"type":"object","properties":{"debtId":{"type":"string","maxLength":200},"ownerPrincipalId":{"type":"string","maxLength":200},"dueAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"status":{"type":"string","maxLength":40},"clearedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]}},"required":["debtId","ownerPrincipalId","dueAt","status","clearedAt"],"additionalProperties":false},"MitigationApprovalInput":{"type":"object","properties":{"requestId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"requiredApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"receivedApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"humanApproval":{"type":"boolean"},"riskClass":{"type":"string","maxLength":40}},"required":["requestId","approvedByPrincipalId","approvedAt","requiredApprovals","receivedApprovals","humanApproval","riskClass"],"additionalProperties":false},"MitigationAppliedEvidenceInput":{"type":"object","properties":{"mitigationId":{"type":"string","maxLength":200},"actionType":{"type":"string","maxLength":80},"provider":{"type":"string","maxLength":120},"state":{"type":"string","enum":["ACTIVE","REVERTED","EXPIRED","FAILED"]},"appliedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"expiresAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"ttlMinutes":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"withdrawnAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"withdrawalReason":{"anyOf":[{"type":"string","maxLength":600},{"nullable":true,"enum":[null]}]},"inverse":{"anyOf":[{"$ref":"#/components/schemas/MitigationInverseInput"},{"nullable":true,"enum":[null]}]},"blastRadius":{"$ref":"#/components/schemas/MitigationBlastRadiusInput"},"approval":{"$ref":"#/components/schemas/MitigationApprovalInput"},"verification":{"anyOf":[{"$ref":"#/components/schemas/MitigationVerificationInput"},{"nullable":true,"enum":[null]}]},"issueStatusChangedByMitigation":{"type":"boolean"},"reversalDebt":{"anyOf":[{"$ref":"#/components/schemas/MitigationReversalDebtInput"},{"nullable":true,"enum":[null]}]},"artifactChecksum":{"$ref":"#/components/schemas/Sha256DigestInput"}},"required":["mitigationId","actionType","provider","state","appliedAt","expiresAt","ttlMinutes","withdrawnAt","autoReverted","withdrawalReason","inverse","blastRadius","approval","verification","issueStatusChangedByMitigation","reversalDebt","artifactChecksum"],"additionalProperties":false},"LedgerIssuerInput":{"type":"object","properties":{"id":{"type":"string","maxLength":300},"name":{"type":"string","maxLength":200},"softwareVersion":{"type":"string","maxLength":80},"keyId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["id","name","softwareVersion","keyId"],"additionalProperties":false},"LedgerPatchInput":{"type":"object","properties":{"diffDigest":{"$ref":"#/components/schemas/Sha256DigestInput"},"filesChanged":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"addedLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"removedLines":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["diffDigest","filesChanged","addedLines","removedLines"],"additionalProperties":false},"LedgerSubjectInput":{"type":"object","properties":{"orgSlug":{"type":"string","maxLength":120},"projectSlug":{"type":"string","maxLength":120},"issueId":{"type":"string","maxLength":200},"issueShortId":{"type":"string","maxLength":120},"fingerprint":{"type":"string","maxLength":200},"title":{"type":"string","maxLength":400},"runId":{"type":"string","maxLength":200},"proposalId":{"type":"string","maxLength":200},"patch":{"$ref":"#/components/schemas/LedgerPatchInput"},"repository":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]},"commit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"commitCheckedOut":{"type":"boolean"}},"required":["orgSlug","projectSlug","issueId","issueShortId","fingerprint","title","runId","proposalId","patch","repository","commit","commitCheckedOut"],"additionalProperties":false},"DigestSetInput":{"type":"object","additionalProperties":{"type":"string","pattern":"^[0-9a-f]{7,128}$"}},"ResourceDescriptorInput":{"type":"object","properties":{"name":{"type":"string","maxLength":500},"uri":{"type":"string","maxLength":500},"digest":{"$ref":"#/components/schemas/DigestSetInput"},"mediaType":{"type":"string","maxLength":200},"annotations":{"type":"object","additionalProperties":{}}}},"AiAuthoredChangePredicateInput":{"type":"object","properties":{"formatVersion":{"type":"string","enum":["0.1.0"]},"builder":{"type":"object","properties":{"id":{"type":"string","maxLength":300},"version":{"type":"object","additionalProperties":{"type":"string"}}},"required":["id","version"],"additionalProperties":false},"attestedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"author":{"type":"object","properties":{"kind":{"type":"string","enum":["ai","human","hybrid"]},"agentId":{"type":"string","maxLength":200},"agentName":{"type":"string","maxLength":200},"modelId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["kind","agentId","agentName","modelId"],"additionalProperties":false},"humanApproval":{"type":"object","properties":{"approved":{"type":"boolean"},"approverId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestampInput"},{"nullable":true,"enum":[null]}]},"actChainLength":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["approved","approverId","approvedAt","actChainLength"],"additionalProperties":false},"verification":{"type":"object","properties":{"tier":{"$ref":"#/components/schemas/ProofTierInput"},"verdict":{"$ref":"#/components/schemas/ProofVerdictInput"},"billable":{"type":"boolean"},"specUri":{"type":"string","maxLength":300}},"required":["tier","verdict","billable","specUri"],"additionalProperties":false},"ledger":{"type":"object","properties":{"formatVersion":{"type":"string","enum":["0.1.0"]},"specUri":{"type":"string","maxLength":300},"bundleId":{"$ref":"#/components/schemas/IdentifierInput"},"issuedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"issuer":{"$ref":"#/components/schemas/LedgerIssuerInput"},"subject":{"$ref":"#/components/schemas/LedgerSubjectInput"},"tier":{"$ref":"#/components/schemas/ProofTierInput"},"verdict":{"$ref":"#/components/schemas/ProofVerdictInput"},"billable":{"type":"boolean"},"claims":{"maxItems":200,"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["repro_fails_on_head"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ReproFailsOnHeadEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["repro_passes_post_patch"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ReproPassesPostPatchEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["suite_green"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/SuiteGreenEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["mutation_pin_score"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/MutationPinScoreEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["flake_freedom"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/FlakeFreedomEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["blast_radius_containment"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/BlastRadiusContainmentEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["resource_envelope"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ResourceEnvelopeEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["model_attribution"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ModelAttributionEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["approver_identity"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ApproverIdentityEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["durability_window"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/DurabilityWindowEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["state_slice"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/StateSliceEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["divergence_localization"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/DivergenceLocalizationEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["behavioral_diff"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/BehavioralDiffEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["patch_origin"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/PatchOriginEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["mitigation_applied"]},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/MitigationAppliedEvidenceInput"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false}]},{"type":"object","properties":{"kind":{"type":"string","pattern":"^[a-z][a-z0-9_]{2,63}$","not":{"enum":["repro_fails_on_head","repro_passes_post_patch","suite_green","mutation_pin_score","flake_freedom","blast_radius_containment","resource_envelope","model_attribution","approver_identity","durability_window","state_slice","divergence_localization","behavioral_diff","patch_origin","mitigation_applied"]}},"claimId":{"$ref":"#/components/schemas/IdentifierInput"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatusInput"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestampInput"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandleInput"},{"nullable":true,"enum":[null]}]},"evidence":{"type":"object","additionalProperties":{}}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false}]}},"disclosures":{"maxItems":40,"type":"array","items":{"type":"string","maxLength":600}}},"required":["formatVersion","specUri","bundleId","issuedAt","issuer","subject","tier","verdict","billable","claims","disclosures"],"additionalProperties":false}},"required":["formatVersion","builder","attestedAt","author","humanApproval","verification","ledger"],"additionalProperties":false},"ExecutionFrameInput":{"type":"object","properties":{"seq":{"type":"integer","minimum":0,"maximum":9007199254740991},"kind":{"type":"string","enum":["span","call","return","branch","value","log","error"]},"name":{"type":"string","minLength":1,"maxLength":512},"file":{"default":null,"anyOf":[{"type":"string","maxLength":1024},{"nullable":true,"enum":[null]}]},"line":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"branch":{"default":null,"anyOf":[{"type":"string","maxLength":256},{"nullable":true,"enum":[null]}]},"values":{"default":{},"type":"object","additionalProperties":{"type":"string","maxLength":4096}},"group":{"default":null,"anyOf":[{"type":"string","maxLength":128},{"nullable":true,"enum":[null]}]}},"required":["seq","kind","name"],"additionalProperties":false},"DeclaredNondeterminismInput":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":200},"normalizedBy":{"default":null,"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"note":{"default":"","type":"string","maxLength":600}},"required":["source"],"additionalProperties":false},"ExecutionTraceInput":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"commit":{"default":null,"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"source":{"type":"string","minLength":1,"maxLength":120},"frames":{"maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/ExecutionFrameInput"}},"declaredNondeterminism":{"default":[],"maxItems":64,"type":"array","items":{"$ref":"#/components/schemas/DeclaredNondeterminismInput"}},"truncated":{"default":false,"type":"boolean"}},"required":["label","source","frames"],"additionalProperties":false},"AgentSessionTreeNodeInput":{"type":"object","properties":{"spanId":{"type":"string"},"parentSpanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"traceId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"depth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startTime":{"type":"string"},"endTime":{"type":"string"},"durationMs":{"type":"number"},"offsetMs":{"type":"number"},"statusCode":{"type":"string"},"statusMessage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"provider":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"model":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"inputTokens":{"type":"number"},"outputTokens":{"type":"number"},"costMicroUsd":{"type":"number"},"metered":{"type":"boolean"},"finishReasons":{"type":"array","items":{"type":"string"}},"toolName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toolCallId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toolArguments":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toolArgumentsParsed":{"type":"boolean"},"toolFailed":{"type":"boolean"},"retrievalQuery":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"retrievalDocumentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"responseText":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contentStrippedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"children":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionTreeNodeInput"}}},"required":["spanId","parentSpanId","traceId","name","kind","depth","startTime","endTime","durationMs","offsetMs","statusCode","statusMessage","provider","model","promptKey","promptVersion","inputTokens","outputTokens","costMicroUsd","metered","finishReasons","toolName","toolCallId","toolArguments","toolArgumentsParsed","toolFailed","retrievalQuery","retrievalDocumentCount","responseText","contentStrippedCount","children"]},"IsoTimestamp":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z$"},"Sha256Digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"Identifier":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},"ProofTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"ProofVerdict":{"type":"string","enum":["PASSED","VOID","FAILED"]},"ClaimStatus":{"type":"string","enum":["SUPPORTED","REFUTED","INCONCLUSIVE","NOT_ATTESTED"]},"RecheckHandle":{"type":"object","properties":{"mechanism":{"type":"string","enum":["SHELL","GIT","ARTIFACT","API","NONE"]},"instruction":{"type":"string","maxLength":2000},"expectation":{"type":"string","maxLength":2000},"inputs":{"type":"object","additionalProperties":{"type":"string"}},"reproducibility":{"type":"string","enum":["DETERMINISTIC","STATISTICAL","NOT_REPRODUCIBLE"]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"nullable":true,"enum":[null]}]}},"required":["mechanism","instruction","expectation","inputs","reproducibility","notes"],"additionalProperties":false},"BehavioralSelectionCriterion":{"type":"object","properties":{"basis":{"type":"string","maxLength":80},"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":"string","maxLength":600}},"required":["basis","samples","description"],"additionalProperties":false},"BehavioralSelectionEvidence":{"type":"object","properties":{"candidatePool":{"type":"integer","minimum":0,"maximum":9007199254740991},"selected":{"type":"integer","minimum":0,"maximum":9007199254740991},"replayed":{"type":"integer","minimum":0,"maximum":9007199254740991},"notReplayed":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","maxLength":120},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"criteria":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/BehavioralSelectionCriterion"}},"recordedFrom":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"recordedUntil":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]}},"required":["candidatePool","selected","replayed","notReplayed","criteria","recordedFrom","recordedUntil"],"additionalProperties":false},"BehavioralCoverageEvidence":{"type":"object","properties":{"patchedFiles":{"type":"integer","minimum":0,"maximum":9007199254740991},"patchedLinesExecutable":{"type":"integer","minimum":0,"maximum":9007199254740991},"patchedLinesExercised":{"type":"integer","minimum":0,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"filesNotExercised":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":1024}},"addedLinesUnreachableByRecording":{"type":"integer","minimum":0,"maximum":9007199254740991},"instrument":{"type":"string","maxLength":80},"fileGranularityOnly":{"type":"boolean"}},"required":["patchedFiles","patchedLinesExecutable","patchedLinesExercised","ratio","filesNotExercised","addedLinesUnreachableByRecording","instrument","fileGranularityOnly"],"additionalProperties":false},"BehavioralDiffFinding":{"type":"object","properties":{"sampleId":{"type":"string","maxLength":200},"selectionBasis":{"type":"string","maxLength":80},"pointer":{"type":"string","maxLength":512},"change":{"type":"string","maxLength":80},"classification":{"type":"string","enum":["INTENDED","UNINTENDED","UNCLASSIFIED"]},"basis":{"type":"object","properties":{"rule":{"type":"string","maxLength":120},"detail":{"type":"string","minLength":1,"maxLength":600},"source":{"type":"string","maxLength":80}},"required":["rule","detail","source"],"additionalProperties":false},"normalizations":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":80}}},"required":["sampleId","selectionBasis","pointer","change","classification","basis","normalizations"],"additionalProperties":false},"BehavioralDiffEvidence":{"type":"object","properties":{"baseCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"patchDigest":{"$ref":"#/components/schemas/Sha256Digest"},"selection":{"$ref":"#/components/schemas/BehavioralSelectionEvidence"},"coverage":{"$ref":"#/components/schemas/BehavioralCoverageEvidence"},"normalizers":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":80}},"samplesWithDiffs":{"type":"integer","minimum":0,"maximum":9007199254740991},"diffsFound":{"type":"integer","minimum":0,"maximum":9007199254740991},"intended":{"type":"integer","minimum":0,"maximum":9007199254740991},"unintended":{"type":"integer","minimum":0,"maximum":9007199254740991},"unclassified":{"type":"integer","minimum":0,"maximum":9007199254740991},"findings":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/BehavioralDiffFinding"}},"findingsTruncated":{"type":"boolean"},"sandboxProvider":{"type":"string","maxLength":120},"dependenciesMockedFromRecording":{"type":"boolean"}},"required":["baseCommit","patchDigest","selection","coverage","normalizers","samplesWithDiffs","diffsFound","intended","unintended","unclassified","findings","findingsTruncated","sandboxProvider","dependenciesMockedFromRecording"],"additionalProperties":false},"DivergencePoint":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"frameKey":{"type":"string","maxLength":1024},"faultClass":{"type":"string","enum":["WRONG_BRANCH","WRONG_VALUE","MISSING_CALL","EXTRA_CALL","ERROR_RAISED","FRAME_MISMATCH","EXECUTION_TRUNCATED"]},"file":{"anyOf":[{"type":"string","maxLength":1024},{"nullable":true,"enum":[null]}]},"line":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"field":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["index","frameKey","faultClass","file","line","field"],"additionalProperties":false},"DivergenceLocalizationEvidence":{"type":"object","properties":{"status":{"type":"string","enum":["LOCALIZED","NO_DIVERGENCE","INCONCLUSIVE_NONDETERMINISM","UNAVAILABLE"]},"referenceLabel":{"type":"string","maxLength":120},"candidateLabel":{"type":"string","maxLength":120},"referenceCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"candidateCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"patchedCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"referenceTraceDigest":{"$ref":"#/components/schemas/Sha256Digest"},"candidateTraceDigest":{"$ref":"#/components/schemas/Sha256Digest"},"patchedTraceDigest":{"anyOf":[{"$ref":"#/components/schemas/Sha256Digest"},{"nullable":true,"enum":[null]}]},"controlTraceDigest":{"anyOf":[{"$ref":"#/components/schemas/Sha256Digest"},{"nullable":true,"enum":[null]}]},"referenceFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"candidateFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"matchedFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"firstDivergence":{"anyOf":[{"$ref":"#/components/schemas/DivergencePoint"},{"nullable":true,"enum":[null]}]},"divergenceCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"normalizationRules":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","maxLength":120},"occurrences":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ruleId","occurrences"],"additionalProperties":false}},"disabledNormalizationRules":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":120}},"unnormalizedNondeterminism":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":600}},"controlRunPerformed":{"type":"boolean"},"noiseFrontierIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postPatch":{"type":"object","properties":{"outcome":{"type":"string","enum":["RESOLVED","MOVED_AS_INTENDED","UNCHANGED","NEW_DIVERGENCE","INCONCLUSIVE","NOT_ASSERTED"]},"intendedFrameKeys":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":1024}},"unintendedDivergences":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/DivergencePoint"}},"addressedPrior":{"type":"boolean"}},"required":["outcome","intendedFrameKeys","unintendedDivergences","addressedPrior"],"additionalProperties":false}},"required":["status","referenceLabel","candidateLabel","referenceCommit","candidateCommit","patchedCommit","referenceTraceDigest","candidateTraceDigest","patchedTraceDigest","controlTraceDigest","referenceFrames","candidateFrames","matchedFrames","firstDivergence","divergenceCount","normalizationRules","disabledNormalizationRules","unnormalizedNondeterminism","controlRunPerformed","noiseFrontierIndex","postPatch"],"additionalProperties":false},"StateSliceProbe":{"type":"object","properties":{"probeId":{"type":"string","maxLength":200},"approvedByPrincipalId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"expiresAt":{"$ref":"#/components/schemas/IsoTimestamp"},"maxCaptures":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"capturesTaken":{"type":"integer","minimum":0,"maximum":9007199254740991},"namesApproved":{"maxItems":16,"type":"array","items":{"type":"string","maxLength":120}}},"required":["probeId","approvedByPrincipalId","approvedAt","expiresAt","maxCaptures","capturesTaken","namesApproved"],"additionalProperties":false},"StateSliceEvidence":{"type":"object","properties":{"origin":{"type":"string","enum":["throw","probe"]},"file":{"type":"string","maxLength":1024},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"faultExpression":{"type":"string","maxLength":400},"valuesCaptured":{"type":"integer","minimum":0,"maximum":9007199254740991},"valuesWithheld":{"type":"integer","minimum":0,"maximum":9007199254740991},"withheldByPolicy":{"type":"integer","minimum":0,"maximum":9007199254740991},"analysisComplete":{"type":"boolean"},"incompletenessReasons":{"maxItems":16,"type":"array","items":{"type":"string","maxLength":300}},"redactionShapes":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":120}},"sliceDigest":{"$ref":"#/components/schemas/Sha256Digest"},"scrubTiers":{"maxItems":4,"type":"array","items":{"type":"string","maxLength":40}},"probe":{"anyOf":[{"$ref":"#/components/schemas/StateSliceProbe"},{"nullable":true,"enum":[null]}]}},"required":["origin","file","line","faultExpression","valuesCaptured","valuesWithheld","withheldByPolicy","analysisComplete","incompletenessReasons","redactionShapes","sliceDigest","scrubTiers","probe"],"additionalProperties":false},"TestObservation":{"type":"string","enum":["PASSED","FAILED","ERRORED","NOT_RUN"]},"ReproQualification":{"type":"object","properties":{"outcome":{"type":"string","maxLength":120},"code":{"type":"string","maxLength":120},"reason":{"type":"string","maxLength":1000},"attributedToIssue":{"type":"boolean"}},"required":["outcome","code","reason","attributedToIssue"],"additionalProperties":false},"ReproFailsOnHeadEvidence":{"type":"object","properties":{"testPath":{"type":"string","maxLength":1024},"testDigest":{"$ref":"#/components/schemas/Sha256Digest"},"command":{"type":"string","maxLength":2000},"baseCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"observed":{"$ref":"#/components/schemas/TestObservation"},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"qualification":{"$ref":"#/components/schemas/ReproQualification"}},"required":["testPath","testDigest","command","baseCommit","observed","exitCode","durationMs","qualification"],"additionalProperties":false},"ReproPassesPostPatchEvidence":{"type":"object","properties":{"testPath":{"type":"string","maxLength":1024},"testDigest":{"$ref":"#/components/schemas/Sha256Digest"},"patchDigest":{"$ref":"#/components/schemas/Sha256Digest"},"command":{"type":"string","maxLength":2000},"observed":{"$ref":"#/components/schemas/TestObservation"},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["testPath","testDigest","patchDigest","command","observed","exitCode","durationMs"],"additionalProperties":false},"SuiteGreenEvidence":{"type":"object","properties":{"scope":{"type":"string","enum":["full","affected","none"]},"command":{"anyOf":[{"type":"string","maxLength":2000},{"nullable":true,"enum":[null]}]},"passed":{"type":"boolean"},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"testsRun":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"testsFailed":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"decidingTest":{"anyOf":[{"type":"string","maxLength":512},{"nullable":true,"enum":[null]}]}},"required":["scope","command","passed","exitCode","durationMs","testsRun","testsFailed","decidingTest"],"additionalProperties":false},"EquivalentMutant":{"type":"object","properties":{"file":{"type":"string","maxLength":1024},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"operator":{"type":"string","maxLength":80},"detector":{"type":"string","maxLength":80}},"required":["file","line","operator","detector"],"additionalProperties":false},"MutationPinScoreEvidence":{"type":"object","properties":{"score":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"threshold":{"type":"number","minimum":0,"maximum":1},"generated":{"type":"integer","minimum":0,"maximum":9007199254740991},"killed":{"type":"integer","minimum":0,"maximum":9007199254740991},"survived":{"type":"integer","minimum":0,"maximum":9007199254740991},"equivalent":{"type":"integer","minimum":0,"maximum":9007199254740991},"invalid":{"type":"integer","minimum":0,"maximum":9007199254740991},"aridSuppressed":{"type":"integer","minimum":0,"maximum":9007199254740991},"equivalents":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/EquivalentMutant"}},"mutantSetHash":{"anyOf":[{"$ref":"#/components/schemas/Sha256Digest"},{"nullable":true,"enum":[null]}]},"operators":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":80}},"budgetCapReached":{"type":"boolean"},"costCents":{"type":"number","minimum":0},"sandboxSeconds":{"type":"number","minimum":0},"scopedToDiff":{"type":"boolean"}},"required":["score","threshold","generated","killed","survived","equivalent","invalid","aridSuppressed","equivalents","mutantSetHash","operators","budgetCapReached","costCents","sandboxSeconds","scopedToDiff"],"additionalProperties":false},"FlakeFreedomEvidence":{"type":"object","properties":{"decidingTest":{"type":"string","maxLength":512},"verdict":{"type":"string","enum":["STABLE","FLAKY","UNKNOWN"]},"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"failures":{"type":"integer","minimum":0,"maximum":9007199254740991},"flakeRatePct":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"nullable":true,"enum":[null]}]},"windowDays":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"observedFrom":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"observedUntil":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"explained":{"type":"boolean"},"explanation":{"anyOf":[{"type":"string","maxLength":1000},{"nullable":true,"enum":[null]}]}},"required":["decidingTest","verdict","samples","failures","flakeRatePct","windowDays","observedFrom","observedUntil","explained","explanation"],"additionalProperties":false},"BlastRadiusContainmentEvidence":{"type":"object","properties":{"pathsTouched":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"pathsPermitted":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"violations":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"derivedFrom":{"type":"string","maxLength":200},"filesChanged":{"type":"integer","minimum":0,"maximum":9007199254740991},"addedLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"removedLines":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["pathsTouched","pathsPermitted","violations","derivedFrom","filesChanged","addedLines","removedLines"],"additionalProperties":false},"NoiseBand":{"type":"object","properties":{"known":{"type":"boolean"},"source":{"type":"string","maxLength":200},"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"bandPct":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"nullable":true,"enum":[null]}]},"transitionPct":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"nullable":true,"enum":[null]}]},"insideBand":{"type":"boolean"},"minReportableDeltaPp":{"type":"number","minimum":0,"maximum":100}},"required":["known","source","samples","bandPct","transitionPct","insideBand","minReportableDeltaPp"],"additionalProperties":false},"ResourceEnvelopeEvidence":{"type":"object","properties":{"cpus":{"anyOf":[{"type":"number","exclusiveMinimum":true,"minimum":0},{"nullable":true,"enum":[null]}]},"memoryMb":{"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},{"nullable":true,"enum":[null]}]},"hardKillMs":{"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},{"nullable":true,"enum":[null]}]},"wallClockMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"headroomRatio":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"imageDigest":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"infraErrorClass":{"type":"string","maxLength":80},"sandboxProvider":{"type":"string","maxLength":120},"networkIsolation":{"type":"string","maxLength":40},"egressAllowlist":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":300}},"noiseBand":{"$ref":"#/components/schemas/NoiseBand"}},"required":["cpus","memoryMb","hardKillMs","wallClockMs","activeMs","headroomRatio","imageDigest","infraErrorClass","sandboxProvider","networkIsolation","egressAllowlist","noiseBand"],"additionalProperties":false},"ModelAttributionEvidence":{"type":"object","properties":{"authorKind":{"type":"string","enum":["ai","human","hybrid"]},"agent":{"type":"object","properties":{"id":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":200},"version":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"origin":{"type":"string","enum":["internal","external"]}},"required":["id","name","version","origin"],"additionalProperties":false},"modelId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"modelProvider":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"effort":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"seed":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"temperature":{"anyOf":[{"type":"number","minimum":0,"maximum":2},{"nullable":true,"enum":[null]}]},"promptPrefixHash":{"anyOf":[{"$ref":"#/components/schemas/Sha256Digest"},{"nullable":true,"enum":[null]}]},"servingDeterminism":{"type":"string","enum":["NOT_CLAIMED"]}},"required":["authorKind","agent","modelId","modelProvider","effort","seed","temperature","promptPrefixHash","servingDeterminism"],"additionalProperties":false},"ActChainLink":{"type":"object","properties":{"actorId":{"type":"string","maxLength":200},"actorKind":{"type":"string","enum":["user","agent","service"]},"actorName":{"type":"string","maxLength":200},"onBehalfOf":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"delegationId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"audience":{"anyOf":[{"type":"string","maxLength":300},{"nullable":true,"enum":[null]}]},"scopes":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":120}},"issuedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]}},"required":["actorId","actorKind","actorName","onBehalfOf","delegationId","jti","audience","scopes","issuedAt","expiresAt"],"additionalProperties":false},"ApproverIdentityEvidence":{"type":"object","properties":{"approver":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string","maxLength":200},"displayName":{"type":"string","maxLength":200},"kind":{"type":"string","enum":["user","agent","service"]},"approvedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"authenticatedBy":{"type":"string","maxLength":120}},"required":["principalId","displayName","kind","approvedAt","authenticatedBy"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"actChain":{"maxItems":16,"type":"array","items":{"$ref":"#/components/schemas/ActChainLink"}},"requiredApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"receivedApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"humanApproval":{"type":"boolean"},"policyId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["approver","actChain","requiredApprovals","receivedApprovals","humanApproval","policyId"],"additionalProperties":false},"BlameLinkedFingerprint":{"type":"object","properties":{"fingerprint":{"type":"string","maxLength":200},"blamedCommit":{"type":"string","maxLength":80},"firstSeen":{"$ref":"#/components/schemas/IsoTimestamp"},"events":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["fingerprint","blamedCommit","firstSeen","events"],"additionalProperties":false},"DurabilityWindowEvidence":{"type":"object","properties":{"state":{"type":"string","enum":["OPEN","CLOSED","REFUSED"]},"verdict":{"type":"string","enum":["DURABLE","REGRESSED","PENDING","INCONCLUSIVE"]},"windowDays":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"openedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"closesAt":{"$ref":"#/components/schemas/IsoTimestamp"},"closedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"originalFingerprintRecurrences":{"type":"integer","minimum":0,"maximum":9007199254740991},"newFingerprints":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/BlameLinkedFingerprint"}},"reverted":{"type":"boolean"},"revertCommit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"releaseHealthDelta":{"anyOf":[{"type":"object","properties":{"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1},"sessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"significant":{"type":"boolean"}},"required":["before","after","delta","sessions","significant"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"creditBack":{"anyOf":[{"type":"object","properties":{"issued":{"type":"boolean"},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"invoiceLineId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"reason":{"type":"string","maxLength":600}},"required":["issued","amountCents","invoiceLineId","reason"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["state","verdict","windowDays","openedAt","closesAt","closedAt","originalFingerprintRecurrences","newFingerprints","reverted","revertCommit","releaseHealthDelta","creditBack"],"additionalProperties":false},"VerifierIndependence":{"type":"object","properties":{"patchAuthoredByIssuer":{"type":"boolean"},"reproAuthoredByIssuer":{"type":"boolean"},"sandboxOperatedByIssuer":{"type":"boolean"}},"required":["patchAuthoredByIssuer","reproAuthoredByIssuer","sandboxOperatedByIssuer"],"additionalProperties":false},"DeclaredPatchAuthor":{"type":"object","properties":{"vendor":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"agentName":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"agentVersion":{"anyOf":[{"type":"string","maxLength":60},{"nullable":true,"enum":[null]}]},"modelId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["vendor","agentName","agentVersion","modelId"],"additionalProperties":false},"PatchSubmitter":{"type":"object","properties":{"principalId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"kind":{"type":"string","enum":["user","agent","service"]},"authenticatedBy":{"type":"string","maxLength":120}},"required":["principalId","kind","authenticatedBy"],"additionalProperties":false},"PatchOriginEvidence":{"type":"object","properties":{"originKind":{"type":"string","enum":["FIRST_PARTY","EXTERNAL_AGENT","HUMAN_CONTRACTOR","UNATTRIBUTED"]},"externallyAuthored":{"type":"boolean"},"submitter":{"$ref":"#/components/schemas/PatchSubmitter"},"declaredAuthor":{"$ref":"#/components/schemas/DeclaredPatchAuthor"},"attestationSource":{"type":"string","enum":["FIRST_PARTY_LOOP","SIGNED_HANDOFF_BUNDLE","SUBMITTER_DECLARED"]},"submissionChannel":{"type":"string","enum":["REST","MCP","INTERNAL_LOOP"]},"submissionId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"patchDigest":{"$ref":"#/components/schemas/Sha256Digest"},"diffBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"filesChanged":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":1024}},"receivedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"verifierIndependence":{"$ref":"#/components/schemas/VerifierIndependence"}},"required":["originKind","externallyAuthored","submitter","declaredAuthor","attestationSource","submissionChannel","submissionId","patchDigest","diffBytes","filesChanged","receivedAt","verifierIndependence"],"additionalProperties":false},"MitigationInverse":{"type":"object","properties":{"actionType":{"type":"string","maxLength":80},"description":{"type":"string","minLength":1,"maxLength":600},"applied":{"type":"boolean"}},"required":["actionType","description","applied"],"additionalProperties":false},"MitigationBlastRadius":{"type":"object","properties":{"scope":{"type":"string","maxLength":40},"environments":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":120}},"targets":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":200}},"trafficFraction":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"nullable":true,"enum":[null]}]},"affectedSessions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"basis":{"type":"string","maxLength":300},"notes":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":300}}},"required":["scope","environments","targets","trafficFraction","affectedSessions","basis","notes"],"additionalProperties":false},"MitigationVerification":{"type":"object","properties":{"signal":{"type":"string","maxLength":400},"kind":{"type":"string","maxLength":80},"outcome":{"type":"string","enum":["OBSERVED","NOT_OBSERVED","PENDING","NOT_MEASURED"]},"detail":{"type":"string","maxLength":600},"observedFrom":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"observedUntil":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"before":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"after":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["signal","kind","outcome","detail","observedFrom","observedUntil","before","after"],"additionalProperties":false},"MitigationReversalDebt":{"type":"object","properties":{"debtId":{"type":"string","maxLength":200},"ownerPrincipalId":{"type":"string","maxLength":200},"dueAt":{"$ref":"#/components/schemas/IsoTimestamp"},"status":{"type":"string","maxLength":40},"clearedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]}},"required":["debtId","ownerPrincipalId","dueAt","status","clearedAt"],"additionalProperties":false},"MitigationApproval":{"type":"object","properties":{"requestId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"requiredApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"receivedApprovals":{"type":"integer","minimum":0,"maximum":9007199254740991},"humanApproval":{"type":"boolean"},"riskClass":{"type":"string","maxLength":40}},"required":["requestId","approvedByPrincipalId","approvedAt","requiredApprovals","receivedApprovals","humanApproval","riskClass"],"additionalProperties":false},"MitigationAppliedEvidence":{"type":"object","properties":{"mitigationId":{"type":"string","maxLength":200},"actionType":{"type":"string","maxLength":80},"provider":{"type":"string","maxLength":120},"state":{"type":"string","enum":["ACTIVE","REVERTED","EXPIRED","FAILED"]},"appliedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"expiresAt":{"$ref":"#/components/schemas/IsoTimestamp"},"ttlMinutes":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"withdrawnAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"withdrawalReason":{"anyOf":[{"type":"string","maxLength":600},{"nullable":true,"enum":[null]}]},"inverse":{"anyOf":[{"$ref":"#/components/schemas/MitigationInverse"},{"nullable":true,"enum":[null]}]},"blastRadius":{"$ref":"#/components/schemas/MitigationBlastRadius"},"approval":{"$ref":"#/components/schemas/MitigationApproval"},"verification":{"anyOf":[{"$ref":"#/components/schemas/MitigationVerification"},{"nullable":true,"enum":[null]}]},"issueStatusChangedByMitigation":{"type":"boolean"},"reversalDebt":{"anyOf":[{"$ref":"#/components/schemas/MitigationReversalDebt"},{"nullable":true,"enum":[null]}]},"artifactChecksum":{"$ref":"#/components/schemas/Sha256Digest"}},"required":["mitigationId","actionType","provider","state","appliedAt","expiresAt","ttlMinutes","withdrawnAt","autoReverted","withdrawalReason","inverse","blastRadius","approval","verification","issueStatusChangedByMitigation","reversalDebt","artifactChecksum"],"additionalProperties":false},"LedgerIssuer":{"type":"object","properties":{"id":{"type":"string","maxLength":300},"name":{"type":"string","maxLength":200},"softwareVersion":{"type":"string","maxLength":80},"keyId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["id","name","softwareVersion","keyId"],"additionalProperties":false},"LedgerPatch":{"type":"object","properties":{"diffDigest":{"$ref":"#/components/schemas/Sha256Digest"},"filesChanged":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":1024}},"addedLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"removedLines":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["diffDigest","filesChanged","addedLines","removedLines"],"additionalProperties":false},"LedgerSubject":{"type":"object","properties":{"orgSlug":{"type":"string","maxLength":120},"projectSlug":{"type":"string","maxLength":120},"issueId":{"type":"string","maxLength":200},"issueShortId":{"type":"string","maxLength":120},"fingerprint":{"type":"string","maxLength":200},"title":{"type":"string","maxLength":400},"runId":{"type":"string","maxLength":200},"proposalId":{"type":"string","maxLength":200},"patch":{"$ref":"#/components/schemas/LedgerPatch"},"repository":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]},"commit":{"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"commitCheckedOut":{"type":"boolean"}},"required":["orgSlug","projectSlug","issueId","issueShortId","fingerprint","title","runId","proposalId","patch","repository","commit","commitCheckedOut"],"additionalProperties":false},"DigestSet":{"type":"object","additionalProperties":{"type":"string","pattern":"^[0-9a-f]{7,128}$"}},"ResourceDescriptor":{"type":"object","properties":{"name":{"type":"string","maxLength":500},"uri":{"type":"string","maxLength":500},"digest":{"$ref":"#/components/schemas/DigestSet"},"mediaType":{"type":"string","maxLength":200},"annotations":{"type":"object","additionalProperties":{}}},"additionalProperties":false},"AiAuthoredChangePredicate":{"type":"object","properties":{"formatVersion":{"type":"string","enum":["0.1.0"]},"builder":{"type":"object","properties":{"id":{"type":"string","maxLength":300},"version":{"type":"object","additionalProperties":{"type":"string"}}},"required":["id","version"],"additionalProperties":false},"attestedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"author":{"type":"object","properties":{"kind":{"type":"string","enum":["ai","human","hybrid"]},"agentId":{"type":"string","maxLength":200},"agentName":{"type":"string","maxLength":200},"modelId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]}},"required":["kind","agentId","agentName","modelId"],"additionalProperties":false},"humanApproval":{"type":"object","properties":{"approved":{"type":"boolean"},"approverId":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"$ref":"#/components/schemas/IsoTimestamp"},{"nullable":true,"enum":[null]}]},"actChainLength":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["approved","approverId","approvedAt","actChainLength"],"additionalProperties":false},"verification":{"type":"object","properties":{"tier":{"$ref":"#/components/schemas/ProofTier"},"verdict":{"$ref":"#/components/schemas/ProofVerdict"},"billable":{"type":"boolean"},"specUri":{"type":"string","maxLength":300}},"required":["tier","verdict","billable","specUri"],"additionalProperties":false},"ledger":{"type":"object","properties":{"formatVersion":{"type":"string","enum":["0.1.0"]},"specUri":{"type":"string","maxLength":300},"bundleId":{"$ref":"#/components/schemas/Identifier"},"issuedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"issuer":{"$ref":"#/components/schemas/LedgerIssuer"},"subject":{"$ref":"#/components/schemas/LedgerSubject"},"tier":{"$ref":"#/components/schemas/ProofTier"},"verdict":{"$ref":"#/components/schemas/ProofVerdict"},"billable":{"type":"boolean"},"claims":{"maxItems":200,"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["repro_fails_on_head"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ReproFailsOnHeadEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["repro_passes_post_patch"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ReproPassesPostPatchEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["suite_green"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/SuiteGreenEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["mutation_pin_score"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/MutationPinScoreEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["flake_freedom"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/FlakeFreedomEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["blast_radius_containment"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/BlastRadiusContainmentEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["resource_envelope"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ResourceEnvelopeEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["model_attribution"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ModelAttributionEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["approver_identity"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/ApproverIdentityEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["durability_window"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/DurabilityWindowEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["state_slice"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/StateSliceEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["divergence_localization"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/DivergenceLocalizationEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["behavioral_diff"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/BehavioralDiffEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["patch_origin"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/PatchOriginEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["mitigation_applied"]},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"$ref":"#/components/schemas/MitigationAppliedEvidence"}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false}]},{"type":"object","properties":{"kind":{"type":"string","pattern":"^[a-z][a-z0-9_]{2,63}$","not":{"enum":["repro_fails_on_head","repro_passes_post_patch","suite_green","mutation_pin_score","flake_freedom","blast_radius_containment","resource_envelope","model_attribution","approver_identity","durability_window","state_slice","divergence_localization","behavioral_diff","patch_origin","mitigation_applied"]}},"claimId":{"$ref":"#/components/schemas/Identifier"},"statement":{"type":"string","minLength":1,"maxLength":400},"status":{"$ref":"#/components/schemas/ClaimStatus"},"recordedAt":{"$ref":"#/components/schemas/IsoTimestamp"},"disclosures":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":600}},"recheck":{"anyOf":[{"$ref":"#/components/schemas/RecheckHandle"},{"nullable":true,"enum":[null]}]},"evidence":{"type":"object","additionalProperties":{}}},"required":["kind","claimId","statement","status","recordedAt","disclosures","recheck","evidence"],"additionalProperties":false}]}},"disclosures":{"maxItems":40,"type":"array","items":{"type":"string","maxLength":600}}},"required":["formatVersion","specUri","bundleId","issuedAt","issuer","subject","tier","verdict","billable","claims","disclosures"],"additionalProperties":false}},"required":["formatVersion","builder","attestedAt","author","humanApproval","verification","ledger"],"additionalProperties":false},"ExecutionFrame":{"type":"object","properties":{"seq":{"type":"integer","minimum":0,"maximum":9007199254740991},"kind":{"type":"string","enum":["span","call","return","branch","value","log","error"]},"name":{"type":"string","minLength":1,"maxLength":512},"file":{"default":null,"anyOf":[{"type":"string","maxLength":1024},{"nullable":true,"enum":[null]}]},"line":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"branch":{"default":null,"anyOf":[{"type":"string","maxLength":256},{"nullable":true,"enum":[null]}]},"values":{"default":{},"type":"object","additionalProperties":{"type":"string","maxLength":4096}},"group":{"default":null,"anyOf":[{"type":"string","maxLength":128},{"nullable":true,"enum":[null]}]}},"required":["seq","kind","name","file","line","branch","values","group"],"additionalProperties":false},"DeclaredNondeterminism":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":200},"normalizedBy":{"default":null,"anyOf":[{"type":"string","maxLength":120},{"nullable":true,"enum":[null]}]},"note":{"default":"","type":"string","maxLength":600}},"required":["source","normalizedBy","note"],"additionalProperties":false},"ExecutionTrace":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"commit":{"default":null,"anyOf":[{"type":"string","maxLength":80},{"nullable":true,"enum":[null]}]},"source":{"type":"string","minLength":1,"maxLength":120},"frames":{"maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/ExecutionFrame"}},"declaredNondeterminism":{"default":[],"maxItems":64,"type":"array","items":{"$ref":"#/components/schemas/DeclaredNondeterminism"}},"truncated":{"default":false,"type":"boolean"}},"required":["label","commit","source","frames","declaredNondeterminism","truncated"],"additionalProperties":false},"AgentSessionTreeNode":{"type":"object","properties":{"spanId":{"type":"string"},"parentSpanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"traceId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"depth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startTime":{"type":"string"},"endTime":{"type":"string"},"durationMs":{"type":"number"},"offsetMs":{"type":"number"},"statusCode":{"type":"string"},"statusMessage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"provider":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"model":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"inputTokens":{"type":"number"},"outputTokens":{"type":"number"},"costMicroUsd":{"type":"number"},"metered":{"type":"boolean"},"finishReasons":{"type":"array","items":{"type":"string"}},"toolName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toolCallId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toolArguments":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toolArgumentsParsed":{"type":"boolean"},"toolFailed":{"type":"boolean"},"retrievalQuery":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"retrievalDocumentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"responseText":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contentStrippedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"children":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionTreeNode"}}},"required":["spanId","parentSpanId","traceId","name","kind","depth","startTime","endTime","durationMs","offsetMs","statusCode","statusMessage","provider","model","promptKey","promptVersion","inputTokens","outputTokens","costMicroUsd","metered","finishReasons","toolName","toolCallId","toolArguments","toolArgumentsParsed","toolFailed","retrievalQuery","retrievalDocumentCount","responseText","contentStrippedCount","children"],"additionalProperties":false},"ApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","conflict","forbidden","internal_error","mfa_required","not_found","payload_too_large","quota_exceeded","rate_limited","scm_credentials_invalid","unauthorized","unprocessable","upstream_rejected","upstream_timeout"],"description":"A stable, machine-readable classification. Switch on this, not on the message."},"message":{"type":"string","description":"Human-readable and safe to show. Never an internal message: a 5xx always reads “Internal server error” regardless of what threw."},"details":{"description":"Present when the code carries structure — Zod issues for `bad_request`, a `retryAfterSeconds` for an upstream 503. Absent otherwise."},"requestId":{"type":"string","description":"The id of this request. Quote it in a support ticket; it is what ties the failure you saw to the log line on our side."}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false,"description":"The error envelope. Every non-2xx response this API sends has exactly this shape, from the global error handler in `app.ts` — including the ones a route does not declare for itself."}}},"paths":{"/health":{"get":{"summary":"Liveness probe","tags":["meta"],"description":"Reachable without a Bucker session token. Liveness. Answers without touching anything, by design.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok"]},"service":{"type":"string","enum":["bucker-api"]}},"required":["status","service"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ready":{"get":{"summary":"Readiness probe","tags":["meta"],"description":"Reachable without a Bucker session token. Readiness, and the Fly http check target. A probe that needed a credential could not be a probe.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ready"]},"service":{"type":"string","enum":["bucker-api"]},"database":{"type":"string","enum":["ok"]},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","service","database","latencyMs"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["code","message","requestId"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/edition":{"get":{"summary":"Edition, cloud-only features, and withheld capabilities","tags":["meta"],"description":"Reachable without a Bucker session token. Which edition this deployment is, and which cloud-only features are off. A client must know before it can render anything.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"edition":{"type":"string","enum":["ce","cloud"]},"features":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"docs":{"type":"string"}},"required":["id","name","enabled","reason","docs"],"additionalProperties":false}},"withheld":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enableWith":{"type":"string"}},"required":["id","name","enabled","reason","enableWith"],"additionalProperties":false}}},"required":["edition","features","withheld"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","minLength":1,"maxLength":60},"sponsorUserId":{"type":"string","minLength":1},"maxTier":{"type":"string","enum":["telemetry:read","context:hydrate","sandbox:execute","pr:propose","pr:merge"]},"orgRole":{"type":"string","enum":["MEMBER","VIEWER"]}},"required":["name","kind","sponsorUserId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}":{"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"allowedScopes":{"type":"array","items":{"type":"string"}}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt","allowedScopes"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","minLength":1,"maxLength":60},"maxTier":{"type":"string","enum":["telemetry:read","context:hydrate","sandbox:execute","pr:propose","pr:merge"]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/suspend":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/resume":{"post":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/transfer-sponsor":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sponsorUserId":{"type":"string","minLength":1},"resume":{"type":"boolean"}},"required":["sponsorUserId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"sponsorUserId":{"type":"string"},"lifecycle":{"type":"string","enum":["ACTIVE","SUSPENDED","RETIRED"]},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspendedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"maxTier":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","principalId","orgId","name","kind","sponsorUserId","lifecycle","suspendedAt","suspendedReason","maxTier","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/tokens":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"scopes":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","enum":["org:read","org:write","org:admin","project:read","project:write","project:admin","event:read","issue:read","issue:triage","issue:resolve","alerts:write","release:write","member:invite","agent:manage","fix:propose","fix:approve","hotfix:deploy","billing:read","billing:write"]}},"audience":{"type":"string","minLength":1,"maxLength":120},"incidentId":{"type":"string","minLength":1},"expiresInDays":{"type":"integer","minimum":1,"maximum":365},"expiresInMinutes":{"type":"integer","minimum":1,"maximum":720}},"required":["name","scopes"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"token":{"type":"string"}},"required":["id","agentId","name","scopes","audience","incidentId","projectId","expiresAt","revokedAt","lastUsedAt","createdAt","token"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","agentId","name","scopes","audience","incidentId","projectId","expiresAt","revokedAt","lastUsedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/tokens/{tokenId}":{"delete":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"tokenId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","agentId","name","scopes","audience","incidentId","projectId","expiresAt","revokedAt","lastUsedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/agents/token":{"post":{"tags":["agents"],"description":"Reachable without a Bucker session token. RFC 8693-adjacent exchange: the opaque agent credential in the body is the authentication, as a refresh token is.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":4096},"audience":{"type":"string","minLength":1,"maxLength":120}},"required":["token"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"tokenType":{"type":"string","enum":["Bearer"]},"expiresIn":{"type":"number"},"scopes":{"type":"array","items":{"type":"string"}},"agentId":{"type":"string"},"orgId":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"audience":{"type":"string"}},"required":["accessToken","tokenType","expiresIn","scopes","agentId","orgId","incidentId","audience"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/oauth/token-exchange":{"post":{"tags":["oauth"],"description":"Reachable without a Bucker session token. RFC 8693 token exchange: `subject_token` in the body is the authentication, exactly as at any OAuth token endpoint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grant_type":{"type":"string","description":"RFC 8693 §2.1. Must be the token-exchange grant.","enum":["urn:ietf:params:oauth:grant-type:token-exchange"]},"subject_token":{"type":"string","minLength":1,"maxLength":4096,"description":"The credential you already hold."},"subject_token_type":{"description":"Inferred from the credential when omitted; refused when it disagrees.","type":"string","enum":["urn:ietf:params:oauth:token-type:access_token","urn:bucker:params:oauth:token-type:agent_token"]},"resource":{"type":"string","minLength":1,"maxLength":512,"description":"RFC 8707 resource indicator, or the audience identifier alias."},"scope":{"description":"Space-delimited. Narrower or equal, never wider.","type":"string","maxLength":512},"ttl_seconds":{"description":"Seconds. Clamped to the remaining life of the presented credential.","type":"integer","minimum":60,"maximum":3600}},"required":["grant_type","subject_token","resource"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"issued_token_type":{"type":"string"},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scope":{"type":"string"},"resource":{"type":"string"},"audience":{"type":"string"}},"required":["access_token","issued_token_type","token_type","expires_in","scope","resource","audience"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/delegations":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scopes":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","enum":["org:read","org:write","org:admin","project:read","project:write","project:admin","event:read","issue:read","issue:triage","issue:resolve","alerts:write","release:write","member:invite","agent:manage","fix:propose","fix:approve","hotfix:deploy","billing:read","billing:write"]}},"incidentId":{"type":"string","minLength":1},"audience":{"type":"string","minLength":1,"maxLength":120},"ttlSeconds":{"type":"integer","minimum":60,"maximum":3600}},"required":["scopes"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"onBehalfOfUserId":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"accessToken":{"type":"string"},"tokenType":{"type":"string","enum":["Bearer"]},"expiresIn":{"type":"number"},"actingFor":{"type":"string"}},"required":["id","agentId","onBehalfOfUserId","incidentId","projectId","scopes","audience","jti","expiresAt","revokedAt","createdAt","accessToken","tokenType","expiresIn","actingFor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"onBehalfOfUserId":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","agentId","onBehalfOfUserId","incidentId","projectId","scopes","audience","jti","expiresAt","revokedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/delegations/{delegationId}":{"delete":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"delegationId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"onBehalfOfUserId":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","agentId","onBehalfOfUserId","incidentId","projectId","scopes","audience","jti","expiresAt","revokedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/budgets":{"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["TOKENS","SANDBOX_MINUTES","CONCURRENT_RUNS","USD_CENTS"]},"scopeKey":{"type":"string"},"onBehalfOfUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limit":{"type":"number"},"consumed":{"type":"number"},"remaining":{"type":"number"},"period":{"type":"string","enum":["MONTHLY","LIFETIME"]},"softLimitPct":{"type":"number"},"softLimitExceeded":{"type":"boolean"},"periodStart":{"type":"string"},"periodEnd":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","kind","scopeKey","onBehalfOfUserId","incidentId","limit","consumed","remaining","period","softLimitPct","softLimitExceeded","periodStart","periodEnd"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["TOKENS","SANDBOX_MINUTES","CONCURRENT_RUNS","USD_CENTS"]},"limitValue":{"type":"integer","minimum":0,"maximum":9007199254740991},"onBehalfOfUserId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"period":{"type":"string","enum":["MONTHLY","LIFETIME"]},"softLimitPct":{"type":"integer","minimum":1,"maximum":100},"resetConsumed":{"type":"boolean"}},"required":["kind","limitValue"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["TOKENS","SANDBOX_MINUTES","CONCURRENT_RUNS","USD_CENTS"]},"scopeKey":{"type":"string"},"onBehalfOfUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limit":{"type":"number"},"consumed":{"type":"number"},"remaining":{"type":"number"},"period":{"type":"string","enum":["MONTHLY","LIFETIME"]},"softLimitPct":{"type":"number"},"softLimitExceeded":{"type":"boolean"},"periodStart":{"type":"string"},"periodEnd":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","kind","scopeKey","onBehalfOfUserId","incidentId","limit","consumed","remaining","period","softLimitPct","softLimitExceeded","periodStart","periodEnd"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/budgets/{budgetId}":{"delete":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"budgetId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/spend":{"get":{"tags":["agents"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"incidentId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"onBehalfOfUserId","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"kind":{"type":"string","enum":["TOKENS","SANDBOX_MINUTES","CONCURRENT_RUNS","USD_CENTS"]},"amount":{"type":"number"},"action":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"onBehalfOfUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"budgetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","agentId","kind","amount","action","incidentId","onBehalfOfUserId","budgetId","createdAt"],"additionalProperties":false}},"summary":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["TOKENS","SANDBOX_MINUTES","CONCURRENT_RUNS","USD_CENTS"]},"total":{"type":"number"},"records":{"type":"number"}},"required":["kind","total","records"],"additionalProperties":false}}},"required":["data","summary"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/sso/connections":{"get":{"tags":["sso"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"protocol":{"type":"string","enum":["SAML","OIDC"]},"enabled":{"type":"boolean"},"enforced":{"type":"boolean"},"defaultRole":{"type":"string"},"attributeMapping":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"roleMapping":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"idpEntityId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"idpSsoUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"idpCertificateConfigured":{"type":"boolean"},"idpCertificateAlternateCount":{"type":"number"},"oidcIssuer":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"oidcClientId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"oidcClientSecretConfigured":{"type":"boolean"},"oidcScopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","protocol","enabled","enforced","defaultRole","attributeMapping","roleMapping","idpEntityId","idpSsoUrl","idpCertificateConfigured","idpCertificateAlternateCount","oidcIssuer","oidcClientId","oidcClientSecretConfigured","oidcScopes","createdAt","updatedAt"],"additionalProperties":false}}},"required":["connections"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/sso/connections/{protocol}":{"put":{"tags":["sso"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"enforced":{"type":"boolean"},"defaultRole":{"type":"string","enum":["VIEWER","BILLING","MEMBER","ADMIN"]},"attributeMapping":{"anyOf":[{"type":"object","additionalProperties":{"anyOf":[{"type":"string","maxLength":200},{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}}]}},{"nullable":true,"enum":[null]}]},"roleMapping":{"anyOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":200}},{"nullable":true,"enum":[null]}]},"idpEntityId":{"anyOf":[{"type":"string","maxLength":1024},{"nullable":true,"enum":[null]}]},"idpSsoUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"nullable":true,"enum":[null]}]},"idpCertificate":{"anyOf":[{"type":"string","maxLength":20000},{"nullable":true,"enum":[null]}]},"idpCertificateAlternates":{"maxItems":4,"type":"array","items":{"type":"string","maxLength":20000}},"oidcIssuer":{"anyOf":[{"type":"string","maxLength":1024,"format":"uri"},{"nullable":true,"enum":[null]}]},"oidcClientId":{"anyOf":[{"type":"string","maxLength":512},{"nullable":true,"enum":[null]}]},"oidcClientSecret":{"anyOf":[{"type":"string","maxLength":2048},{"nullable":true,"enum":[null]}]},"oidcScopes":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":64}}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","enum":["SAML","OIDC"]},"in":"path","name":"protocol","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"protocol":{"type":"string","enum":["SAML","OIDC"]},"enabled":{"type":"boolean"},"enforced":{"type":"boolean"},"defaultRole":{"type":"string"},"attributeMapping":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"roleMapping":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"idpEntityId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"idpSsoUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"idpCertificateConfigured":{"type":"boolean"},"idpCertificateAlternateCount":{"type":"number"},"oidcIssuer":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"oidcClientId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"oidcClientSecretConfigured":{"type":"boolean"},"oidcScopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","protocol","enabled","enforced","defaultRole","attributeMapping","roleMapping","idpEntityId","idpSsoUrl","idpCertificateConfigured","idpCertificateAlternateCount","oidcIssuer","oidcClientId","oidcClientSecretConfigured","oidcScopes","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["sso"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","enum":["SAML","OIDC"]},"in":"path","name":"protocol","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/sso/saml/{orgSlug}/acs":{"post":{"tags":["sso"],"description":"Reachable without a Bucker session token. The IdP posts the signed assertion here; the signature is the authentication.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"SAMLResponse":{"type":"string","minLength":1,"maxLength":2000000},"RelayState":{"type":"string","maxLength":512}},"required":["SAMLResponse"]}}}},"parameters":[{"schema":{"default":"redirect","type":"string","enum":["redirect","json"]},"in":"query","name":"format","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"}},"required":["id","email","name"],"additionalProperties":false},"orgId":{"type":"string"},"role":{"type":"string"},"provisioned":{"type":"boolean"},"relayState":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"tokens":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"expiresIn":{"type":"number"},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false}},"required":["user","orgId","role","provisioned","relayState","tokens"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/sso/oidc/{orgSlug}/callback":{"get":{"tags":["sso"],"description":"Reachable without a Bucker session token. The OP redirects back with a code bound to our state.","parameters":[{"schema":{"default":"redirect","type":"string","enum":["redirect","json"]},"in":"query","name":"format","required":false},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"code","required":false},{"schema":{"type":"string","minLength":1,"maxLength":512},"in":"query","name":"state","required":false},{"schema":{"type":"string","maxLength":256},"in":"query","name":"error","required":false},{"schema":{"type":"string","maxLength":1024},"in":"query","name":"error_description","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"}},"required":["id","email","name"],"additionalProperties":false},"orgId":{"type":"string"},"role":{"type":"string"},"provisioned":{"type":"boolean"},"relayState":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"tokens":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"expiresIn":{"type":"number"},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false}},"required":["user","orgId","role","provisioned","relayState","tokens"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/sso/handoff":{"post":{"tags":["sso"],"description":"Reachable without a Bucker session token. Spends the one-time code the two legs above 302 to the dashboard with; the opaque 256-bit code in the body IS the credential, exactly as the refresh token is at /auth/refresh, and the session it buys does not exist until it is spent.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":512}},"required":["code"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"role":{"type":"string"},"provisioned":{"type":"boolean"},"tokens":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"expiresIn":{"type":"number"},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false},"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"locale":{"type":"string"},"theme":{"type":"string"},"emailVerified":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","locale","theme","emailVerified","mfaEnabled","createdAt"],"additionalProperties":false},"next":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgId","role","provisioned","tokens","user","next"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/register":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. Creates the first credential a caller has.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":12,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":120},"locale":{"default":"en","type":"string","enum":["en","es","de","ja","fr","pt-BR","zh-CN"]}},"required":["email","password","name"]}}}},"security":[],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. Presents the credential; there is nothing before it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":1,"maxLength":256},"totpCode":{"type":"string","pattern":"^\\d{6}$"}},"required":["email","password"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"locale":{"type":"string"},"theme":{"type":"string"},"emailVerified":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","locale","theme","emailVerified","mfaEnabled","createdAt"],"additionalProperties":false},"tokens":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"expiresIn":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false}},"required":["user","tokens"],"additionalProperties":false},{"type":"object","properties":{"mfaRequired":{"type":"boolean","enum":[true]},"challengeToken":{"type":"string"}},"required":["mfaRequired","challengeToken"],"additionalProperties":false}]}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/mfa/verify":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. Second factor, against a short-lived MFA challenge token in the body.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challengeToken":{"type":"string","minLength":1,"maxLength":4096},"totpCode":{"type":"string","pattern":"^\\d{6}$"},"recoveryCode":{"type":"string","minLength":1,"maxLength":64}},"required":["challengeToken"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"locale":{"type":"string"},"theme":{"type":"string"},"emailVerified":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","locale","theme","emailVerified","mfaEnabled","createdAt"],"additionalProperties":false},"tokens":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"expiresIn":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false}},"required":["user","tokens"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/refresh":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. The refresh token in the body IS the credential; the access token is expired by then.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string","minLength":1,"maxLength":4096}},"required":["refreshToken"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"expiresIn":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/logout":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. Must succeed for an already-expired session, or a signed-out client keeps its cookie.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string","minLength":1,"maxLength":4096}},"required":["refreshToken"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"locale":{"type":"string"},"theme":{"type":"string"},"emailVerified":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","locale","theme","emailVerified","mfaEnabled","createdAt"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"locale":{"default":"en","type":"string","enum":["en","es","de","ja","fr","pt-BR","zh-CN"]},"theme":{"default":"system","type":"string","enum":["light","dark","system"]},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"nullable":true,"enum":[null]}]}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"locale":{"type":"string"},"theme":{"type":"string"},"emailVerified":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","locale","theme","emailVerified","mfaEnabled","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/password/change":{"post":{"tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":256},"newPassword":{"type":"string","minLength":12,"maxLength":256}},"required":["currentPassword","newPassword"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/password/reset/request":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. Requested by someone who by definition cannot authenticate.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/password/reset/confirm":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. The emailed single-use token is the authorization.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":4096},"password":{"type":"string","minLength":12,"maxLength":256}},"required":["token","password"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/email/verify/request":{"post":{"tags":["auth"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/email/verify/confirm":{"post":{"tags":["auth"],"description":"Reachable without a Bucker session token. Same: the emailed single-use token is the authorization.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":4096}},"required":["token"]}}}},"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/mfa/setup":{"post":{"tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":256}},"required":["password"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"secret":{"type":"string"},"otpauthUrl":{"type":"string"},"recoveryCodes":{"type":"array","items":{"type":"string"}}},"required":["secret","otpauthUrl","recoveryCodes"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/mfa/enable":{"post":{"tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totpCode":{"type":"string","pattern":"^\\d{6}$"},"password":{"type":"string","minLength":1,"maxLength":256}},"required":["totpCode","password"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/mfa/recovery-codes":{"post":{"tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":256}},"required":["password"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"recoveryCodes":{"type":"array","items":{"type":"string"}}},"required":["recoveryCodes"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/mfa/disable":{"post":{"tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":256},"totpCode":{"type":"string","pattern":"^\\d{6}$"}},"required":["password","totpCode"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/.well-known/jwks.json":{"get":{"tags":[".well-known"],"description":"Reachable without a Bucker session token. Public key material. Every resource server fetches it before it can verify anything.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}}},"required":["keys"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/me/tokens":{"post":{"tags":["me"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"orgSlug":{"type":"string","minLength":1,"maxLength":200},"scopes":{"minItems":1,"maxItems":19,"type":"array","items":{"type":"string","enum":["org:read","org:write","org:admin","project:read","project:write","project:admin","event:read","issue:read","issue:triage","issue:resolve","alerts:write","release:write","member:invite","agent:manage","fix:propose","fix:approve","hotfix:deploy","billing:read","billing:write"]}},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["name","orgSlug","scopes"]}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"orgSlug":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:write","org:admin","project:read","project:write","project:admin","event:read","issue:read","issue:triage","issue:resolve","alerts:write","release:write","member:invite","agent:manage","fix:propose","fix:approve","hotfix:deploy","billing:read","billing:write"]}},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedIp":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"token":{"type":"string","description":"The secret. Shown once, here. It cannot be retrieved later."}},"required":["id","name","prefix","orgSlug","scopes","expiresAt","lastUsedAt","lastUsedIp","revokedAt","createdAt","token"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["me"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"orgSlug":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:write","org:admin","project:read","project:write","project:admin","event:read","issue:read","issue:triage","issue:resolve","alerts:write","release:write","member:invite","agent:manage","fix:propose","fix:approve","hotfix:deploy","billing:read","billing:write"]}},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedIp":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","name","prefix","orgSlug","scopes","expiresAt","lastUsedAt","lastUsedIp","revokedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/me/tokens/{id}":{"delete":{"tags":["me"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"orgSlug":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:write","org:admin","project:read","project:write","project:admin","event:read","issue:read","issue:triage","issue:resolve","alerts:write","release:write","member:invite","agent:manage","fix:propose","fix:approve","hotfix:deploy","billing:read","billing:write"]}},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedIp":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","name","prefix","orgSlug","scopes","expiresAt","lastUsedAt","lastUsedIp","revokedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/me/device-tokens":{"post":{"tags":["me"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":8,"maxLength":4096},"platform":{"type":"string","enum":["ios","android","web"]}},"required":["token","platform"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string"},"lastSeenAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","platform","lastSeenAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["me"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string"},"lastSeenAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","platform","lastSeenAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/me/device-tokens/{id}":{"delete":{"tags":["me"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scim/tokens":{"post":{"tags":["scim"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"expiresAt":{}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","name","createdAt","expiresAt","lastUsedAt","revokedAt"],"additionalProperties":false},"secret":{"type":"string"}},"required":["token","secret"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["scim"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"tokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","name","createdAt","expiresAt","lastUsedAt","revokedAt"],"additionalProperties":false}}},"required":["tokens"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scim/tokens/{tokenId}":{"delete":{"tags":["scim"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"tokenId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","name","createdAt","expiresAt","lastUsedAt","revokedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/ServiceProviderConfig":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"documentationUri":{"type":"string"},"patch":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"],"additionalProperties":false},"bulk":{"type":"object","properties":{"supported":{"type":"boolean"},"maxOperations":{"type":"number"},"maxPayloadSize":{"type":"number"}},"required":["supported","maxOperations","maxPayloadSize"],"additionalProperties":false},"filter":{"type":"object","properties":{"supported":{"type":"boolean"},"maxResults":{"type":"number"}},"required":["supported","maxResults"],"additionalProperties":false},"changePassword":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"],"additionalProperties":false},"sort":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"],"additionalProperties":false},"etag":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"],"additionalProperties":false},"authenticationSchemes":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"primary":{"type":"boolean"}},"required":["type","name","description","primary"],"additionalProperties":false}}},"required":["schemas","documentationUri","patch","bulk","filter","changePassword","sort","etag","authenticationSchemes"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/ResourceTypes":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"number"},"startIndex":{"type":"number"},"itemsPerPage":{"type":"number"},"Resources":{"type":"array","items":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"endpoint":{"type":"string"},"schema":{"type":"string"}},"required":["schemas","id","name","endpoint","schema"],"additionalProperties":false}}},"required":["schemas","totalResults","startIndex","itemsPerPage","Resources"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/Users":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"filter","required":false},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"startIndex","required":false},{"schema":{"type":"integer","minimum":0,"maximum":200},"in":"query","name":"count","required":false},{"schema":{"type":"string","maxLength":512},"in":"query","name":"attributes","required":false},{"schema":{"type":"string","maxLength":512},"in":"query","name":"excludedAttributes","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"sortBy","required":false},{"schema":{"type":"string","maxLength":16},"in":"query","name":"sortOrder","required":false}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"integer","minimum":0,"maximum":9007199254740991},"startIndex":{"type":"integer","minimum":1,"maximum":9007199254740991},"itemsPerPage":{"type":"integer","minimum":0,"maximum":9007199254740991},"Resources":{"type":"array","items":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"userName":{"type":"string"},"displayName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"},"formatted":{"type":"string"}},"required":["formatted"],"additionalProperties":false},"emails":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}},"required":["value","primary","type"],"additionalProperties":false}},"active":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"}},"required":["value","primary"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","userName","displayName","name","emails","active","roles","meta"],"additionalProperties":false}}},"required":["schemas","totalResults","startIndex","itemsPerPage","Resources"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","security":[{"scimBearer":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"userName":{"type":"string"},"displayName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"},"formatted":{"type":"string"}},"required":["formatted"],"additionalProperties":false},"emails":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}},"required":["value","primary","type"],"additionalProperties":false}},"active":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"}},"required":["value","primary"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","userName","displayName","name","emails","active","roles","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/Users/{id}":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"userName":{"type":"string"},"displayName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"},"formatted":{"type":"string"}},"required":["formatted"],"additionalProperties":false},"emails":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}},"required":["value","primary","type"],"additionalProperties":false}},"active":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"}},"required":["value","primary"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","userName","displayName","name","emails","active","roles","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"userName":{"type":"string"},"displayName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"},"formatted":{"type":"string"}},"required":["formatted"],"additionalProperties":false},"emails":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}},"required":["value","primary","type"],"additionalProperties":false}},"active":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"}},"required":["value","primary"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","userName","displayName","name","emails","active","roles","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"userName":{"type":"string"},"displayName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"},"formatted":{"type":"string"}},"required":["formatted"],"additionalProperties":false},"emails":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}},"required":["value","primary","type"],"additionalProperties":false}},"active":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"primary":{"type":"boolean"}},"required":["value","primary"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","userName","displayName","name","emails","active","roles","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/Groups":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"filter","required":false},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"startIndex","required":false},{"schema":{"type":"integer","minimum":0,"maximum":200},"in":"query","name":"count","required":false},{"schema":{"type":"string","maxLength":512},"in":"query","name":"attributes","required":false},{"schema":{"type":"string","maxLength":512},"in":"query","name":"excludedAttributes","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"sortBy","required":false},{"schema":{"type":"string","maxLength":16},"in":"query","name":"sortOrder","required":false}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"integer","minimum":0,"maximum":9007199254740991},"startIndex":{"type":"integer","minimum":1,"maximum":9007199254740991},"itemsPerPage":{"type":"integer","minimum":0,"maximum":9007199254740991},"Resources":{"type":"array","items":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["value","display","type"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","members","meta"],"additionalProperties":false}}},"required":["schemas","totalResults","startIndex","itemsPerPage","Resources"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","security":[{"scimBearer":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["value","display","type"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","members","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/Groups/{id}":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["value","display","type"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","members","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["value","display","type"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","members","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["value","display","type"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","members","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/Agents":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"filter","required":false},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"startIndex","required":false},{"schema":{"type":"integer","minimum":0,"maximum":200},"in":"query","name":"count","required":false},{"schema":{"type":"string","maxLength":512},"in":"query","name":"attributes","required":false},{"schema":{"type":"string","maxLength":512},"in":"query","name":"excludedAttributes","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"sortBy","required":false},{"schema":{"type":"string","maxLength":16},"in":"query","name":"sortOrder","required":false}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"integer","minimum":0,"maximum":9007199254740991},"startIndex":{"type":"integer","minimum":1,"maximum":9007199254740991},"itemsPerPage":{"type":"integer","minimum":0,"maximum":9007199254740991},"Resources":{"type":"array","items":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"active":{"type":"boolean"},"agentKind":{"type":"string"},"sponsor":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userId":{"type":"string"}},"required":["value","userName","userId"],"additionalProperties":false},"maxTier":{"type":"string"},"lifecycle":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","active","agentKind","sponsor","maxTier","lifecycle","meta"],"additionalProperties":false}}},"required":["schemas","totalResults","startIndex","itemsPerPage","Resources"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","security":[{"scimBearer":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"active":{"type":"boolean"},"agentKind":{"type":"string"},"sponsor":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userId":{"type":"string"}},"required":["value","userName","userId"],"additionalProperties":false},"maxTier":{"type":"string"},"lifecycle":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","active","agentKind","sponsor","maxTier","lifecycle","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scim/v2/Agents/{id}":{"get":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"active":{"type":"boolean"},"agentKind":{"type":"string"},"sponsor":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userId":{"type":"string"}},"required":["value","userName","userId"],"additionalProperties":false},"maxTier":{"type":"string"},"lifecycle":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","active","agentKind","sponsor","maxTier","lifecycle","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"active":{"type":"boolean"},"agentKind":{"type":"string"},"sponsor":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userId":{"type":"string"}},"required":["value","userName","userId"],"additionalProperties":false},"maxTier":{"type":"string"},"lifecycle":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","active","agentKind","sponsor","maxTier","lifecycle","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"externalId":{"type":"string"},"displayName":{"type":"string"},"active":{"type":"boolean"},"agentKind":{"type":"string"},"sponsor":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userId":{"type":"string"}},"required":["value","userName","userId"],"additionalProperties":false},"maxTier":{"type":"string"},"lifecycle":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"created":{"type":"string"},"lastModified":{"type":"string"},"location":{"type":"string"}},"required":["resourceType","created","lastModified","location"],"additionalProperties":false}},"required":["schemas","id","displayName","active","agentKind","sponsor","maxTier","lifecycle","meta"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["scim"],"description":"Reachable without a Bucker session token. SCIM provisioning bearer token, verified in-handler by `authenticateScim`, not by a preHandler.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"scimBearer":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/compliance/regions":{"get":{"tags":["compliance"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"currentRegion":{"type":"string"},"regions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"jurisdiction":{"type":"string"},"ingestHost":{"type":"string"},"apiUrl":{"type":"string"},"acceptsNewOrgs":{"type":"boolean"},"active":{"type":"boolean"}},"required":["id","label","jurisdiction","ingestHost","apiUrl","acceptsNewOrgs","active"],"additionalProperties":false}}},"required":["currentRegion","regions"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/residency":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"region":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"jurisdiction":{"type":"string"},"ingestHost":{"type":"string"},"apiUrl":{"type":"string"},"acceptsNewOrgs":{"type":"boolean"},"active":{"type":"boolean"}},"required":["id","label","jurisdiction","ingestHost","apiUrl","acceptsNewOrgs","active"],"additionalProperties":false},"servedByThisRegion":{"type":"boolean"},"processRegion":{"type":"string"}},"required":["orgId","region","servedByThisRegion","processRegion"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/region-migrations":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"migrations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"fromRegion":{"type":"string"},"toRegion":{"type":"string"},"status":{"type":"string","enum":["PENDING","EXPORTED","IMPORTED","COMPLETED","FAILED"]},"bundleKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bundleSha256":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"number"}},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"exportedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"importedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cutoverAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","fromRegion","toRegion","status","bundleKey","bundleSha256","rowCounts","error","createdAt","exportedAt","importedAt","cutoverAt"],"additionalProperties":false}}},"required":["migrations"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toRegion":{"type":"string","minLength":2,"maxLength":16}},"required":["toRegion"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"fromRegion":{"type":"string"},"toRegion":{"type":"string"},"status":{"type":"string","enum":["PENDING","EXPORTED","IMPORTED","COMPLETED","FAILED"]},"bundleKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bundleSha256":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"number"}},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"exportedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"importedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cutoverAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","fromRegion","toRegion","status","bundleKey","bundleSha256","rowCounts","error","createdAt","exportedAt","importedAt","cutoverAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/region-migrations/{id}/export":{"post":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"fromRegion":{"type":"string"},"toRegion":{"type":"string"},"status":{"type":"string","enum":["PENDING","EXPORTED","IMPORTED","COMPLETED","FAILED"]},"bundleKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bundleSha256":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"number"}},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"exportedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"importedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cutoverAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","fromRegion","toRegion","status","bundleKey","bundleSha256","rowCounts","error","createdAt","exportedAt","importedAt","cutoverAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/region-migrations/{id}/import":{"post":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"fromRegion":{"type":"string"},"toRegion":{"type":"string"},"status":{"type":"string","enum":["PENDING","EXPORTED","IMPORTED","COMPLETED","FAILED"]},"bundleKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bundleSha256":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"number"}},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"exportedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"importedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cutoverAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","fromRegion","toRegion","status","bundleKey","bundleSha256","rowCounts","error","createdAt","exportedAt","importedAt","cutoverAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/region-migrations/{id}/cutover":{"post":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"fromRegion":{"type":"string"},"toRegion":{"type":"string"},"status":{"type":"string","enum":["PENDING","EXPORTED","IMPORTED","COMPLETED","FAILED"]},"bundleKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bundleSha256":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"number"}},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"exportedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"importedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cutoverAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","fromRegion","toRegion","status","bundleKey","bundleSha256","rowCounts","error","createdAt","exportedAt","importedAt","cutoverAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/region-migrations/{id}/abort":{"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"fromRegion":{"type":"string"},"toRegion":{"type":"string"},"status":{"type":"string","enum":["PENDING","EXPORTED","IMPORTED","COMPLETED","FAILED"]},"bundleKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bundleSha256":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"number"}},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"exportedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"importedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cutoverAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","fromRegion","toRegion","status","bundleKey","bundleSha256","rowCounts","error","createdAt","exportedAt","importedAt","cutoverAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/dsr":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"kind":{"type":"string","enum":["EXPORT","ERASURE"]},"status":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"subjectUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"subjectEmail":{"type":"string"},"tableCounts":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"storageKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","kind","status","subjectUserId","subjectEmail","tableCounts","storageKey","error","createdAt","completedAt"],"additionalProperties":false}}},"required":["requests"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/dsr/export":{"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"kind":{"type":"string","enum":["EXPORT","ERASURE"]},"status":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"subjectUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"subjectEmail":{"type":"string"},"tableCounts":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"storageKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","kind","status","subjectUserId","subjectEmail","tableCounts","storageKey","error","createdAt","completedAt"],"additionalProperties":false},"export":{"type":"object","properties":{"subject":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"principalId":{"type":"string"}},"required":["userId","email","principalId"],"additionalProperties":false},"generatedAt":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"tableCounts":{"type":"object","additionalProperties":{"type":"number"}},"tablesInspected":{"type":"array","items":{"type":"string"}},"retainedForLegalBasis":{"type":"object","additionalProperties":{"type":"string"}},"minimisedForLegalBasis":{"type":"object","additionalProperties":{"type":"string"}},"scope":{"type":"object","properties":{"orgId":{"type":"string"},"orgScoped":{"type":"object","additionalProperties":{"type":"string"}},"accountScoped":{"type":"array","items":{"type":"string"}}},"required":["orgId","orgScoped","accountScoped"],"additionalProperties":false}},"required":["subject","generatedAt","data","tableCounts","tablesInspected","retainedForLegalBasis","minimisedForLegalBasis","scope"],"additionalProperties":false}},"required":["request","export"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/dsr/erasure":{"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"kind":{"type":"string","enum":["EXPORT","ERASURE"]},"status":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"subjectUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"subjectEmail":{"type":"string"},"tableCounts":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"storageKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","kind","status","subjectUserId","subjectEmail","tableCounts","storageKey","error","createdAt","completedAt"],"additionalProperties":false},"report":{"type":"object","properties":{"deleted":{"type":"object","additionalProperties":{"type":"number"}},"nulled":{"type":"object","additionalProperties":{"type":"number"}},"emailsScrubbed":{"type":"object","additionalProperties":{"type":"number"}},"pointersRetained":{"type":"object","additionalProperties":{"type":"number"}},"retained":{"type":"object","additionalProperties":{"type":"string"}},"minimised":{"type":"object","additionalProperties":{"type":"string"}},"subjectPseudonymised":{"type":"boolean"},"suspendedAgentIds":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string"},"accountRetained":{"anyOf":[{"type":"object","properties":{"otherOrgCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tables":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"}},"required":["otherOrgCount","tables","reason"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["deleted","nulled","emailsScrubbed","pointersRetained","retained","minimised","subjectPseudonymised","suspendedAgentIds","orgId","accountRetained"],"additionalProperties":false}},"required":["request","report"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/dsr/telemetry/reach":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"notReachable":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string"},"reason":{"type":"string"}},"required":["scope","reason"],"additionalProperties":false}}},"required":["notReachable"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/dsr/telemetry/erasure":{"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectSlug":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"userId":{"type":"string","minLength":6,"maxLength":256},"username":{"type":"string","minLength":6,"maxLength":256},"ipAddress":{"type":"string","maxLength":64},"dryRun":{"type":"boolean"},"acknowledgeEventCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"archivesAfterDay":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"kind":{"type":"string","enum":["EXPORT","ERASURE"]},"status":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"subjectUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"subjectEmail":{"type":"string"},"tableCounts":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]},"storageKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","kind","status","subjectUserId","subjectEmail","tableCounts","storageKey","error","createdAt","completedAt"],"additionalProperties":false},"orgId":{"type":"string"},"dryRun":{"type":"boolean"},"projects":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectSlug":{"type":"string"},"userHashes":{"type":"array","items":{"type":"string"}},"erased":{"type":"object","additionalProperties":{"type":"number"}},"blobsDeleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replays":{"type":"object","properties":{"segments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"blobs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transcripts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"}},"required":["segments","blobs","transcripts","truncated"],"additionalProperties":false},"archives":{"type":"object","properties":{"scanned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewritten":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rowsRemoved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"},"resumeAfterDay":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["scanned","rewritten","rowsRemoved","truncated","resumeAfterDay"],"additionalProperties":false},"flagged":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"id":{"type":"string"},"label":{"type":"string"},"reason":{"type":"string"}},"required":["kind","id","label","reason"],"additionalProperties":false}}},"required":["projectId","projectSlug","userHashes","erased","blobsDeleted","replays","archives","flagged"],"additionalProperties":false}},"totals":{"type":"object","additionalProperties":{"type":"number"}},"truncated":{"type":"boolean"},"notReachable":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string"},"reason":{"type":"string"}},"required":["scope","reason"],"additionalProperties":false}}},"required":["request","orgId","dryRun","projects","totals","truncated","notReachable"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/audit-sinks":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sinks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"url":{"type":"string"},"enabled":{"type":"boolean"},"secretConfigured":{"type":"boolean"},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cursorId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDeliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","name","kind","url","enabled","secretConfigured","cursorAt","cursorId","lastDeliveredAt","deliveredCount","failureCount","lastError","createdAt","updatedAt"],"additionalProperties":false}}},"required":["sinks"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","maxLength":2048,"format":"uri"},"secret":{"anyOf":[{"type":"string","minLength":8,"maxLength":512},{"nullable":true,"enum":[null]}]},"enabled":{"type":"boolean"}},"required":["name","url"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"url":{"type":"string"},"enabled":{"type":"boolean"},"secretConfigured":{"type":"boolean"},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cursorId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDeliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","name","kind","url","enabled","secretConfigured","cursorAt","cursorId","lastDeliveredAt","deliveredCount","failureCount","lastError","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/audit-sinks/{id}":{"delete":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/audit-sinks/{id}/flush":{"post":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sinkId":{"type":"string"},"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ok":{"type":"boolean"},"status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"error":{"type":"string"}},"required":["sinkId","delivered","ok","status"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/retention":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requested":{"type":"object","properties":{"auditLogDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"spanDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"logRecordDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"replayDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["auditLogDays","spanDays","logRecordDays","replayDays"],"additionalProperties":false},"effective":{"type":"object","properties":{"auditLogDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"spanDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logRecordDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["auditLogDays","spanDays","logRecordDays","replayDays"],"additionalProperties":false},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planMaxDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clamped":{"type":"array","items":{"type":"string","enum":["auditLogDays","spanDays","logRecordDays","replayDays"]}},"lastEnforcedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgId","requested","effective","plan","planMaxDays","clamped","lastEnforcedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"auditLogDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"spanDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"logRecordDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"replayDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requested":{"type":"object","properties":{"auditLogDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"spanDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"logRecordDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"replayDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["auditLogDays","spanDays","logRecordDays","replayDays"],"additionalProperties":false},"effective":{"type":"object","properties":{"auditLogDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"spanDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logRecordDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["auditLogDays","spanDays","logRecordDays","replayDays"],"additionalProperties":false},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planMaxDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clamped":{"type":"array","items":{"type":"string","enum":["auditLogDays","spanDays","logRecordDays","replayDays"]}},"lastEnforcedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgId","requested","effective","plan","planMaxDays","clamped","lastEnforcedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/retention/enforce":{"post":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"deleted":{"type":"object","additionalProperties":{"type":"number"}},"windows":{"type":"object","additionalProperties":{"type":"number"}},"totalDeleted":{"type":"number"},"objectsDeleted":{"type":"object","additionalProperties":{"type":"number"}},"objectFailures":{"type":"array","items":{"type":"string"}},"ingest":{"type":"object","properties":{"jobs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"envelopes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventPointersCleared":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"array","items":{"type":"string"}}},"required":["jobs","envelopes","eventPointersCleared","failed"],"additionalProperties":false},"effective":{"type":"object","properties":{"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planMaxDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"days":{"type":"object","properties":{"auditLogDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"spanDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logRecordDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["auditLogDays","spanDays","logRecordDays","replayDays"],"additionalProperties":false},"clamped":{"type":"array","items":{"type":"string","enum":["auditLogDays","spanDays","logRecordDays","replayDays"]}}},"required":["plan","planMaxDays","days","clamped"],"additionalProperties":false}},"required":["orgId","deleted","windows","totalDeleted","objectsDeleted","objectFailures","ingest","effective"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/scrub-rules":{"get":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"tiers":{"type":"array","items":{"type":"string","enum":["stored","agent"]}},"keys":{"type":"array","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"valuePattern":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string"},"replacement":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","name","enabled","tiers","keys","paths","valuePattern","action","shape","replacement","position","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["rules","limit"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9][a-z0-9-]*$"},"enabled":{"type":"boolean"},"tiers":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["stored","agent"]}},"keys":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"paths":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":256}},"valuePattern":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9][a-z0-9-]*$"},"replacement":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":0,"maximum":1000}},"required":["name","tiers"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"tiers":{"type":"array","items":{"type":"string","enum":["stored","agent"]}},"keys":{"type":"array","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"valuePattern":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string"},"replacement":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","name","enabled","tiers","keys","paths","valuePattern","action","shape","replacement","position","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/scrub-rules/preview":{"post":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rule":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9][a-z0-9-]*$"},"enabled":{"type":"boolean"},"tiers":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["stored","agent"]}},"keys":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"paths":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":256}},"valuePattern":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9][a-z0-9-]*$"},"replacement":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":0,"maximum":1000}},"required":["name","tiers"]},"sample":{"type":"string","minLength":1,"maxLength":8192},"tier":{"type":"string","enum":["stored","agent"]}},"required":["rule","sample"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string","enum":["stored","agent"]},"sample":{"type":"string"},"matched":{"type":"boolean"},"redacted":{"type":"string"},"manifest":{"type":"object","properties":{"tier":{"type":"string","enum":["stored","agent"]},"entries":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"rule":{"type":"string"},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string"},"length":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["path","rule","action","shape","length","count"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"}},"required":["tier","entries","total","truncated"],"additionalProperties":false}},"required":["tier","sample","matched","redacted","manifest"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/compliance/scrub-rules/{id}":{"patch":{"tags":["compliance"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9][a-z0-9-]*$"},"enabled":{"type":"boolean"},"tiers":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["stored","agent"]}},"keys":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"paths":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":256}},"valuePattern":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9][a-z0-9-]*$"},"replacement":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":0,"maximum":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"tiers":{"type":"array","items":{"type":"string","enum":["stored","agent"]}},"keys":{"type":"array","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"valuePattern":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string"},"replacement":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","name","enabled","tiers","keys","paths","valuePattern","action","shape","replacement","position","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["compliance"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs":{"post":{"tags":["orgs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":2,"maxLength":48,"pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$"},"region":{"default":"us","type":"string","enum":["us","eu"]}},"required":["name"]}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"region":{"type":"string"},"aiEnabled":{"type":"boolean"},"agentPrCreationEnabled":{"type":"boolean"},"createdAt":{"type":"string"},"tokens":{"type":"object","properties":{"accessToken":{"type":"string","minLength":1},"expiresIn":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["accessToken","expiresIn","tokenType"],"additionalProperties":false}},"required":["id","name","slug","region","aiEnabled","agentPrCreationEnabled","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["orgs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"region":{"type":"string"},"aiEnabled":{"type":"boolean"},"agentPrCreationEnabled":{"type":"boolean"},"createdAt":{"type":"string"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]}},"required":["id","name","slug","region","aiEnabled","agentPrCreationEnabled","createdAt","role"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}":{"get":{"tags":["orgs"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"region":{"type":"string"},"aiEnabled":{"type":"boolean"},"agentPrCreationEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","name","slug","region","aiEnabled","agentPrCreationEnabled","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["orgs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"aiEnabled":{"type":"boolean"},"agentPrCreationEnabled":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"region":{"type":"string"},"aiEnabled":{"type":"boolean"},"agentPrCreationEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","name","slug","region","aiEnabled","agentPrCreationEnabled","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["orgs"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/security-policy":{"get":{"tags":["security-policy"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mfaRequired":{"type":"boolean"},"mfaRequiredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mfaGraceDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mfaGraceEndsAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mfaEnforcing":{"type":"boolean"},"accessTokenTtlSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"refreshTokenTtlDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"sessionIdleTimeoutMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"deployment":{"type":"object","properties":{"accessTokenTtlSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refreshTokenTtlDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["accessTokenTtlSeconds","refreshTokenTtlDays"],"additionalProperties":false},"mfaEnrolment":{"anyOf":[{"type":"object","properties":{"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notEnrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["members","enrolled","notEnrolled"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["mfaRequired","mfaRequiredAt","mfaGraceDays","mfaGraceEndsAt","mfaEnforcing","accessTokenTtlSeconds","refreshTokenTtlDays","sessionIdleTimeoutMinutes","deployment","mfaEnrolment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["security-policy"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mfaRequired":{"type":"boolean"},"mfaGraceDays":{"type":"integer","minimum":0,"maximum":365},"accessTokenTtlSeconds":{"anyOf":[{"type":"integer","minimum":60,"maximum":86400},{"nullable":true,"enum":[null]}]},"refreshTokenTtlDays":{"anyOf":[{"type":"integer","minimum":1,"maximum":365},{"nullable":true,"enum":[null]}]},"sessionIdleTimeoutMinutes":{"anyOf":[{"type":"integer","minimum":5,"maximum":43200},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mfaRequired":{"type":"boolean"},"mfaRequiredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mfaGraceDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mfaGraceEndsAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mfaEnforcing":{"type":"boolean"},"accessTokenTtlSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"refreshTokenTtlDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"sessionIdleTimeoutMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"deployment":{"type":"object","properties":{"accessTokenTtlSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refreshTokenTtlDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["accessTokenTtlSeconds","refreshTokenTtlDays"],"additionalProperties":false},"mfaEnrolment":{"anyOf":[{"type":"object","properties":{"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notEnrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["members","enrolled","notEnrolled"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["mfaRequired","mfaRequiredAt","mfaGraceDays","mfaGraceEndsAt","mfaEnforcing","accessTokenTtlSeconds","refreshTokenTtlDays","sessionIdleTimeoutMinutes","deployment","mfaEnrolment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/members":{"get":{"tags":["members"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"joinedAt":{"type":"string"}},"required":["id","principalId","kind","displayName","userId","email","avatarUrl","role","joinedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/members/{memberId}":{"patch":{"tags":["members"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]}},"required":["role"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"memberId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"avatarUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"joinedAt":{"type":"string"}},"required":["id","principalId","kind","displayName","userId","email","avatarUrl","role","joinedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["members"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"memberId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/invites":{"post":{"tags":["invites"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"default":"MEMBER","type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"teamIds":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"required":["email"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"acceptedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"token":{"type":"string"}},"required":["id","email","role","expiresAt","createdAt","acceptedAt","token"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["invites"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"acceptedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","email","role","expiresAt","createdAt","acceptedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/invites/{inviteId}":{"delete":{"tags":["invites"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"inviteId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/invites/accept":{"post":{"tags":["invites"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":4096}},"required":["token"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"region":{"type":"string"},"aiEnabled":{"type":"boolean"},"agentPrCreationEnabled":{"type":"boolean"},"createdAt":{"type":"string"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]}},"required":["id","name","slug","region","aiEnabled","agentPrCreationEnabled","createdAt","role"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/teams":{"post":{"tags":["teams"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":2,"maxLength":48,"pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"orgId":{"type":"string"},"memberCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","name","slug","orgId","memberCount","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["teams"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"orgId":{"type":"string"},"memberCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","name","slug","orgId","memberCount","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/teams/{teamSlug}":{"get":{"tags":["teams"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"orgId":{"type":"string"},"memberCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","name","slug","orgId","memberCount","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["teams"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"orgId":{"type":"string"},"memberCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","name","slug","orgId","memberCount","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["teams"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/teams/{teamSlug}/members":{"post":{"tags":["teams"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"role":{"default":"CONTRIBUTOR","type":"string","enum":["TEAM_ADMIN","CONTRIBUTOR"]}},"required":["userId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"principalId":{"type":"string"},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"role":{"type":"string","enum":["TEAM_ADMIN","CONTRIBUTOR"]},"joinedAt":{"type":"string"}},"required":["principalId","displayName","userId","role","joinedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/teams/{teamSlug}/members/{principalId}":{"delete":{"tags":["teams"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects":{"post":{"tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":2,"maxLength":48,"pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$"},"platform":{"default":"other","type":"string","enum":["javascript-browser","javascript-node","javascript-nextjs","flutter","python","other"]},"teamIds":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","enum":["javascript-browser","javascript-node","javascript-nextjs","flutter","python","other"]},"orgId":{"type":"string"},"createdAt":{"type":"string"},"shortIdPrefix":{"type":"string"},"teamIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","platform","orgId","createdAt","shortIdPrefix","teamIds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","enum":["javascript-browser","javascript-node","javascript-nextjs","flutter","python","other"]},"orgId":{"type":"string"},"createdAt":{"type":"string"},"shortIdPrefix":{"type":"string"},"teamIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","platform","orgId","createdAt","shortIdPrefix","teamIds"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}":{"get":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","enum":["javascript-browser","javascript-node","javascript-nextjs","flutter","python","other"]},"orgId":{"type":"string"},"createdAt":{"type":"string"},"shortIdPrefix":{"type":"string"},"teamIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","platform","orgId","createdAt","shortIdPrefix","teamIds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"platform":{"type":"string","enum":["javascript-browser","javascript-node","javascript-nextjs","flutter","python","other"]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","enum":["javascript-browser","javascript-node","javascript-nextjs","flutter","python","other"]},"orgId":{"type":"string"},"createdAt":{"type":"string"},"shortIdPrefix":{"type":"string"},"teamIds":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","platform","orgId","createdAt","shortIdPrefix","teamIds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/teams/{teamSlug}":{"post":{"tags":["teams"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["teams"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"teamSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/keys":{"get":{"tags":["keys"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"publicKey":{"type":"string"},"dsn":{"type":"string"},"projectId":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","name","publicKey","dsn","projectId","isActive","rateLimitPerMinute","createdAt","lastUsedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["keys"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"default":"default","type":"string","minLength":1,"maxLength":120},"rateLimitPerMinute":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":1000000,"minimum":0},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"publicKey":{"type":"string"},"dsn":{"type":"string"},"projectId":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","name","publicKey","dsn","projectId","isActive","rateLimitPerMinute","createdAt","lastUsedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/keys/{keyId}":{"patch":{"tags":["keys"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":1000000,"minimum":0},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"keyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"publicKey":{"type":"string"},"dsn":{"type":"string"},"projectId":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","name","publicKey","dsn","projectId","isActive","rateLimitPerMinute","createdAt","lastUsedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["keys"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"keyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"status","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"level","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"environment","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"release","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"assignee","required":false},{"schema":{"type":"string","maxLength":500},"in":"query","name":"query","required":false},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"since","required":false},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"until","required":false},{"schema":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"in":"query","name":"sort","required":false},{"schema":{"default":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"fingerprint":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"type":"string"},"exceptionValue":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"actionability":{"type":"number"},"assigneePrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assignee":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"resolvedInRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"aiStatus":{"type":"object","properties":{"rcaStatus":{"type":"string","enum":["none","running","ready","failed"]},"topHypothesisConfidence":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"proposalStatus":{"anyOf":[{"type":"string","enum":["DRAFT","AWAITING_APPROVAL","READY_UNPUSHED","PR_OPEN","APPROVED","REJECTED","MERGED","SUPERSEDED"]},{"nullable":true,"enum":[null]}]},"verificationTier":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["rcaStatus","topHypothesisConfidence","proposalStatus","verificationTier"],"additionalProperties":false}},"required":["id","shortId","projectId","fingerprint","title","culprit","exceptionType","exceptionValue","level","status","eventCount","userCount","firstSeen","lastSeen","actionability","assigneePrincipalId","assignee","resolvedInRelease","archivedUntil","aiStatus"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"fingerprint":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"type":"string"},"exceptionValue":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"actionability":{"type":"number"},"assigneePrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assignee":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"resolvedInRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"essence":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"essenceVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"essenceTokens":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"firstReleaseId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastReleaseId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","shortId","projectId","fingerprint","title","culprit","exceptionType","exceptionValue","level","status","eventCount","userCount","firstSeen","lastSeen","actionability","assigneePrincipalId","assignee","resolvedInRelease","archivedUntil","essence","essenceVersion","essenceTokens","firstReleaseId","lastReleaseId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"action":{"type":"string","enum":["resolve"]},"resolvedInRelease":{"type":"string","minLength":1,"maxLength":200}},"required":["action"]},{"type":"object","properties":{"action":{"type":"string","enum":["suppress"]},"archivedUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["action"]},{"type":"object","properties":{"action":{"type":"string","enum":["route"]},"assigneePrincipalId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]}},"required":["action","assigneePrincipalId"]},{"type":"object","properties":{"action":{"type":"string","enum":["reopen"]}},"required":["action"]}]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"fingerprint":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"type":"string"},"exceptionValue":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"actionability":{"type":"number"},"assigneePrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assignee":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"resolvedInRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"essence":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"essenceVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"essenceTokens":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"firstReleaseId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastReleaseId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","shortId","projectId","fingerprint","title","culprit","exceptionType","exceptionValue","level","status","eventCount","userCount","firstSeen","lastSeen","actionability","assigneePrincipalId","assignee","resolvedInRelease","archivedUntil","essence","essenceVersion","essenceTokens","firstReleaseId","lastReleaseId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/events":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionValue":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"platform":{"type":"string"},"environment":{"type":"string"},"releaseVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"serverName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"transaction":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"spanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userHash":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timestamp":{"type":"string"},"receivedAt":{"type":"string"}},"required":["id","eventId","issueId","projectId","level","message","exceptionType","exceptionValue","platform","environment","releaseVersion","serverName","transaction","traceId","spanId","userHash","timestamp","receivedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/events/latest":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionValue":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"platform":{"type":"string"},"environment":{"type":"string"},"releaseVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"serverName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"transaction":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"spanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userHash":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timestamp":{"type":"string"},"receivedAt":{"type":"string"},"payload":{},"envelopeKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"symbolication":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","eventId","issueId","projectId","level","message","exceptionType","exceptionValue","platform","environment","releaseVersion","serverName","transaction","traceId","spanId","userHash","timestamp","receivedAt","payload","envelopeKey","symbolication"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/events/{eventId}":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"eventId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionValue":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"platform":{"type":"string"},"environment":{"type":"string"},"releaseVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"serverName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"transaction":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"spanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userHash":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timestamp":{"type":"string"},"receivedAt":{"type":"string"},"payload":{},"envelopeKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"symbolication":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","eventId","issueId","projectId","level","message","exceptionType","exceptionValue","platform","environment","releaseVersion","serverName","transaction","traceId","spanId","userHash","timestamp","receivedAt","payload","envelopeKey","symbolication"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/blast-radius":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"events":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastHour":{"type":"object","properties":{"ratePerHour":{"type":"number"},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"windowHours":{"type":"number"}},"required":["ratePerHour","n","windowHours"],"additionalProperties":false},"baseline":{"type":"object","properties":{"ratePerHour":{"type":"number"},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"windowHours":{"type":"number"}},"required":["ratePerHour","n","windowHours"],"additionalProperties":false}},"required":["total","lastHour","baseline"],"additionalProperties":false},"users":{"type":"object","properties":{"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["affected"],"additionalProperties":false},"environments":{"type":"object","properties":{"values":{"type":"array","items":{"type":"string"}},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["essence","events"]},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"windowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"sampledEvents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["values","n","source","limit","windowDays","sampledEvents"],"additionalProperties":false},"releases":{"type":"object","properties":{"first":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"health":{"type":"object","properties":{"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"users":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["sessions","crashedSessions","users","crashedUsers","crashFreeSessionRate","crashFreeUserRate"],"additionalProperties":false}},"required":["version","health"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"last":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"health":{"type":"object","properties":{"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"users":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["sessions","crashedSessions","users","crashedUsers","crashFreeSessionRate","crashFreeUserRate"],"additionalProperties":false}},"required":["version","health"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["first","last"],"additionalProperties":false},"services":{"type":"object","properties":{"values":{"type":"array","items":{"type":"string"}},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["values","n","limit","traceId"],"additionalProperties":false},"divergence":{"type":"object","properties":{"hasRun":{"type":"boolean"},"verdict":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["hasRun","verdict"],"additionalProperties":false}},"required":["issueId","shortId","events","users","environments","releases","services","divergence"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/activity":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"type":{"type":"string"},"data":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"principalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"principal":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","issueId","type","data","principalId","principal","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/bulk":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"action":{"type":"string","enum":["resolve"]},"resolvedInRelease":{"type":"string","minLength":1,"maxLength":200},"ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1}}},"required":["action","ids"]},{"type":"object","properties":{"action":{"type":"string","enum":["suppress"]},"archivedUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1}}},"required":["action","ids"]},{"type":"object","properties":{"action":{"type":"string","enum":["route"]},"assigneePrincipalId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1}}},"required":["action","assigneePrincipalId","ids"]},{"type":"object","properties":{"action":{"type":"string","enum":["reopen"]},"ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1}}},"required":["action","ids"]}]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"succeeded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean"},"issue":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"fingerprint":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"type":"string"},"exceptionValue":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"actionability":{"type":"number"},"assigneePrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assignee":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"resolvedInRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","shortId","projectId","fingerprint","title","culprit","exceptionType","exceptionValue","level","status","eventCount","userCount","firstSeen","lastSeen","actionability","assigneePrincipalId","assignee","resolvedInRelease","archivedUntil"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","ok","issue","error"],"additionalProperties":false}}},"required":["succeeded","failed","results"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/artifacts":{"post":{"tags":["artifacts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"debugId":{"type":"string","minLength":1},"type":{"default":"SOURCEMAP","type":"string","enum":["SOURCEMAP","BUNDLE","DSYM","PROGUARD","DART_SYMBOLS"]},"name":{"type":"string","minLength":1,"maxLength":512},"contentBase64":{"type":"string","minLength":1},"releaseVersion":{"anyOf":[{"type":"string","maxLength":255},{"nullable":true,"enum":[null]}]},"dist":{"anyOf":[{"type":"string","maxLength":255},{"nullable":true,"enum":[null]}]}},"required":["debugId","name","contentBase64"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"debugId":{"type":"string"},"type":{"type":"string","enum":["SOURCEMAP","BUNDLE","DSYM","PROGUARD","DART_SYMBOLS"]},"name":{"type":"string"},"size":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sha256":{"type":"string"},"deduplicated":{"type":"boolean"},"replaced":{"type":"boolean"},"uploadedAt":{"type":"string","format":"date-time"},"validation":{"type":"object","properties":{"ok":{"type":"boolean"},"mappings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasSourcesContent":{"type":"boolean"},"embeddedDebugId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"error":{"type":"string"}},"required":["ok","mappings","sources","hasSourcesContent","embeddedDebugId"],"additionalProperties":false},"symbolicationSupported":{"type":"boolean"}},"required":["id","debugId","type","name","size","sha256","deduplicated","replaced","uploadedAt","validation","symbolicationSupported"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["artifacts"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"debugId","required":false},{"schema":{"type":"string","enum":["SOURCEMAP","BUNDLE","DSYM","PROGUARD","DART_SYMBOLS"]},"in":"query","name":"type","required":false},{"schema":{"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"debugId":{"type":"string"},"type":{"type":"string","enum":["SOURCEMAP","BUNDLE","DSYM","PROGUARD","DART_SYMBOLS"]},"name":{"type":"string"},"size":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sha256":{"type":"string"},"releaseVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"dist":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"uploadedAt":{"type":"string","format":"date-time"}},"required":["id","debugId","type","name","size","sha256","releaseVersion","dist","uploadedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/artifacts/{id}":{"delete":{"tags":["artifacts"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/artifacts/verify":{"post":{"tags":["artifacts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"debugIds":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","minLength":1}}},"required":["debugIds"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"results":{"type":"array","items":{"type":"object","properties":{"debugId":{"type":"string"},"ok":{"type":"boolean"},"reason":{"type":"string","enum":["artifact-not-found","artifact-present-unresolvable","malformed-map","invalid-debug-id"]},"detail":{"type":"string"},"name":{"type":"string"},"mappings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["debugId","ok"],"additionalProperties":false}}},"required":["ok","results"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/symbolication":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"string"},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventTimestamp":{"anyOf":[{"type":"string","format":"date-time"},{"nullable":true,"enum":[null]}]},"report":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"note":{"type":"string"}},"required":["issueId","eventId","eventTimestamp","report"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/scm/providers":{"get":{"tags":["scm"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"displayName":{"type":"string"},"availableConsentScopes":{"type":"array","items":{"type":"string"}}},"required":["provider","displayName","availableConsentScopes"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/repos":{"post":{"tags":["repos"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":32},"externalId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^(?!\\.{1,2}\\/)[\\w.-]+\\/(?!\\.{1,2}$)[\\w.-]+$"},"name":{"type":"string","minLength":1,"maxLength":200},"defaultBranch":{"type":"string","minLength":1,"maxLength":200,"pattern":"^(?!-)(?!.*\\.\\.)[^\\s\\x00-\\x1f\\x7f]+$"},"token":{"type":"string","minLength":1,"maxLength":500},"consentScope":{"minItems":1,"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"required":["provider","externalId","consentScope"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"externalId":{"type":"string"},"name":{"type":"string"},"defaultBranch":{"type":"string"},"consentScope":{"type":"array","items":{"type":"string"}},"consentRevokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasCredentials":{"type":"boolean"},"installationId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"connectedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","provider","externalId","name","defaultBranch","consentScope","consentRevokedAt","hasCredentials","installationId","connectedByPrincipalId","createdAt","lastSyncedAt"],"additionalProperties":false},"webhookSecret":{"type":"string"},"webhookUrl":{"type":"string"}},"required":["connection","webhookSecret","webhookUrl"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["repos"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"externalId":{"type":"string"},"name":{"type":"string"},"defaultBranch":{"type":"string"},"consentScope":{"type":"array","items":{"type":"string"}},"consentRevokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasCredentials":{"type":"boolean"},"installationId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"connectedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","provider","externalId","name","defaultBranch","consentScope","consentRevokedAt","hasCredentials","installationId","connectedByPrincipalId","createdAt","lastSyncedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/repos/{repoId}":{"delete":{"tags":["repos"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"repoId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/repos/{repoId}/revoke":{"post":{"tags":["repos"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"repoId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"externalId":{"type":"string"},"name":{"type":"string"},"defaultBranch":{"type":"string"},"consentScope":{"type":"array","items":{"type":"string"}},"consentRevokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasCredentials":{"type":"boolean"},"installationId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"connectedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","provider","externalId","name","defaultBranch","consentScope","consentRevokedAt","hasCredentials","installationId","connectedByPrincipalId","createdAt","lastSyncedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations/github/install":{"get":{"tags":["integrations"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"repoConnectionId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/repos/{repoId}/contents":{"get":{"tags":["repos"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"path","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"ref","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"repoId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"path":{"type":"string"},"ref":{"type":"string"},"content":{"type":"string"}},"required":["path","ref","content"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/code-mappings":{"post":{"tags":["code-mappings"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoConnectionId":{"type":"string","minLength":1,"maxLength":64},"stackRoot":{"type":"string","maxLength":300},"sourceRoot":{"type":"string","maxLength":300},"branch":{"type":"string","minLength":1,"maxLength":200}},"required":["repoConnectionId","stackRoot","sourceRoot"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"repoConnectionId":{"type":"string"},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"branch":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","projectId","repoConnectionId","stackRoot","sourceRoot","branch","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["code-mappings"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"repoConnectionId":{"type":"string"},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"branch":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","projectId","repoConnectionId","stackRoot","sourceRoot","branch","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/code-mappings/{mappingId}":{"delete":{"tags":["code-mappings"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"mappingId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/suspect-commits":{"get":{"tags":["issues"],"parameters":[{"schema":{"default":5,"type":"integer","minimum":1,"maximum":20},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"sha":{"type":"string"},"shortSha":{"type":"string"},"message":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name","email"],"additionalProperties":false},"committedAt":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"score":{"type":"number"},"reason":{"type":"string"},"matchedFiles":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"changeType":{"type":"string"},"frameDepth":{"type":"number"}},"required":["path","changeType","frameDepth"],"additionalProperties":false}}},"required":["sha","shortSha","message","author","committedAt","url","score","reason","matchedFiles"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/scm/{provider}":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Provider HMAC over the raw body is the authentication.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":32},"in":"path","name":"provider","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"received":{"type":"boolean"},"event":{"type":"string"},"commitsUpserted":{"type":"number"},"changeEventsCreated":{"type":"number"},"proposalsMerged":{"type":"array","items":{"type":"string"}},"issuesReopened":{"type":"array","items":{"type":"string"}},"proposalsSuperseded":{"type":"array","items":{"type":"string"}}},"required":["received","event","commitsUpserted","changeEventsCreated","proposalsMerged","issuesReopened","proposalsSuperseded"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/codebase/sync":{"post":{"tags":["codebase"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoConnectionId":{"type":"string","minLength":1,"maxLength":64},"ref":{"type":"string","minLength":1,"maxLength":200},"includeGlobs":{"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"excludeGlobs":{"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"maxFileBytes":{"type":"integer","minimum":1,"maximum":4194304},"maxFiles":{"type":"integer","minimum":1,"maximum":20000},"embeddingProvider":{"type":"string","minLength":1,"maxLength":64}},"required":["repoConnectionId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"index":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"repoConnectionId":{"type":"string"},"ref":{"type":"string"},"status":{"type":"string"},"includeGlobs":{"type":"array","items":{"type":"string"}},"excludeGlobs":{"type":"array","items":{"type":"string"}},"maxFileBytes":{"type":"number"},"filesIndexed":{"type":"number"},"filesSkipped":{"type":"number"},"chunkCount":{"type":"number"},"bytesIndexed":{"type":"number"},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"syncRequestedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","projectId","repoConnectionId","ref","status","includeGlobs","excludeGlobs","maxFileBytes","filesIndexed","filesSkipped","chunkCount","bytesIndexed","embeddingModel","lastError","lastSyncedAt","revokedAt","syncRequestedAt","createdAt"],"additionalProperties":false},"queued":{"type":"boolean","enum":[true]}},"required":["index","queued"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/codebase/status":{"get":{"tags":["codebase"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"indexes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"repoConnectionId":{"type":"string"},"ref":{"type":"string"},"status":{"type":"string"},"includeGlobs":{"type":"array","items":{"type":"string"}},"excludeGlobs":{"type":"array","items":{"type":"string"}},"maxFileBytes":{"type":"number"},"filesIndexed":{"type":"number"},"filesSkipped":{"type":"number"},"chunkCount":{"type":"number"},"bytesIndexed":{"type":"number"},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"syncRequestedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","projectId","repoConnectionId","ref","status","includeGlobs","excludeGlobs","maxFileBytes","filesIndexed","filesSkipped","chunkCount","bytesIndexed","embeddingModel","lastError","lastSyncedAt","revokedAt","syncRequestedAt","createdAt"],"additionalProperties":false}},"totalChunks":{"type":"number"},"totalFiles":{"type":"number"}},"required":["indexes","totalChunks","totalFiles"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/codebase":{"delete":{"tags":["codebase"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"repoConnectionId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"purgedIndexes":{"type":"number"},"purgedChunks":{"type":"number"}},"required":["purgedIndexes","purgedChunks"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/code-context":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":32000},"in":"query","name":"tokenBudget","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"maxChunks","required":false},{"schema":{"type":"number","minimum":-1,"maximum":1},"in":"query","name":"minSimilarity","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"chunks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"},"language":{"type":"string"},"symbol":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startLine":{"type":"number"},"endLine":{"type":"number"},"content":{"type":"string"},"estimatedTokens":{"type":"number"},"similarity":{"type":"number"},"score":{"type":"number"},"matchedFrame":{"anyOf":[{"type":"object","properties":{"file":{"type":"string"},"repoPath":{"type":"string"},"depth":{"type":"number"}},"required":["file","repoPath","depth"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","path","language","symbol","startLine","endLine","content","estimatedTokens","similarity","score","matchedFrame"],"additionalProperties":false}},"estimatedTokens":{"type":"number"},"tokenBudget":{"type":"number"},"truncated":{"type":"boolean"},"embeddingModel":{"type":"string"},"query":{"type":"object","properties":{"text":{"type":"string"},"frames":{"type":"array","items":{"type":"object","properties":{"file":{"type":"string"},"repoPath":{"type":"string"},"depth":{"type":"number"}},"required":["file","repoPath","depth"],"additionalProperties":false}}},"required":["text","frames"],"additionalProperties":false}},"required":["chunks","estimatedTokens","tokenBudget","truncated","embeddingModel","query"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/remediation-memory":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":20},"in":"query","name":"limit","required":false},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"minSimilarity","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"string"},"embeddingModel":{"type":"string"},"threshold":{"type":"number"},"neighbours":{"type":"array","items":{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"},"exceptionType":{"type":"string"},"status":{"type":"string"},"similarity":{"type":"number"},"lastSeen":{"type":"string"},"fixes":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["pull_request","release"]},"reference":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","reference","url","at"],"additionalProperties":false}},"summary":{"type":"string"}},"required":["issueId","shortId","title","exceptionType","status","similarity","lastSeen","fixes","summary"],"additionalProperties":false}}},"required":["issueId","embeddingModel","threshold","neighbours"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issue-embeddings/backfill":{"post":{"tags":["issue-embeddings"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"force":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":5000}}},{"nullable":true,"enum":[null]}]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"embedded":{"type":"number"},"model":{"type":"string"}},"required":["embedded","model"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/grouping-suggestions/generate":{"post":{"tags":["grouping-suggestions"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"threshold":{"type":"number","minimum":0.01,"maximum":1},"neighboursPerIssue":{"type":"integer","minimum":1,"maximum":10}}},{"nullable":true,"enum":[null]}]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"created":{"type":"number"},"skipped":{"type":"number"},"threshold":{"type":"number"},"embeddingModel":{"type":"string"},"merged":{"type":"boolean","enum":[false]}},"required":["created","skipped","threshold","embeddingModel","merged"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/grouping-suggestions":{"get":{"tags":["grouping-suggestions"],"parameters":[{"schema":{"type":"string","enum":["pending","confirmed","rejected","all"]},"in":"query","name":"status","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"similarity":{"type":"number"},"humanVerdict":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"}},"required":["issueId","shortId","title"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"candidate":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"}},"required":["issueId","shortId","title"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","similarity","humanVerdict","decidedAt","decidedByPrincipalId","embeddingModel","createdAt","source","candidate"],"additionalProperties":false}},"shadowMode":{"type":"boolean","enum":[true]},"autoMergeEnabled":{"type":"boolean","enum":[false]}},"required":["data","shadowMode","autoMergeEnabled"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/grouping-suggestions/{id}/confirm":{"post":{"tags":["grouping-suggestions"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"suggestion":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"similarity":{"type":"number"},"humanVerdict":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"}},"required":["issueId","shortId","title"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"candidate":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"}},"required":["issueId","shortId","title"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","similarity","humanVerdict","decidedAt","decidedByPrincipalId","embeddingModel","createdAt","source","candidate"],"additionalProperties":false},"merged":{"type":"boolean","enum":[false]}},"required":["suggestion","merged"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/grouping-suggestions/{id}/reject":{"post":{"tags":["grouping-suggestions"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"suggestion":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"similarity":{"type":"number"},"humanVerdict":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"}},"required":["issueId","shortId","title"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"candidate":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"}},"required":["issueId","shortId","title"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","similarity","humanVerdict","decidedAt","decidedByPrincipalId","embeddingModel","createdAt","source","candidate"],"additionalProperties":false},"merged":{"type":"boolean","enum":[false]}},"required":["suggestion","merged"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/grouping-precision":{"get":{"tags":["grouping-precision"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"embeddingModel","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"pending":{"type":"number"},"confirmed":{"type":"number"},"rejected":{"type":"number"},"decided":{"type":"number"},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"bands":{"type":"array","items":{"type":"object","properties":{"from":{"type":"number"},"to":{"type":"number"},"confirmed":{"type":"number"},"rejected":{"type":"number"},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["from","to","confirmed","rejected","precision"],"additionalProperties":false}},"autoMergeEnabled":{"type":"boolean"},"autoMerge":{"type":"object","properties":{"precisionBar":{"type":"number"},"minDecisions":{"type":"number"},"implemented":{"type":"boolean","enum":[true]},"similarityThreshold":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"blockedBecause":{"type":"array","items":{"type":"string"}},"enableWith":{"type":"string"}},"required":["precisionBar","minDecisions","implemented","similarityThreshold","blockedBecause","enableWith"],"additionalProperties":false}},"required":["projectId","embeddingModel","pending","confirmed","rejected","decided","precision","bands","autoMergeEnabled","autoMerge"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/alert-rules":{"post":{"tags":["alert-rules"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"enabled":{"default":true,"type":"boolean"},"type":{"type":"string","enum":["issue","metric"]},"conditionMatch":{"default":"all","type":"string","enum":["all","any"]},"conditions":{"maxItems":20,"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["first_seen"]}},"required":["id"]},{"type":"object","properties":{"id":{"type":"string","enum":["regression"]}},"required":["id"]},{"type":"object","properties":{"id":{"type":"string","enum":["event_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes"]},{"type":"object","properties":{"id":{"type":"string","enum":["user_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes"]},{"type":"object","properties":{"id":{"type":"string","enum":["issue_level"]},"level":{"type":"string","enum":["debug","info","warning","error","fatal"]},"match":{"default":"gte","type":"string","enum":["eq","gte"]}},"required":["id","level"]},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["issue_lifecycle"]},"transitions":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["resolved","unresolved","archived","unarchived","assigned","unassigned"]}}},"required":["id","transitions"]}]},{"type":"object","properties":{"id":{"type":"string","enum":["metric"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"type":"string","enum":["gt","gte","lt","lte","eq"]},"threshold":{"type":"number"}},"required":["id","aggregate","windowMinutes","comparator","threshold"]},{"type":"object","properties":{"id":{"type":"string","enum":["anomaly"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"sensitivity":{"default":4,"type":"number","minimum":1,"maximum":20},"direction":{"default":"above","type":"string","enum":["above","below","both"]},"minValue":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"environment":{"type":"string","minLength":1,"maxLength":200}},"required":["id","aggregate"]}]}},"filters":{"default":[],"maxItems":20,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["level"]},"comparator":{"default":"gte","type":"string","enum":["eq","gte"]},"value":{"type":"string","enum":["debug","info","warning","error","fatal"]}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["release"]},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["tag"]},"key":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","key","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["issue_age"]},"comparator":{"type":"string","enum":["older_than","newer_than"]},"minutes":{"type":"integer","minimum":1,"maximum":525600}},"required":["id","comparator","minutes"]}]}},"actions":{"minItems":1,"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["notify_channel"]},"channelId":{"type":"string","minLength":1}},"required":["kind","channelId"]},{"type":"object","properties":{"kind":{"type":"string","enum":["agent_investigate"]},"objective":{"type":"string","minLength":1,"maxLength":500},"maxTier":{"type":"string","minLength":1,"maxLength":60}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["notify_owner"]},"fallbackChannelId":{"type":"string","minLength":1},"subject":{"default":"ALERTS","type":"string","enum":["ALERTS","APPROVALS","INCIDENTS","REMEDIATION","DIGESTS"]}},"required":["kind","fallbackChannelId"]}]}},"frequencyMinutes":{"default":30,"type":"integer","minimum":0,"maximum":10080}},"required":["name","type","conditions","actions"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"type":{"type":"string","enum":["issue","metric"]},"conditionMatch":{"type":"string","enum":["all","any"]},"conditions":{"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["first_seen"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["regression"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["event_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["user_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_level"]},"level":{"type":"string","enum":["debug","info","warning","error","fatal"]},"match":{"default":"gte","type":"string","enum":["eq","gte"]}},"required":["id","level","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_lifecycle"]},"transitions":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["resolved","unresolved","archived","unarchived","assigned","unassigned"]}}},"required":["id","transitions"],"additionalProperties":false}]},{"type":"object","properties":{"id":{"type":"string","enum":["metric"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"type":"string","enum":["gt","gte","lt","lte","eq"]},"threshold":{"type":"number"}},"required":["id","aggregate","windowMinutes","comparator","threshold"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["anomaly"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"sensitivity":{"default":4,"type":"number","minimum":1,"maximum":20},"direction":{"default":"above","type":"string","enum":["above","below","both"]},"minValue":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"environment":{"type":"string","minLength":1,"maxLength":200}},"required":["id","aggregate","sensitivity","direction","minValue"],"additionalProperties":false}]}},"filters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["level"]},"comparator":{"default":"gte","type":"string","enum":["eq","gte"]},"value":{"type":"string","enum":["debug","info","warning","error","fatal"]}},"required":["id","comparator","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["release"]},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["tag"]},"key":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","key","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_age"]},"comparator":{"type":"string","enum":["older_than","newer_than"]},"minutes":{"type":"integer","minimum":1,"maximum":525600}},"required":["id","comparator","minutes"],"additionalProperties":false}]}},"actions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["notify_channel"]},"channelId":{"type":"string","minLength":1}},"required":["kind","channelId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["agent_investigate"]},"objective":{"type":"string","minLength":1,"maxLength":500},"maxTier":{"type":"string","minLength":1,"maxLength":60}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["notify_owner"]},"fallbackChannelId":{"type":"string","minLength":1},"subject":{"default":"ALERTS","type":"string","enum":["ALERTS","APPROVALS","INCIDENTS","REMEDIATION","DIGESTS"]}},"required":["kind","fallbackChannelId","subject"],"additionalProperties":false}]}},"frequencyMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","name","enabled","type","conditionMatch","conditions","filters","actions","frequencyMinutes","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["alert-rules"],"parameters":[{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"type":{"type":"string","enum":["issue","metric"]},"conditionMatch":{"type":"string","enum":["all","any"]},"conditions":{"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["first_seen"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["regression"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["event_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["user_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_level"]},"level":{"type":"string","enum":["debug","info","warning","error","fatal"]},"match":{"default":"gte","type":"string","enum":["eq","gte"]}},"required":["id","level","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_lifecycle"]},"transitions":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["resolved","unresolved","archived","unarchived","assigned","unassigned"]}}},"required":["id","transitions"],"additionalProperties":false}]},{"type":"object","properties":{"id":{"type":"string","enum":["metric"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"type":"string","enum":["gt","gte","lt","lte","eq"]},"threshold":{"type":"number"}},"required":["id","aggregate","windowMinutes","comparator","threshold"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["anomaly"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"sensitivity":{"default":4,"type":"number","minimum":1,"maximum":20},"direction":{"default":"above","type":"string","enum":["above","below","both"]},"minValue":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"environment":{"type":"string","minLength":1,"maxLength":200}},"required":["id","aggregate","sensitivity","direction","minValue"],"additionalProperties":false}]}},"filters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["level"]},"comparator":{"default":"gte","type":"string","enum":["eq","gte"]},"value":{"type":"string","enum":["debug","info","warning","error","fatal"]}},"required":["id","comparator","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["release"]},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["tag"]},"key":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","key","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_age"]},"comparator":{"type":"string","enum":["older_than","newer_than"]},"minutes":{"type":"integer","minimum":1,"maximum":525600}},"required":["id","comparator","minutes"],"additionalProperties":false}]}},"actions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["notify_channel"]},"channelId":{"type":"string","minLength":1}},"required":["kind","channelId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["agent_investigate"]},"objective":{"type":"string","minLength":1,"maxLength":500},"maxTier":{"type":"string","minLength":1,"maxLength":60}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["notify_owner"]},"fallbackChannelId":{"type":"string","minLength":1},"subject":{"default":"ALERTS","type":"string","enum":["ALERTS","APPROVALS","INCIDENTS","REMEDIATION","DIGESTS"]}},"required":["kind","fallbackChannelId","subject"],"additionalProperties":false}]}},"frequencyMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","name","enabled","type","conditionMatch","conditions","filters","actions","frequencyMinutes","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/alert-rules/{ruleId}":{"get":{"tags":["alert-rules"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"ruleId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"type":{"type":"string","enum":["issue","metric"]},"conditionMatch":{"type":"string","enum":["all","any"]},"conditions":{"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["first_seen"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["regression"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["event_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["user_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_level"]},"level":{"type":"string","enum":["debug","info","warning","error","fatal"]},"match":{"default":"gte","type":"string","enum":["eq","gte"]}},"required":["id","level","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_lifecycle"]},"transitions":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["resolved","unresolved","archived","unarchived","assigned","unassigned"]}}},"required":["id","transitions"],"additionalProperties":false}]},{"type":"object","properties":{"id":{"type":"string","enum":["metric"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"type":"string","enum":["gt","gte","lt","lte","eq"]},"threshold":{"type":"number"}},"required":["id","aggregate","windowMinutes","comparator","threshold"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["anomaly"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"sensitivity":{"default":4,"type":"number","minimum":1,"maximum":20},"direction":{"default":"above","type":"string","enum":["above","below","both"]},"minValue":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"environment":{"type":"string","minLength":1,"maxLength":200}},"required":["id","aggregate","sensitivity","direction","minValue"],"additionalProperties":false}]}},"filters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["level"]},"comparator":{"default":"gte","type":"string","enum":["eq","gte"]},"value":{"type":"string","enum":["debug","info","warning","error","fatal"]}},"required":["id","comparator","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["release"]},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["tag"]},"key":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","key","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_age"]},"comparator":{"type":"string","enum":["older_than","newer_than"]},"minutes":{"type":"integer","minimum":1,"maximum":525600}},"required":["id","comparator","minutes"],"additionalProperties":false}]}},"actions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["notify_channel"]},"channelId":{"type":"string","minLength":1}},"required":["kind","channelId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["agent_investigate"]},"objective":{"type":"string","minLength":1,"maxLength":500},"maxTier":{"type":"string","minLength":1,"maxLength":60}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["notify_owner"]},"fallbackChannelId":{"type":"string","minLength":1},"subject":{"default":"ALERTS","type":"string","enum":["ALERTS","APPROVALS","INCIDENTS","REMEDIATION","DIGESTS"]}},"required":["kind","fallbackChannelId","subject"],"additionalProperties":false}]}},"frequencyMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","name","enabled","type","conditionMatch","conditions","filters","actions","frequencyMinutes","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["alert-rules"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"enabled":{"type":"boolean"},"type":{"type":"string","enum":["issue","metric"]},"conditionMatch":{"type":"string","enum":["all","any"]},"conditions":{"maxItems":20,"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["first_seen"]}},"required":["id"]},{"type":"object","properties":{"id":{"type":"string","enum":["regression"]}},"required":["id"]},{"type":"object","properties":{"id":{"type":"string","enum":["event_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes"]},{"type":"object","properties":{"id":{"type":"string","enum":["user_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes"]},{"type":"object","properties":{"id":{"type":"string","enum":["issue_level"]},"level":{"type":"string","enum":["debug","info","warning","error","fatal"]},"match":{"default":"gte","type":"string","enum":["eq","gte"]}},"required":["id","level"]},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["issue_lifecycle"]},"transitions":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["resolved","unresolved","archived","unarchived","assigned","unassigned"]}}},"required":["id","transitions"]}]},{"type":"object","properties":{"id":{"type":"string","enum":["metric"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"type":"string","enum":["gt","gte","lt","lte","eq"]},"threshold":{"type":"number"}},"required":["id","aggregate","windowMinutes","comparator","threshold"]},{"type":"object","properties":{"id":{"type":"string","enum":["anomaly"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"sensitivity":{"default":4,"type":"number","minimum":1,"maximum":20},"direction":{"default":"above","type":"string","enum":["above","below","both"]},"minValue":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"environment":{"type":"string","minLength":1,"maxLength":200}},"required":["id","aggregate"]}]}},"filters":{"maxItems":20,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["level"]},"comparator":{"default":"gte","type":"string","enum":["eq","gte"]},"value":{"type":"string","enum":["debug","info","warning","error","fatal"]}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["release"]},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["tag"]},"key":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","key","value"]},{"type":"object","properties":{"id":{"type":"string","enum":["issue_age"]},"comparator":{"type":"string","enum":["older_than","newer_than"]},"minutes":{"type":"integer","minimum":1,"maximum":525600}},"required":["id","comparator","minutes"]}]}},"actions":{"minItems":1,"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["notify_channel"]},"channelId":{"type":"string","minLength":1}},"required":["kind","channelId"]},{"type":"object","properties":{"kind":{"type":"string","enum":["agent_investigate"]},"objective":{"type":"string","minLength":1,"maxLength":500},"maxTier":{"type":"string","minLength":1,"maxLength":60}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["notify_owner"]},"fallbackChannelId":{"type":"string","minLength":1},"subject":{"default":"ALERTS","type":"string","enum":["ALERTS","APPROVALS","INCIDENTS","REMEDIATION","DIGESTS"]}},"required":["kind","fallbackChannelId"]}]}},"frequencyMinutes":{"type":"integer","minimum":0,"maximum":10080}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"ruleId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"type":{"type":"string","enum":["issue","metric"]},"conditionMatch":{"type":"string","enum":["all","any"]},"conditions":{"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["first_seen"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["regression"]}},"required":["id"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["event_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["user_count"]},"value":{"type":"integer","minimum":1,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"default":"gte","type":"string","enum":["gt","gte","lt","lte","eq"]}},"required":["id","value","windowMinutes","comparator"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_level"]},"level":{"type":"string","enum":["debug","info","warning","error","fatal"]},"match":{"default":"gte","type":"string","enum":["eq","gte"]}},"required":["id","level","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_lifecycle"]},"transitions":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["resolved","unresolved","archived","unarchived","assigned","unassigned"]}}},"required":["id","transitions"],"additionalProperties":false}]},{"type":"object","properties":{"id":{"type":"string","enum":["metric"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"windowMinutes":{"type":"integer","minimum":1,"maximum":10080},"comparator":{"type":"string","enum":["gt","gte","lt","lte","eq"]},"threshold":{"type":"number"}},"required":["id","aggregate","windowMinutes","comparator","threshold"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["anomaly"]},"aggregate":{"type":"string","enum":["event_count","user_count","issue_count"]},"sensitivity":{"default":4,"type":"number","minimum":1,"maximum":20},"direction":{"default":"above","type":"string","enum":["above","below","both"]},"minValue":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"environment":{"type":"string","minLength":1,"maxLength":200}},"required":["id","aggregate","sensitivity","direction","minValue"],"additionalProperties":false}]}},"filters":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["level"]},"comparator":{"default":"gte","type":"string","enum":["eq","gte"]},"value":{"type":"string","enum":["debug","info","warning","error","fatal"]}},"required":["id","comparator","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["environment"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["id","value"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["release"]},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["tag"]},"key":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":200},"match":{"default":"equals","type":"string","enum":["equals","contains"]}},"required":["id","key","value","match"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["issue_age"]},"comparator":{"type":"string","enum":["older_than","newer_than"]},"minutes":{"type":"integer","minimum":1,"maximum":525600}},"required":["id","comparator","minutes"],"additionalProperties":false}]}},"actions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["notify_channel"]},"channelId":{"type":"string","minLength":1}},"required":["kind","channelId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["agent_investigate"]},"objective":{"type":"string","minLength":1,"maxLength":500},"maxTier":{"type":"string","minLength":1,"maxLength":60}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["notify_owner"]},"fallbackChannelId":{"type":"string","minLength":1},"subject":{"default":"ALERTS","type":"string","enum":["ALERTS","APPROVALS","INCIDENTS","REMEDIATION","DIGESTS"]}},"required":["kind","fallbackChannelId","subject"],"additionalProperties":false}]}},"frequencyMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","name","enabled","type","conditionMatch","conditions","filters","actions","frequencyMinutes","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["alert-rules"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"ruleId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/notification-channels":{"post":{"tags":["notification-channels"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","minLength":1,"maxLength":40},"config":{},"enabled":{"default":true,"type":"boolean"},"scope":{"default":"project","type":"string","enum":["project","org"]}},"required":["name","kind","config"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"kind":{"type":"string"},"enabled":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","name","kind","enabled","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["notification-channels"],"parameters":[{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"kind":{"type":"string"},"enabled":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","name","kind","enabled","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/notification-channels/{channelId}/test":{"post":{"tags":["notification-channels"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"channelId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"channelId":{"type":"string"},"kind":{"type":"string"},"ok":{"type":"boolean"},"deliveryId":{"type":"string"},"attemptedAt":{"type":"string"},"detail":{"type":"string"},"failure":{"anyOf":[{"type":"object","properties":{"permanent":{"type":"boolean"},"retryAfterSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["permanent","retryAfterSeconds"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["channelId","kind","ok","deliveryId","attemptedAt","detail","failure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/notification-channels/{channelId}":{"delete":{"tags":["notification-channels"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"channelId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/alert-events":{"get":{"tags":["alert-events"],"parameters":[{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":20},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ruleId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"channelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actionKind":{"type":"string"},"status":{"type":"string"},"reason":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAttempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextAttemptAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sendAfter":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","ruleId","issueId","channelId","actionKind","status","reason","attempts","maxAttempts","lastError","nextAttemptAt","sendAfter","deliveredAt","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/alert-events/{alertEventId}/replay":{"post":{"tags":["alert-events"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"alertEventId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"originalId":{"type":"string"},"event":{"type":"object","properties":{"id":{"type":"string"},"ruleId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"channelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actionKind":{"type":"string"},"status":{"type":"string"},"reason":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAttempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextAttemptAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sendAfter":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","ruleId","issueId","channelId","actionKind","status","reason","attempts","maxAttempts","lastError","nextAttemptAt","sendAfter","deliveredAt","createdAt"],"additionalProperties":false}},"required":["originalId","event"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/rca":{"post":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"verdict":{"type":"string","enum":["ROOT_CAUSE_IDENTIFIED","LIKELY_CAUSE","INCONCLUSIVE"]},"confidence":{"type":"number"},"provider":{"type":"string"},"model":{"type":"string"},"usage":{"type":"object","properties":{"promptTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"completionTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"costMicroCents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["promptTokens","completionTokens","totalTokens","costMicroCents"],"additionalProperties":false},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"summary":{"type":"string"},"summaryTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"hypotheses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"rank":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"statement":{"type":"string"},"category":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"confidence":{"type":"number"},"score":{"type":"number"},"evidenceIds":{"type":"array","items":{"type":"string"}},"entities":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["file","function","service","release","commit","endpoint"]},"value":{"type":"string"},"claimed":{"type":"string"},"source":{"type":"string","enum":["stack-frame","code-mapping","commit-file","commit","release","change-event","event-transaction","event-server","project","environment"]},"sourceRef":{"type":"string"},"claimedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","value","claimed","source","sourceRef","claimedBy"],"additionalProperties":false}},"checks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["timeline","frame-intersection","release-match","evidence-present"]},"outcome":{"type":"string","enum":["pass","fail","not-applicable"]},"detail":{"type":"string"}},"required":["name","outcome","detail"],"additionalProperties":false}},"generator":{"type":"string"}},"required":["id","rank","statement","category","confidence","score","evidenceIds","entities","checks","generator"],"additionalProperties":false}},"eliminated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"statement":{"type":"string"},"category":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"failedCheck":{"type":"string","enum":["timeline","frame-intersection","release-match","evidence-present"]},"reason":{"type":"string"}},"required":["id","statement","category","failedCheck","reason"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["counter","exception","stack-frame","source-context","change-event","suspect-commit","similar-issue","release","divergence"]},"summary":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"detail":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"observedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ref":{"type":"object","properties":{"type":{"type":"string","enum":["issue","event","commit","change-event","release","frame","divergence"]},"id":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"path":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"line":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["id","kind","summary","detail","observedAt","ref","weight"],"additionalProperties":false}},"validatedEntities":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["file","function","service","release","commit","endpoint"]},"value":{"type":"string"},"claimed":{"type":"string"},"source":{"type":"string","enum":["stack-frame","code-mapping","commit-file","commit","release","change-event","event-transaction","event-server","project","environment"]},"sourceRef":{"type":"string"},"claimedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","value","claimed","source","sourceRef","claimedBy"],"additionalProperties":false}},"droppedEntities":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["file","function","service","release","commit","endpoint"]},"value":{"type":"string"},"reason":{"type":"string","enum":["empty","unknown-file","unknown-function","unknown-service","unknown-release","unknown-commit","unknown-endpoint","ambiguous-match"]},"detail":{"type":"string"},"claimedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","value","reason","detail","claimedBy"],"additionalProperties":false}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"degraded":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","issueId","verdict","confidence","provider","model","usage","durationMs","summary","summaryTokens","hypotheses","eliminated","evidence","validatedEntities","droppedEntities","securityNotice","degraded","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"verdict":{"type":"string","enum":["ROOT_CAUSE_IDENTIFIED","LIKELY_CAUSE","INCONCLUSIVE"]},"confidence":{"type":"number"},"provider":{"type":"string"},"model":{"type":"string"},"usage":{"type":"object","properties":{"promptTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"completionTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"costMicroCents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["promptTokens","completionTokens","totalTokens","costMicroCents"],"additionalProperties":false},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"summary":{"type":"string"},"summaryTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"hypotheses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"rank":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"statement":{"type":"string"},"category":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"confidence":{"type":"number"},"score":{"type":"number"},"evidenceIds":{"type":"array","items":{"type":"string"}},"entities":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["file","function","service","release","commit","endpoint"]},"value":{"type":"string"},"claimed":{"type":"string"},"source":{"type":"string","enum":["stack-frame","code-mapping","commit-file","commit","release","change-event","event-transaction","event-server","project","environment"]},"sourceRef":{"type":"string"},"claimedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","value","claimed","source","sourceRef","claimedBy"],"additionalProperties":false}},"checks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["timeline","frame-intersection","release-match","evidence-present"]},"outcome":{"type":"string","enum":["pass","fail","not-applicable"]},"detail":{"type":"string"}},"required":["name","outcome","detail"],"additionalProperties":false}},"generator":{"type":"string"}},"required":["id","rank","statement","category","confidence","score","evidenceIds","entities","checks","generator"],"additionalProperties":false}},"eliminated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"statement":{"type":"string"},"category":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"failedCheck":{"type":"string","enum":["timeline","frame-intersection","release-match","evidence-present"]},"reason":{"type":"string"}},"required":["id","statement","category","failedCheck","reason"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["counter","exception","stack-frame","source-context","change-event","suspect-commit","similar-issue","release","divergence"]},"summary":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"detail":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"observedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ref":{"type":"object","properties":{"type":{"type":"string","enum":["issue","event","commit","change-event","release","frame","divergence"]},"id":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"path":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"line":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["id","kind","summary","detail","observedAt","ref","weight"],"additionalProperties":false}},"validatedEntities":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["file","function","service","release","commit","endpoint"]},"value":{"type":"string"},"claimed":{"type":"string"},"source":{"type":"string","enum":["stack-frame","code-mapping","commit-file","commit","release","change-event","event-transaction","event-server","project","environment"]},"sourceRef":{"type":"string"},"claimedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","value","claimed","source","sourceRef","claimedBy"],"additionalProperties":false}},"droppedEntities":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["file","function","service","release","commit","endpoint"]},"value":{"type":"string"},"reason":{"type":"string","enum":["empty","unknown-file","unknown-function","unknown-service","unknown-release","unknown-commit","unknown-endpoint","ambiguous-match"]},"detail":{"type":"string"},"claimedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","value","reason","detail","claimedBy"],"additionalProperties":false}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"degraded":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","issueId","verdict","confidence","provider","model","usage","durationMs","summary","summaryTokens","hypotheses","eliminated","evidence","validatedEntities","droppedEntities","securityNotice","degraded","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approval-policies":{"post":{"tags":["approval-policies"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(risk:(SAFE|ELEVATED|SENSITIVE|CRITICAL)|[a-z][a-z0-9]*(\\.[a-z0-9_]+)+)$"},"riskClass":{"type":"string","enum":["SAFE","ELEVATED","SENSITIVE","CRITICAL","*"]},"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"projectTag":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"nullable":true,"enum":[null]}]},"minApprovers":{"type":"integer","minimum":1,"maximum":10}},"required":["action","riskClass","decision"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"action":{"type":"string"},"riskClass":{"type":"string"},"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"projectTag":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","action","riskClass","decision","projectTag","minApprovers","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["approval-policies"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"action":{"type":"string"},"riskClass":{"type":"string"},"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"projectTag":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","action","riskClass","decision","projectTag","minApprovers","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approval-policies/{policyId}":{"patch":{"tags":["approval-policies"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(risk:(SAFE|ELEVATED|SENSITIVE|CRITICAL)|[a-z][a-z0-9]*(\\.[a-z0-9_]+)+)$"},"riskClass":{"type":"string","enum":["SAFE","ELEVATED","SENSITIVE","CRITICAL","*"]},"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"projectTag":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"nullable":true,"enum":[null]}]},"minApprovers":{"type":"integer","minimum":1,"maximum":10}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"policyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"action":{"type":"string"},"riskClass":{"type":"string"},"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"projectTag":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","action","riskClass","decision","projectTag","minApprovers","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["approval-policies"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"policyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approval-requests":{"post":{"tags":["approval-requests"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","minLength":1,"maxLength":100},"targetType":{"type":"string","minLength":1,"maxLength":60},"targetId":{"type":"string","minLength":1,"maxLength":200},"projectTag":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"nullable":true,"enum":[null]}]},"summary":{"anyOf":[{"type":"string","maxLength":2000},{"nullable":true,"enum":[null]}]},"ttlMinutes":{"type":"integer","minimum":1,"maximum":10080},"channelIds":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1}},"notify":{"type":"boolean"}},"required":["action","targetType","targetId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"riskClass":{"type":"string"},"reason":{"type":"string"},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policySource":{"type":"string"},"request":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"riskClass":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"payload":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","requesterPrincipalId","onBehalfOfPrincipalId","action","riskClass","targetType","targetId","status","minApprovers","policyId","deciderPrincipalId","decidedAt","reason","expiresAt","createdAt","payload"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"deliveries":{"type":"array","items":{"type":"object","properties":{"channelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"kind":{"type":"string"},"delivered":{"type":"boolean"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["channelId","kind","delivered","error"],"additionalProperties":false}}},"required":["decision","riskClass","reason","minApprovers","policySource","request","deliveries"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"riskClass":{"type":"string"},"reason":{"type":"string"},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policySource":{"type":"string"},"request":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"riskClass":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"payload":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","requesterPrincipalId","onBehalfOfPrincipalId","action","riskClass","targetType","targetId","status","minApprovers","policyId","deciderPrincipalId","decidedAt","reason","expiresAt","createdAt","payload"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"deliveries":{"type":"array","items":{"type":"object","properties":{"channelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"kind":{"type":"string"},"delivered":{"type":"boolean"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["channelId","kind","delivered","error"],"additionalProperties":false}}},"required":["decision","riskClass","reason","minApprovers","policySource","request","deliveries"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["approval-requests"],"parameters":[{"schema":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"in":"query","name":"status","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"riskClass":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"payload":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","requesterPrincipalId","onBehalfOfPrincipalId","action","riskClass","targetType","targetId","status","minApprovers","policyId","deciderPrincipalId","decidedAt","reason","expiresAt","createdAt","payload"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approvals/pending-count":{"get":{"tags":["approvals"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestPendingAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["pending","oldestPendingAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approval-requests/{requestId}":{"get":{"tags":["approval-requests"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"requestId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"riskClass":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"payload":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","requesterPrincipalId","onBehalfOfPrincipalId","action","riskClass","targetType","targetId","status","minApprovers","policyId","deciderPrincipalId","decidedAt","reason","expiresAt","createdAt","payload"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approval-requests/{requestId}/approve":{"post":{"tags":["approval-requests"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"reason":{"type":"string","maxLength":500}}},{"nullable":true,"enum":[null]}]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"requestId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"riskClass":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"payload":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","requesterPrincipalId","onBehalfOfPrincipalId","action","riskClass","targetType","targetId","status","minApprovers","policyId","deciderPrincipalId","decidedAt","reason","expiresAt","createdAt","payload"],"additionalProperties":false},"approvals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasIndependentApprover":{"type":"boolean"},"idempotent":{"type":"boolean"}},"required":["request","approvals","remaining","hasIndependentApprover","idempotent"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/approval-requests/{requestId}/reject":{"post":{"tags":["approval-requests"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"requestId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"riskClass":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","EXPIRED"]},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"payload":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","requesterPrincipalId","onBehalfOfPrincipalId","action","riskClass","targetType","targetId","status","minApprovers","policyId","deciderPrincipalId","decidedAt","reason","expiresAt","createdAt","payload"],"additionalProperties":false},"approvals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasIndependentApprover":{"type":"boolean"},"idempotent":{"type":"boolean"}},"required":["request","approvals","remaining","hasIndependentApprover","idempotent"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/suite-config":{"get":{"tags":["suite-config"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"installCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"testCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"affectedTestsCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reproCommandTemplate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"image":{"type":"string","minLength":1},"ports":{"type":"array","items":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0}},"env":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","image"],"additionalProperties":false}},"envManifest":{"type":"object","additionalProperties":{"type":"string"}},"workdir":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suiteTimeoutMs":{"type":"number"},"updatedAt":{"type":"string"}},"required":["id","projectId","installCommand","testCommand","affectedTestsCommand","reproCommandTemplate","services","envManifest","workdir","suiteTimeoutMs","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["suite-config"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installCommand":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"nullable":true,"enum":[null]}]},"testCommand":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"nullable":true,"enum":[null]}]},"affectedTestsCommand":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"nullable":true,"enum":[null]}]},"reproCommandTemplate":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"nullable":true,"enum":[null]}]},"services":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"image":{"type":"string","minLength":1},"ports":{"type":"array","items":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0}},"env":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","image"]}},"envManifest":{"type":"object","additionalProperties":{"type":"string","maxLength":4096}},"workdir":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]},"suiteTimeoutMs":{"type":"integer","exclusiveMinimum":true,"maximum":3600000,"minimum":0}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"installCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"testCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"affectedTestsCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reproCommandTemplate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"image":{"type":"string","minLength":1},"ports":{"type":"array","items":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0}},"env":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","image"],"additionalProperties":false}},"envManifest":{"type":"object","additionalProperties":{"type":"string"}},"workdir":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suiteTimeoutMs":{"type":"number"},"updatedAt":{"type":"string"}},"required":["id","projectId","installCommand","testCommand","affectedTestsCommand","reproCommandTemplate","services","envManifest","workdir","suiteTimeoutMs","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["suite-config"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/remediation":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"agentId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"maxAttempts":{"type":"integer","minimum":1,"maximum":10},"approvedRequestId":{"type":"string","minLength":1}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"run":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string","enum":["QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"provider":{"type":"string"},"agentPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"endedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"costCents":{"type":"number"},"tokensUsed":{"type":"number"},"sandboxSeconds":{"type":"number"},"failedStage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logs":{"type":"array","items":{}},"createdAt":{"type":"string"}},"required":["id","issueId","projectId","status","verificationTier","provider","agentPrincipalId","requestedByPrincipalId","startedAt","endedAt","costCents","tokensUsed","sandboxSeconds","failedStage","failureReason","logs","createdAt"],"additionalProperties":false},"decision":{"type":"string","enum":["ALLOW","ASK","DENY"]},"trustLadder":{"anyOf":[{"type":"object","properties":{"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"}},"required":["category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["run","decision","trustLadder"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string","enum":["QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"provider":{"type":"string"},"agentPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"endedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"costCents":{"type":"number"},"tokensUsed":{"type":"number"},"sandboxSeconds":{"type":"number"},"failedStage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logs":{"type":"array","items":{}},"createdAt":{"type":"string"}},"required":["id","issueId","projectId","status","verificationTier","provider","agentPrincipalId","requestedByPrincipalId","startedAt","endedAt","costCents","tokensUsed","sandboxSeconds","failedStage","failureReason","logs","createdAt"],"additionalProperties":false}},"proposals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"diff":{"type":"string"},"filesChanged":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["DRAFT","AWAITING_APPROVAL","READY_UNPUSHED","PR_OPEN","APPROVED","REJECTED","MERGED","SUPERSEDED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"billable":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prNumber":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pushError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"watchUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recurrenceDetectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificateId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","runId","issueId","title","summary","diff","filesChanged","status","verificationTier","billable","branch","prUrl","prNumber","pushError","approvalRequestId","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","rejectionReason","supersededAt","supersededReason","mergedAt","watchUntil","recurrenceDetectedAt","certificateId","createdAt"],"additionalProperties":false}}},"required":["runs","proposals"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/proposals/{id}":{"get":{"tags":["proposals"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"diff":{"type":"string"},"filesChanged":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["DRAFT","AWAITING_APPROVAL","READY_UNPUSHED","PR_OPEN","APPROVED","REJECTED","MERGED","SUPERSEDED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"billable":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prNumber":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pushError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"watchUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recurrenceDetectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificateId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","runId","issueId","title","summary","diff","filesChanged","status","verificationTier","billable","branch","prUrl","prNumber","pushError","approvalRequestId","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","rejectionReason","supersededAt","supersededReason","mergedAt","watchUntil","recurrenceDetectedAt","certificateId","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/proposals/{id}/approve":{"post":{"tags":["proposals"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":2000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"diff":{"type":"string"},"filesChanged":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["DRAFT","AWAITING_APPROVAL","READY_UNPUSHED","PR_OPEN","APPROVED","REJECTED","MERGED","SUPERSEDED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"billable":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prNumber":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pushError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"watchUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recurrenceDetectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificateId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","runId","issueId","title","summary","diff","filesChanged","status","verificationTier","billable","branch","prUrl","prNumber","pushError","approvalRequestId","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","rejectionReason","supersededAt","supersededReason","mergedAt","watchUntil","recurrenceDetectedAt","certificateId","createdAt"],"additionalProperties":false},"approval":{"type":"object","properties":{"status":{"type":"string"},"approvals":{"type":"number"},"remaining":{"type":"number"}},"required":["status","approvals","remaining"],"additionalProperties":false},"pullRequest":{"anyOf":[{"type":"object","properties":{"number":{"type":"number"},"url":{"type":"string"},"branch":{"type":"string"},"sha":{"type":"string"}},"required":["number","url","branch","sha"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"pushError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trustLadder":{"anyOf":[{"type":"object","properties":{"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"}},"required":["category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["proposal","approval","pullRequest","pushError","trustLadder"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/proposals/{id}/reject":{"post":{"tags":["proposals"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":2000}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"diff":{"type":"string"},"filesChanged":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["DRAFT","AWAITING_APPROVAL","READY_UNPUSHED","PR_OPEN","APPROVED","REJECTED","MERGED","SUPERSEDED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"billable":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prNumber":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pushError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"watchUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recurrenceDetectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificateId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","runId","issueId","title","summary","diff","filesChanged","status","verificationTier","billable","branch","prUrl","prNumber","pushError","approvalRequestId","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","rejectionReason","supersededAt","supersededReason","mergedAt","watchUntil","recurrenceDetectedAt","certificateId","createdAt"],"additionalProperties":false},"constraints":{"type":"array","items":{"type":"string"}},"trustLadder":{"anyOf":[{"type":"object","properties":{"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"}},"required":["category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["proposal","constraints","trustLadder"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/proposals/{id}/abandon":{"post":{"tags":["proposals"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":2000}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"proposal":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"diff":{"type":"string"},"filesChanged":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["DRAFT","AWAITING_APPROVAL","READY_UNPUSHED","PR_OPEN","APPROVED","REJECTED","MERGED","SUPERSEDED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"billable":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"prNumber":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pushError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supersededReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"watchUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recurrenceDetectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificateId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","runId","issueId","title","summary","diff","filesChanged","status","verificationTier","billable","branch","prUrl","prNumber","pushError","approvalRequestId","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","rejectionReason","supersededAt","supersededReason","mergedAt","watchUntil","recurrenceDetectedAt","certificateId","createdAt"],"additionalProperties":false}},"required":["proposal"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/handoff-bundle":{"get":{"tags":["issues"],"parameters":[{"schema":{"default":"external","type":"string","minLength":1,"maxLength":120},"in":"query","name":"targetAgent","required":false},{"schema":{"type":"integer","minimum":500,"maximum":200000},"in":"query","name":"tokenBudget","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"bundle":{"type":"object","properties":{"bundle":{"type":"object","properties":{"version":{"type":"string"},"bundleId":{"type":"string"},"issuedAt":{"type":"string"},"expiresAt":{"type":"string"},"targetAgent":{"type":"string"},"subject":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"type":"string"},"issueId":{"type":"string"},"issueShortId":{"type":"string"},"title":{"type":"string"},"fingerprint":{"type":"string"}},"required":["orgSlug","projectSlug","issueId","issueShortId","title","fingerprint"],"additionalProperties":false},"essence":{},"rca":{"anyOf":[{"type":"object","properties":{"verdict":{"type":"string"},"confidence":{"type":"number"},"summary":{"type":"string"}},"required":["verdict","confidence","summary"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"code":{"type":"object","properties":{"chunks":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"startLine":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"endLine":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"content":{"type":"string"},"estimatedTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["path","startLine","endLine","content","estimatedTokens"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["chunks","truncated"],"additionalProperties":false},"reproCapsule":{},"constraints":{"type":"array","items":{"type":"string"}},"constraintBriefing":{"type":"string"},"blastRadius":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"string"}},"prefixes":{"type":"array","items":{"type":"string"}}},"required":["paths","prefixes"],"additionalProperties":false},"suite":{"type":"object","properties":{"installCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"testCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reproCommandTemplate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"workdir":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["installCommand","testCommand","reproCommandTemplate","workdir"],"additionalProperties":false},"instructions":{"type":"string"},"budget":{"type":"object","properties":{"tokenBudget":{"type":"number"},"estimatedTokens":{"type":"number"},"droppedChunks":{"type":"number"}},"required":["tokenBudget","estimatedTokens","droppedChunks"],"additionalProperties":false}},"required":["version","bundleId","issuedAt","expiresAt","targetAgent","subject","essence","rca","code","reproCapsule","constraints","constraintBriefing","blastRadius","suite","instructions","budget"],"additionalProperties":false},"signature":{"type":"string"},"algorithm":{"type":"string","enum":["HMAC-SHA256"]}},"required":["bundle","signature","algorithm"],"additionalProperties":false},"codeRetrieval":{"type":"object","properties":{"chunks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["chunks","reason"],"additionalProperties":false}},"required":["bundle","codeRetrieval"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/handoff-patch":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bundle":{"type":"object","properties":{"bundle":{"type":"object","properties":{"version":{"type":"string"},"bundleId":{"type":"string"},"issuedAt":{"type":"string"},"expiresAt":{"type":"string"},"targetAgent":{"type":"string"},"subject":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"type":"string"},"issueId":{"type":"string"},"issueShortId":{"type":"string"},"title":{"type":"string"},"fingerprint":{"type":"string"}},"required":["orgSlug","projectSlug","issueId","issueShortId","title","fingerprint"]},"essence":{},"rca":{"anyOf":[{"type":"object","properties":{"verdict":{"type":"string"},"confidence":{"type":"number"},"summary":{"type":"string"}},"required":["verdict","confidence","summary"]},{"nullable":true,"enum":[null]}]},"code":{"type":"object","properties":{"chunks":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"startLine":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"endLine":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"content":{"type":"string"},"estimatedTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["path","startLine","endLine","content","estimatedTokens"]}},"truncated":{"type":"boolean"}},"required":["chunks","truncated"]},"reproCapsule":{},"constraints":{"type":"array","items":{"type":"string"}},"constraintBriefing":{"type":"string"},"blastRadius":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"string"}},"prefixes":{"type":"array","items":{"type":"string"}}},"required":["paths","prefixes"]},"suite":{"type":"object","properties":{"installCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"testCommand":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reproCommandTemplate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"workdir":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["installCommand","testCommand","reproCommandTemplate","workdir"]},"instructions":{"type":"string"},"budget":{"type":"object","properties":{"tokenBudget":{"type":"number"},"estimatedTokens":{"type":"number"},"droppedChunks":{"type":"number"}},"required":["tokenBudget","estimatedTokens","droppedChunks"]}},"required":["version","bundleId","issuedAt","expiresAt","targetAgent","subject","essence","rca","code","reproCapsule","constraints","constraintBriefing","blastRadius","suite","instructions","budget"]},"signature":{"type":"string"},"algorithm":{"type":"string","enum":["HMAC-SHA256"]}},"required":["bundle","signature","algorithm"]},"patch":{"type":"object","properties":{"bundleId":{"type":"string","minLength":1},"agent":{"type":"string","minLength":1,"maxLength":120},"diff":{"type":"string","minLength":1,"maxLength":524288},"approach":{"anyOf":[{"type":"string","maxLength":2000},{"nullable":true,"enum":[null]}]},"notes":{"anyOf":[{"type":"string","maxLength":4000},{"nullable":true,"enum":[null]}]}},"required":["bundleId","agent","diff"]},"agentId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"approvedRequestId":{"type":"string","minLength":1}},"required":["bundle","patch"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"run":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string","enum":["QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED"]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"provider":{"type":"string"},"agentPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"endedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"costCents":{"type":"number"},"tokensUsed":{"type":"number"},"sandboxSeconds":{"type":"number"},"failedStage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logs":{"type":"array","items":{}},"createdAt":{"type":"string"}},"required":["id","issueId","projectId","status","verificationTier","provider","agentPrincipalId","requestedByPrincipalId","startedAt","endedAt","costCents","tokensUsed","sandboxSeconds","failedStage","failureReason","logs","createdAt"],"additionalProperties":false},"filesChanged":{"type":"array","items":{"type":"string"}},"diffHash":{"type":"string"},"constraintsCited":{"type":"array","items":{"type":"string"}}},"required":["run","filesChanged","diffHash","constraintsCited"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/proposals/{id}/certificate":{"get":{"tags":["proposals"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"certificate":{"type":"object","properties":{"payload":{},"signature":{"type":"string"},"algorithm":{"type":"string"},"signedAt":{"type":"string"}},"required":["payload","signature","algorithm","signedAt"],"additionalProperties":false},"verification":{"type":"object","properties":{"valid":{"type":"boolean"},"failures":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}}},"required":["valid","failures"],"additionalProperties":false},"summary":{"type":"string"}},"required":["certificate","verification","summary"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/trust-ladder":{"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"agentId":{"type":"string"},"ladders":{"type":"array","items":{"type":"object","properties":{"orgId":{"type":"string"},"agentId":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"},"lastOutcomeAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPromotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDemotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"fromRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","kind","fromRung","toRung","issueId","proposalId","actorPrincipalId","reason","createdAt"],"additionalProperties":false}}},"required":["orgId","agentId","category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary","lastOutcomeAt","lastPromotedAt","lastDemotedAt","recentEvents"],"additionalProperties":false}}},"required":["agentId","ladders"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/trust-ladder/{category}":{"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true},{"schema":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"in":"path","name":"category","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"agentId":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"},"lastOutcomeAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPromotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDemotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"fromRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","kind","fromRung","toRung","issueId","proposalId","actorPrincipalId","reason","createdAt"],"additionalProperties":false}}},"required":["orgId","agentId","category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary","lastOutcomeAt","lastPromotedAt","lastDemotedAt","recentEvents"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/trust-ladder/{category}/accept":{"post":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true},{"schema":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"in":"path","name":"category","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"agentId":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"},"lastOutcomeAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPromotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDemotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"fromRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","kind","fromRung","toRung","issueId","proposalId","actorPrincipalId","reason","createdAt"],"additionalProperties":false}}},"required":["orgId","agentId","category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary","lastOutcomeAt","lastPromotedAt","lastDemotedAt","recentEvents"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/trust-ladder/{category}/demote":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true},{"schema":{"type":"string","enum":["recent-change","code-defect","known-regression","input-validation","dependency","infrastructure","unknown"]},"in":"path","name":"category","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"agentId":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},"nextRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"acceptanceRate":{"type":"number"},"sampleSize":{"type":"number"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"},"approvalsUntilOffer":{"type":"number"},"promotionOffered":{"type":"boolean"},"offeredRung":{"anyOf":[{"type":"string","enum":["RCA_ONLY","DRAFT_PR","AUTO_ATTEMPT"]},{"nullable":true,"enum":[null]}]},"blockers":{"type":"array","items":{"type":"string"}},"autonomousProposalAllowed":{"type":"boolean"},"mergeAllowed":{"type":"boolean","enum":[false]},"summary":{"type":"string"},"lastOutcomeAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPromotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDemotedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"fromRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"toRung":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","kind","fromRung","toRung","issueId","proposalId","actorPrincipalId","reason","createdAt"],"additionalProperties":false}}},"required":["orgId","agentId","category","rung","nextRung","acceptanceRate","sampleSize","approvals","rejections","regressions","consecutiveApprovals","approvalsUntilOffer","promotionOffered","offeredRung","blockers","autonomousProposalAllowed","mergeAllowed","summary","lastOutcomeAt","lastPromotedAt","lastDemotedAt","recentEvents"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/autofix/queue":{"get":{"tags":["autofix"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"boolean"},"in":"query","name":"includeSecurityLane","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"number"},"issueId":{"type":"string"},"projectId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"score":{"type":"number"},"impact":{"type":"number"},"usersAffected":{"type":"number"},"userCount":{"type":"number"},"eventCount":{"type":"number"},"severityWeight":{"type":"number"},"actionability":{"type":"number"},"actionabilityMultiplier":{"type":"number"},"costCents":{"type":"number"},"costSource":{"type":"string","enum":["agent-history","project-history","default"]},"costSamples":{"type":"number"},"securityLane":{"type":"boolean"},"lastSeen":{"type":"string"}},"required":["rank","issueId","projectId","shortId","title","level","status","score","impact","usersAffected","userCount","eventCount","severityWeight","actionability","actionabilityMultiplier","costCents","costSource","costSamples","securityLane","lastSeen"],"additionalProperties":false}},"budget":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string"},"monthlyLimitCents":{"type":"number"},"consumedCents":{"type":"number"},"remainingCents":{"type":"number"},"periodStart":{"type":"string"},"enabled":{"type":"boolean"},"exhausted":{"type":"boolean"}},"required":["orgId","monthlyLimitCents","consumedCents","remainingCents","periodStart","enabled","exhausted"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"formula":{"type":"string"}},"required":["entries","budget","formula"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/autofix/queue/{issueId}":{"get":{"tags":["autofix"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"rank":{"type":"number"},"issueId":{"type":"string"},"projectId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"score":{"type":"number"},"impact":{"type":"number"},"usersAffected":{"type":"number"},"userCount":{"type":"number"},"eventCount":{"type":"number"},"severityWeight":{"type":"number"},"actionability":{"type":"number"},"actionabilityMultiplier":{"type":"number"},"costCents":{"type":"number"},"costSource":{"type":"string","enum":["agent-history","project-history","default"]},"costSamples":{"type":"number"},"securityLane":{"type":"boolean"},"lastSeen":{"type":"string"}},"required":["rank","issueId","projectId","shortId","title","level","status","score","impact","usersAffected","userCount","eventCount","severityWeight","actionability","actionabilityMultiplier","costCents","costSource","costSamples","securityLane","lastSeen"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/autofix/budget":{"get":{"tags":["autofix"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"budget":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string"},"monthlyLimitCents":{"type":"number"},"consumedCents":{"type":"number"},"remainingCents":{"type":"number"},"periodStart":{"type":"string"},"enabled":{"type":"boolean"},"exhausted":{"type":"boolean"}},"required":["orgId","monthlyLimitCents","consumedCents","remainingCents","periodStart","enabled","exhausted"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["budget"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["autofix"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"monthlyLimitCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"enabled":{"type":"boolean"},"resetConsumed":{"type":"boolean"}},"required":["monthlyLimitCents"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"budget":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string"},"monthlyLimitCents":{"type":"number"},"consumedCents":{"type":"number"},"remainingCents":{"type":"number"},"periodStart":{"type":"string"},"enabled":{"type":"boolean"},"exhausted":{"type":"boolean"}},"required":["orgId","monthlyLimitCents","consumedCents","remainingCents","periodStart","enabled","exhausted"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["budget"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/autofix/schedule":{"post":{"tags":["autofix"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":200},"projectId":{"type":"string","minLength":1}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"scheduled":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"projectId":{"type":"string"},"kind":{"type":"string","enum":["SCHEDULED","SKIPPED_BUDGET","SKIPPED_SECURITY_LANE","SKIPPED_DISABLED","SKIPPED_IN_FLIGHT"]},"rank":{"type":"number"},"score":{"type":"number"},"usersAffected":{"type":"number"},"severityWeight":{"type":"number"},"estimatedCostCents":{"type":"number"},"budgetRemainingCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"remediationRunId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputs":{},"createdAt":{"type":"string"}},"required":["id","issueId","projectId","kind","rank","score","usersAffected","severityWeight","estimatedCostCents","budgetRemainingCents","remediationRunId","inputs","createdAt"],"additionalProperties":false}},"skipped":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"projectId":{"type":"string"},"kind":{"type":"string","enum":["SCHEDULED","SKIPPED_BUDGET","SKIPPED_SECURITY_LANE","SKIPPED_DISABLED","SKIPPED_IN_FLIGHT"]},"rank":{"type":"number"},"score":{"type":"number"},"usersAffected":{"type":"number"},"severityWeight":{"type":"number"},"estimatedCostCents":{"type":"number"},"budgetRemainingCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"remediationRunId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputs":{},"createdAt":{"type":"string"}},"required":["id","issueId","projectId","kind","rank","score","usersAffected","severityWeight","estimatedCostCents","budgetRemainingCents","remediationRunId","inputs","createdAt"],"additionalProperties":false}},"budget":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string"},"monthlyLimitCents":{"type":"number"},"consumedCents":{"type":"number"},"remainingCents":{"type":"number"},"periodStart":{"type":"string"},"enabled":{"type":"boolean"},"exhausted":{"type":"boolean"}},"required":["orgId","monthlyLimitCents","consumedCents","remainingCents","periodStart","enabled","exhausted"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"budgetExhausted":{"type":"boolean"}},"required":["scheduled","skipped","budget","budgetExhausted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/autofix/decisions":{"get":{"tags":["autofix"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"issueId","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"projectId":{"type":"string"},"kind":{"type":"string","enum":["SCHEDULED","SKIPPED_BUDGET","SKIPPED_SECURITY_LANE","SKIPPED_DISABLED","SKIPPED_IN_FLIGHT"]},"rank":{"type":"number"},"score":{"type":"number"},"usersAffected":{"type":"number"},"severityWeight":{"type":"number"},"estimatedCostCents":{"type":"number"},"budgetRemainingCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"remediationRunId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputs":{},"createdAt":{"type":"string"}},"required":["id","issueId","projectId","kind","rank","score","usersAffected","severityWeight","estimatedCostCents","budgetRemainingCents","remediationRunId","inputs","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/hotfix-providers":{"get":{"tags":["hotfix-providers"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string"},"supportedKinds":{"type":"array","items":{"type":"string"}},"configured":{"type":"boolean"},"notConfiguredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["name","displayName","supportedKinds","configured","notConfiguredReason"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/hotfixes":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rule":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block_route"]},"match":{"type":"object","properties":{"methods":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"]}},"pathPrefix":{"type":"string","minLength":1,"maxLength":500,"pattern":"^\\/.*"},"pathExact":{"type":"string","minLength":1,"maxLength":500,"pattern":"^\\/.*"}}},"respondWith":{"type":"object","properties":{"status":{"type":"integer","minimum":400,"maximum":599},"message":{"type":"string","minLength":1,"maxLength":200}},"required":["status","message"]}},"required":["kind","match","respondWith"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["sanitize_input"]},"match":{"type":"object","properties":{"pathPrefix":{"type":"string","minLength":1,"maxLength":500,"pattern":"^\\/.*"},"pathExact":{"type":"string","minLength":1,"maxLength":500,"pattern":"^\\/.*"},"location":{"type":"string","enum":["query","body","header"]},"field":{"type":"string","minLength":1,"maxLength":200}},"required":["location","field"]},"action":{"type":"string","enum":["drop","truncate","strip_html"]},"maxLength":{"type":"integer","minimum":1,"maximum":100000}},"required":["kind","match","action"],"additionalProperties":false}]},"provider":{"type":"string","minLength":1,"maxLength":60},"ttlMinutes":{"type":"integer","minimum":1,"maximum":10080},"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["rule","reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"hotfix":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"provider":{"type":"string"},"kind":{"type":"string"},"rule":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"artifact":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","provider","kind","rule","status","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","revertedAt","revertReason","artifact","externalId","failureReason","issueRemainsOpen","createdAt"],"additionalProperties":false},"approval":{"type":"object","properties":{"requestId":{"type":"string"},"status":{"type":"string"},"minApprovers":{"type":"number"},"riskClass":{"type":"string"},"reason":{"type":"string"}},"required":["requestId","status","minApprovers","riskClass","reason"],"additionalProperties":false}},"required":["hotfix","approval"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/hotfixes":{"get":{"tags":["hotfixes"],"parameters":[{"schema":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"issueId","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"provider":{"type":"string"},"kind":{"type":"string"},"rule":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"artifact":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","provider","kind","rule","status","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","revertedAt","revertReason","artifact","externalId","failureReason","issueRemainsOpen","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/hotfixes/sweep":{"post":{"tags":["hotfixes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"checked":{"type":"number"},"expired":{"type":"array","items":{"type":"string"}}},"required":["checked","expired"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/hotfixes/{id}":{"get":{"tags":["hotfixes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"provider":{"type":"string"},"kind":{"type":"string"},"rule":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"artifact":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","provider","kind","rule","status","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","revertedAt","revertReason","artifact","externalId","failureReason","issueRemainsOpen","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/hotfixes/{id}/apply":{"post":{"tags":["hotfixes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"hotfix":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"provider":{"type":"string"},"kind":{"type":"string"},"rule":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"artifact":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","provider","kind","rule","status","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","revertedAt","revertReason","artifact","externalId","failureReason","issueRemainsOpen","createdAt"],"additionalProperties":false},"artifact":{"type":"object","properties":{"provider":{"type":"string"},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"delivery":{"type":"string","enum":["config-file","api","manual"]},"document":{"type":"object","additionalProperties":{}},"checksum":{"type":"string"},"instructions":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","externalId","delivery","document","checksum","instructions"],"additionalProperties":false}},"required":["hotfix","artifact"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/hotfixes/{id}/revert":{"post":{"tags":["hotfixes"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"hotfix":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"provider":{"type":"string"},"kind":{"type":"string"},"rule":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"artifact":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","provider","kind","rule","status","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","revertedAt","revertReason","artifact","externalId","failureReason","issueRemainsOpen","createdAt"],"additionalProperties":false}},"required":["hotfix"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/threat":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"projectId":{"type":"string"},"orgId":{"type":"string"},"securityLane":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"confidence":{"type":"number"},"signals":{},"reviewStatus":{"type":"string","enum":["PENDING","CLEARED","CONFIRMED"]},"reviewedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewNote":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventsScanned":{"type":"number"},"scannedAt":{"type":"string"},"lane":{"type":"object","properties":{"active":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"requiresHumanSecurityReview":{"type":"boolean"},"autoPrBlocked":{"type":"boolean"},"sandboxEgress":{"type":"string","enum":["sealed","default-deny"]},"sandboxAllowlist":{"type":"array","items":{"type":"string"}},"alertSeverityFloor":{"type":"string","enum":["fatal","error","warning","info","debug"]},"reason":{"type":"string"}},"required":["active","categories","requiresHumanSecurityReview","autoPrBlocked","sandboxEgress","sandboxAllowlist","alertSeverityFloor","reason"],"additionalProperties":false}},"required":["issueId","projectId","orgId","securityLane","categories","confidence","signals","reviewStatus","reviewedByPrincipalId","reviewedAt","reviewNote","eventsScanned","scannedAt","lane"],"additionalProperties":false},{"type":"object","properties":{"issueId":{"type":"string"},"lane":{"type":"object","properties":{"active":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"requiresHumanSecurityReview":{"type":"boolean"},"autoPrBlocked":{"type":"boolean"},"sandboxEgress":{"type":"string","enum":["sealed","default-deny"]},"sandboxAllowlist":{"type":"array","items":{"type":"string"}},"alertSeverityFloor":{"type":"string","enum":["fatal","error","warning","info","debug"]},"reason":{"type":"string"}},"required":["active","categories","requiresHumanSecurityReview","autoPrBlocked","sandboxEgress","sandboxAllowlist","alertSeverityFloor","reason"],"additionalProperties":false}},"required":["issueId","lane"],"additionalProperties":false}]}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/threat/scan":{"post":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"string"},"projectId":{"type":"string"},"orgId":{"type":"string"},"securityLane":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"confidence":{"type":"number"},"signals":{},"reviewStatus":{"type":"string","enum":["PENDING","CLEARED","CONFIRMED"]},"reviewedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewNote":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventsScanned":{"type":"number"},"scannedAt":{"type":"string"},"lane":{"type":"object","properties":{"active":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"requiresHumanSecurityReview":{"type":"boolean"},"autoPrBlocked":{"type":"boolean"},"sandboxEgress":{"type":"string","enum":["sealed","default-deny"]},"sandboxAllowlist":{"type":"array","items":{"type":"string"}},"alertSeverityFloor":{"type":"string","enum":["fatal","error","warning","info","debug"]},"reason":{"type":"string"}},"required":["active","categories","requiresHumanSecurityReview","autoPrBlocked","sandboxEgress","sandboxAllowlist","alertSeverityFloor","reason"],"additionalProperties":false}},"required":["issueId","projectId","orgId","securityLane","categories","confidence","signals","reviewStatus","reviewedByPrincipalId","reviewedAt","reviewNote","eventsScanned","scannedAt","lane"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/threat/review":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["CLEARED","CONFIRMED"]},"note":{"type":"string","minLength":3,"maxLength":2000}},"required":["decision","note"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"string"},"projectId":{"type":"string"},"orgId":{"type":"string"},"securityLane":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"confidence":{"type":"number"},"signals":{},"reviewStatus":{"type":"string","enum":["PENDING","CLEARED","CONFIRMED"]},"reviewedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewNote":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventsScanned":{"type":"number"},"scannedAt":{"type":"string"},"lane":{"type":"object","properties":{"active":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"requiresHumanSecurityReview":{"type":"boolean"},"autoPrBlocked":{"type":"boolean"},"sandboxEgress":{"type":"string","enum":["sealed","default-deny"]},"sandboxAllowlist":{"type":"array","items":{"type":"string"}},"alertSeverityFloor":{"type":"string","enum":["fatal","error","warning","info","debug"]},"reason":{"type":"string"}},"required":["active","categories","requiresHumanSecurityReview","autoPrBlocked","sandboxEgress","sandboxAllowlist","alertSeverityFloor","reason"],"additionalProperties":false}},"required":["issueId","projectId","orgId","securityLane","categories","confidence","signals","reviewStatus","reviewedByPrincipalId","reviewedAt","reviewNote","eventsScanned","scannedAt","lane"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/security-lane":{"get":{"tags":["security-lane"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"issueId":{"type":"string"},"projectId":{"type":"string"},"orgId":{"type":"string"},"securityLane":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"confidence":{"type":"number"},"signals":{},"reviewStatus":{"type":"string","enum":["PENDING","CLEARED","CONFIRMED"]},"reviewedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reviewNote":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventsScanned":{"type":"number"},"scannedAt":{"type":"string"},"lane":{"type":"object","properties":{"active":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}},"requiresHumanSecurityReview":{"type":"boolean"},"autoPrBlocked":{"type":"boolean"},"sandboxEgress":{"type":"string","enum":["sealed","default-deny"]},"sandboxAllowlist":{"type":"array","items":{"type":"string"}},"alertSeverityFloor":{"type":"string","enum":["fatal","error","warning","info","debug"]},"reason":{"type":"string"}},"required":["active","categories","requiresHumanSecurityReview","autoPrBlocked","sandboxEgress","sandboxAllowlist","alertSeverityFloor","reason"],"additionalProperties":false}},"required":["issueId","projectId","orgId","securityLane","categories","confidence","signals","reviewStatus","reviewedByPrincipalId","reviewedAt","reviewNote","eventsScanned","scannedAt","lane"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/behavior/baseline":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"windowHours":{"type":"integer","minimum":1,"maximum":2160}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"agentId":{"type":"string"},"baselineActionsPerHour":{"type":"number"},"knownTargets":{"type":"array","items":{"type":"string"}},"knownActions":{"type":"array","items":{"type":"string"}},"knownSequences":{"type":"array","items":{"type":"string"}},"sampleCount":{"type":"number"},"windowStart":{"type":"string"},"windowEnd":{"type":"string"}},"required":["agentId","baselineActionsPerHour","knownTargets","knownActions","knownSequences","sampleCount","windowStart","windowEnd"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/behavior/scan":{"post":{"tags":["agents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"windowMinutes":{"type":"integer","minimum":1,"maximum":1440}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"anomalies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"kind":{"type":"string","enum":["query_volume","target_access","tool_sequence"]},"severity":{"type":"string","enum":["low","medium","high"]},"score":{"type":"number"},"detail":{},"responseAction":{"type":"string","enum":["NONE","TOKENS_REVOKED","AGENT_SUSPENDED"]},"revokedTokenIds":{"type":"array","items":{"type":"string"}},"windowStart":{"type":"string"},"windowEnd":{"type":"string"},"detectedAt":{"type":"string"}},"required":["id","agentId","kind","severity","score","detail","responseAction","revokedTokenIds","windowStart","windowEnd","detectedAt"],"additionalProperties":false}},"response":{"type":"string","enum":["NONE","TOKENS_REVOKED","AGENT_SUSPENDED"]},"revokedTokenIds":{"type":"array","items":{"type":"string"}},"agentSuspended":{"type":"boolean"},"skippedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["anomalies","response","revokedTokenIds","agentSuspended","skippedReason"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/agents/{agentId}/anomalies":{"get":{"tags":["agents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"agentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"agentId":{"type":"string"},"kind":{"type":"string","enum":["query_volume","target_access","tool_sequence"]},"severity":{"type":"string","enum":["low","medium","high"]},"score":{"type":"number"},"detail":{},"responseAction":{"type":"string","enum":["NONE","TOKENS_REVOKED","AGENT_SUSPENDED"]},"revokedTokenIds":{"type":"array","items":{"type":"string"}},"windowStart":{"type":"string"},"windowEnd":{"type":"string"},"detectedAt":{"type":"string"}},"required":["id","agentId","kind","severity","score","detail","responseAction","revokedTokenIds","windowStart","windowEnd","detectedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/onboarding":{"get":{"tags":["onboarding"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"hasReceivedFirstEvent":{"type":"boolean"},"firstEventAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasSourceMaps":{"type":"boolean"},"hasRepoConnected":{"type":"boolean"},"dsn":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["hasReceivedFirstEvent","firstEventAt","hasSourceMaps","hasRepoConnected","dsn"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/onboarding/test-event":{"post":{"tags":["onboarding"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string"}},"required":["eventId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/monitors":{"post":{"tags":["monitors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"slug":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"scheduleKind":{"default":"cron","type":"string","enum":["cron","interval"]},"schedule":{"type":"string","maxLength":200},"intervalMinutes":{"type":"integer","minimum":1,"maximum":44640},"timezone":{"default":"UTC","type":"string","minLength":1,"maxLength":64},"gracePeriodMinutes":{"default":5,"type":"integer","minimum":0,"maximum":1440},"maxRuntimeMinutes":{"default":30,"type":"integer","minimum":1,"maximum":10080},"environment":{"default":"production","type":"string","minLength":1,"maxLength":64},"enabled":{"default":true,"type":"boolean"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"scheduleKind":{"type":"string","enum":["cron","interval"]},"schedule":{"type":"string"},"intervalMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"gracePeriodMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRuntimeMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"environment":{"type":"string"},"status":{"type":"string"},"nextExpectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","scheduleKind","schedule","intervalMinutes","timezone","gracePeriodMinutes","maxRuntimeMinutes","environment","status","nextExpectedAt","lastCheckInAt","lastCheckInStatus","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["monitors"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"scheduleKind":{"type":"string","enum":["cron","interval"]},"schedule":{"type":"string"},"intervalMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"gracePeriodMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRuntimeMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"environment":{"type":"string"},"status":{"type":"string"},"nextExpectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","scheduleKind","schedule","intervalMinutes","timezone","gracePeriodMinutes","maxRuntimeMinutes","environment","status","nextExpectedAt","lastCheckInAt","lastCheckInStatus","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/monitors/{monitorSlug}":{"get":{"tags":["monitors"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"scheduleKind":{"type":"string","enum":["cron","interval"]},"schedule":{"type":"string"},"intervalMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"gracePeriodMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRuntimeMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"environment":{"type":"string"},"status":{"type":"string"},"nextExpectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","scheduleKind","schedule","intervalMinutes","timezone","gracePeriodMinutes","maxRuntimeMinutes","environment","status","nextExpectedAt","lastCheckInAt","lastCheckInStatus","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["monitors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"scheduleKind":{"type":"string","enum":["cron","interval"]},"schedule":{"type":"string","minLength":1,"maxLength":200},"intervalMinutes":{"type":"integer","minimum":1,"maximum":44640},"timezone":{"type":"string","minLength":1,"maxLength":64},"gracePeriodMinutes":{"type":"integer","minimum":0,"maximum":1440},"maxRuntimeMinutes":{"type":"integer","minimum":1,"maximum":10080},"environment":{"type":"string","minLength":1,"maxLength":64},"enabled":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"scheduleKind":{"type":"string","enum":["cron","interval"]},"schedule":{"type":"string"},"intervalMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"gracePeriodMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRuntimeMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"environment":{"type":"string"},"status":{"type":"string"},"nextExpectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastCheckInStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","scheduleKind","schedule","intervalMinutes","timezone","gracePeriodMinutes","maxRuntimeMinutes","environment","status","nextExpectedAt","lastCheckInAt","lastCheckInStatus","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["monitors"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/monitors/{monitorSlug}/check-ins":{"get":{"tags":["monitors"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"checkInId":{"type":"string"},"status":{"type":"string"},"environment":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"expectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","monitorId","checkInId","status","environment","startedAt","completedAt","durationMs","expectedAt","issueId"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/uptime-monitors":{"post":{"tags":["uptime-monitors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"slug":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"url":{"type":"string","maxLength":2048,"format":"uri"},"method":{"default":"GET","type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"]},"headers":{"type":"object","additionalProperties":{"type":"string","maxLength":2048}},"body":{"type":"string","maxLength":8192},"expectedStatus":{"default":200,"type":"integer","minimum":100,"maximum":599},"expectedBodyContains":{"type":"string","minLength":1,"maxLength":500},"intervalSeconds":{"default":60,"type":"integer","minimum":30,"maximum":86400},"timeoutMs":{"default":10000,"type":"integer","minimum":500,"maximum":60000},"failureThreshold":{"default":3,"type":"integer","minimum":1,"maximum":20},"recoveryThreshold":{"default":2,"type":"integer","minimum":1,"maximum":20},"certExpiryWarningDays":{"default":14,"type":"integer","minimum":0,"maximum":365},"followRedirects":{"default":true,"type":"boolean"},"environment":{"default":"production","type":"string","minLength":1,"maxLength":64},"enabled":{"default":true,"type":"boolean"}},"required":["name","url"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"url":{"type":"string"},"method":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"expectedStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expectedBodyContains":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"intervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recoveryThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"certExpiryWarningDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followRedirects":{"type":"boolean"},"environment":{"type":"string"},"status":{"type":"string"},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"consecutiveSuccesses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextCheckAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","url","method","headerNames","expectedStatus","expectedBodyContains","intervalSeconds","timeoutMs","failureThreshold","recoveryThreshold","certExpiryWarningDays","followRedirects","environment","status","consecutiveFailures","consecutiveSuccesses","lastCheckedAt","nextCheckAt","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["uptime-monitors"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"url":{"type":"string"},"method":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"expectedStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expectedBodyContains":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"intervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recoveryThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"certExpiryWarningDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followRedirects":{"type":"boolean"},"environment":{"type":"string"},"status":{"type":"string"},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"consecutiveSuccesses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextCheckAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","url","method","headerNames","expectedStatus","expectedBodyContains","intervalSeconds","timeoutMs","failureThreshold","recoveryThreshold","certExpiryWarningDays","followRedirects","environment","status","consecutiveFailures","consecutiveSuccesses","lastCheckedAt","nextCheckAt","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/uptime-monitors/{uptimeSlug}":{"get":{"tags":["uptime-monitors"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"uptimeSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"url":{"type":"string"},"method":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"expectedStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expectedBodyContains":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"intervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recoveryThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"certExpiryWarningDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followRedirects":{"type":"boolean"},"environment":{"type":"string"},"status":{"type":"string"},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"consecutiveSuccesses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextCheckAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","url","method","headerNames","expectedStatus","expectedBodyContains","intervalSeconds","timeoutMs","failureThreshold","recoveryThreshold","certExpiryWarningDays","followRedirects","environment","status","consecutiveFailures","consecutiveSuccesses","lastCheckedAt","nextCheckAt","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["uptime-monitors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","maxLength":2048,"format":"uri"},"method":{"default":"GET","type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"]},"headers":{"type":"object","additionalProperties":{"type":"string","maxLength":2048}},"body":{"type":"string","maxLength":8192},"expectedStatus":{"default":200,"type":"integer","minimum":100,"maximum":599},"expectedBodyContains":{"type":"string","minLength":1,"maxLength":500},"intervalSeconds":{"default":60,"type":"integer","minimum":30,"maximum":86400},"timeoutMs":{"default":10000,"type":"integer","minimum":500,"maximum":60000},"failureThreshold":{"default":3,"type":"integer","minimum":1,"maximum":20},"recoveryThreshold":{"default":2,"type":"integer","minimum":1,"maximum":20},"certExpiryWarningDays":{"default":14,"type":"integer","minimum":0,"maximum":365},"followRedirects":{"default":true,"type":"boolean"},"environment":{"default":"production","type":"string","minLength":1,"maxLength":64},"enabled":{"default":true,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"uptimeSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"url":{"type":"string"},"method":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"expectedStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expectedBodyContains":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"intervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recoveryThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"certExpiryWarningDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followRedirects":{"type":"boolean"},"environment":{"type":"string"},"status":{"type":"string"},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"consecutiveSuccesses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextCheckAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activeIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","projectId","slug","name","enabled","url","method","headerNames","expectedStatus","expectedBodyContains","intervalSeconds","timeoutMs","failureThreshold","recoveryThreshold","certExpiryWarningDays","followRedirects","environment","status","consecutiveFailures","consecutiveSuccesses","lastCheckedAt","nextCheckAt","activeIssueId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["uptime-monitors"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"uptimeSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/uptime-monitors/{uptimeSlug}/results":{"get":{"tags":["uptime-monitors"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"uptimeSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"outcome":{"type":"string"},"failureKind":{"type":"string"},"httpStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certExpiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certDaysRemaining":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"redirectedToHost":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"redirectCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"finalUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checkedAt":{"type":"string"}},"required":["id","monitorId","outcome","failureKind","httpStatus","latencyMs","error","certExpiresAt","certDaysRemaining","redirectedToHost","redirectCount","finalUrl","checkedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/uptime-monitors/{uptimeSlug}/rollup":{"get":{"tags":["uptime-monitors"],"parameters":[{"schema":{"default":"24h","type":"string","enum":["24h","7d","30d"]},"in":"query","name":"window","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"uptimeSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"window":{"type":"string","enum":["24h","7d","30d"]},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uptimePct":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p50LatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"p95LatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"incidents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["window","checks","successes","uptimePct","p50LatencyMs","p95LatencyMs","incidents","lastCheckAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/feedback":{"get":{"tags":["feedback"],"parameters":[{"schema":{"type":"string","enum":["unresolved","resolved","spam"]},"in":"query","name":"status","required":false},{"schema":{"type":"string"},"in":"query","name":"issueId","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"offset","required":false},{"schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]},"in":"query","name":"allowQuarantined","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"message":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"name":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"contactEmail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"source":{"type":"string"},"status":{"type":"string","enum":["unresolved","resolved","spam"]},"spamScore":{"type":"number"},"spamReasons":{"type":"array","items":{"type":"string"}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resolvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","projectId","eventId","issueId","message","name","contactEmail","url","environment","source","status","spamScore","spamReasons","securityNotice","resolvedByPrincipalId","resolvedAt","createdAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["data","total"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/feedback/{feedbackId}":{"get":{"tags":["feedback"],"parameters":[{"schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]},"in":"query","name":"allowQuarantined","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"feedbackId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"message":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"name":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"contactEmail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"source":{"type":"string"},"status":{"type":"string","enum":["unresolved","resolved","spam"]},"spamScore":{"type":"number"},"spamReasons":{"type":"array","items":{"type":"string"}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resolvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","projectId","eventId","issueId","message","name","contactEmail","url","environment","source","status","spamScore","spamReasons","securityNotice","resolvedByPrincipalId","resolvedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["feedback"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["unresolved","resolved","spam"]}},"required":["status"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"feedbackId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"message":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"name":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"contactEmail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"source":{"type":"string"},"status":{"type":"string","enum":["unresolved","resolved","spam"]},"spamScore":{"type":"number"},"spamReasons":{"type":"array","items":{"type":"string"}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resolvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","projectId","eventId","issueId","message","name","contactEmail","url","environment","source","status","spamScore","spamReasons","securityNotice","resolvedByPrincipalId","resolvedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["PRIVATE","PASSWORD","PUBLIC"]},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"defaultUptimeExcludesMaintenance":{"type":"boolean"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"autoPublishDefault":{"type":"boolean"},"autoDeclareAfterMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"customDomain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainVerifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainServing":{"type":"boolean"},"publicUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","visibility","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","defaultUptimeExcludesMaintenance","uptimeWindowDays","autoPublishDefault","autoDeclareAfterMinutes","customDomain","customDomainVerifiedAt","customDomainServing","publicUrl","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"slug":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"visibility":{"default":"PRIVATE","type":"string","enum":["PRIVATE","PASSWORD","PUBLIC"]},"password":{"type":"string","minLength":8,"maxLength":200},"headline":{"type":"string","maxLength":2000},"supportUrl":{"type":"string","maxLength":2048,"format":"uri"},"brandColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoBlobKey":{"anyOf":[{"type":"string","minLength":1,"maxLength":512,"pattern":"^[A-Za-z0-9._-]+(?:\\/[A-Za-z0-9._-]+)*$"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string","minLength":1,"maxLength":512,"pattern":"^[A-Za-z0-9._-]+(?:\\/[A-Za-z0-9._-]+)*$"},{"nullable":true,"enum":[null]}]},"timezone":{"default":"UTC","type":"string","minLength":1,"maxLength":64},"locale":{"default":"en","type":"string","minLength":2,"maxLength":12},"defaultUptimeExcludesMaintenance":{"default":true,"type":"boolean"},"uptimeWindowDays":{"default":90,"type":"integer","minimum":7,"maximum":365},"autoPublishDefault":{"default":false,"type":"boolean"},"autoDeclareAfterMinutes":{"anyOf":[{"type":"integer","minimum":1,"maximum":1440},{"nullable":true,"enum":[null]}]}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["PRIVATE","PASSWORD","PUBLIC"]},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"defaultUptimeExcludesMaintenance":{"type":"boolean"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"autoPublishDefault":{"type":"boolean"},"autoDeclareAfterMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"customDomain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainVerifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainServing":{"type":"boolean"},"publicUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","visibility","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","defaultUptimeExcludesMaintenance","uptimeWindowDays","autoPublishDefault","autoDeclareAfterMinutes","customDomain","customDomainVerifiedAt","customDomainServing","publicUrl","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["PRIVATE","PASSWORD","PUBLIC"]},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"defaultUptimeExcludesMaintenance":{"type":"boolean"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"autoPublishDefault":{"type":"boolean"},"autoDeclareAfterMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"customDomain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainVerifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainServing":{"type":"boolean"},"publicUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","visibility","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","defaultUptimeExcludesMaintenance","uptimeWindowDays","autoPublishDefault","autoDeclareAfterMinutes","customDomain","customDomainVerifiedAt","customDomainServing","publicUrl","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"visibility":{"default":"PRIVATE","type":"string","enum":["PRIVATE","PASSWORD","PUBLIC"]},"password":{"type":"string","minLength":8,"maxLength":200},"headline":{"type":"string","maxLength":2000},"supportUrl":{"type":"string","maxLength":2048,"format":"uri"},"brandColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoBlobKey":{"anyOf":[{"type":"string","minLength":1,"maxLength":512,"pattern":"^[A-Za-z0-9._-]+(?:\\/[A-Za-z0-9._-]+)*$"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string","minLength":1,"maxLength":512,"pattern":"^[A-Za-z0-9._-]+(?:\\/[A-Za-z0-9._-]+)*$"},{"nullable":true,"enum":[null]}]},"timezone":{"default":"UTC","type":"string","minLength":1,"maxLength":64},"locale":{"default":"en","type":"string","minLength":2,"maxLength":12},"defaultUptimeExcludesMaintenance":{"default":true,"type":"boolean"},"uptimeWindowDays":{"default":90,"type":"integer","minimum":7,"maximum":365},"autoPublishDefault":{"default":false,"type":"boolean"},"autoDeclareAfterMinutes":{"anyOf":[{"type":"integer","minimum":1,"maximum":1440},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["PRIVATE","PASSWORD","PUBLIC"]},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"defaultUptimeExcludesMaintenance":{"type":"boolean"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"autoPublishDefault":{"type":"boolean"},"autoDeclareAfterMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"customDomain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainVerifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"customDomainServing":{"type":"boolean"},"publicUrl":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","visibility","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","defaultUptimeExcludesMaintenance","uptimeWindowDays","autoPublishDefault","autoDeclareAfterMinutes","customDomain","customDomainVerifiedAt","customDomainServing","publicUrl","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/component-groups":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collapsed":{"type":"boolean"}},"required":["id","name","position","collapsed"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"position":{"default":0,"type":"integer","minimum":0,"maximum":10000},"collapsed":{"default":false,"type":"boolean"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collapsed":{"type":"boolean"}},"required":["id","name","position","collapsed"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/component-groups/{groupId}":{"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"position":{"default":0,"type":"integer","minimum":0,"maximum":10000},"collapsed":{"default":false,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"groupId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collapsed":{"type":"boolean"}},"required":["id","name","position","collapsed"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"groupId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/components":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoPublish":{"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"derivedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"assertedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"by":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["by","at","reason","expiresAt","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","autoPublish","sloTarget","sloWindowDays","status","derivedStatus","assertedStatus","manualOverride","evidence","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"slug":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"description":{"type":"string","maxLength":2000},"groupId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"position":{"default":0,"type":"integer","minimum":0,"maximum":10000},"showcase":{"default":true,"type":"boolean"},"onlyShowIfDegraded":{"default":false,"type":"boolean"},"startDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"autoPublish":{"default":false,"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number","minimum":0.5,"maximum":0.99999},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"default":30,"type":"integer","minimum":7,"maximum":365}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoPublish":{"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"derivedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"assertedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"by":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["by","at","reason","expiresAt","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","autoPublish","sloTarget","sloWindowDays","status","derivedStatus","assertedStatus","manualOverride","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/components/{componentSlug}":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoPublish":{"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"derivedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"assertedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"by":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["by","at","reason","expiresAt","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","autoPublish","sloTarget","sloWindowDays","status","derivedStatus","assertedStatus","manualOverride","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"groupId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"position":{"default":0,"type":"integer","minimum":0,"maximum":10000},"showcase":{"default":true,"type":"boolean"},"onlyShowIfDegraded":{"default":false,"type":"boolean"},"startDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"autoPublish":{"default":false,"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number","minimum":0.5,"maximum":0.99999},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"default":30,"type":"integer","minimum":7,"maximum":365}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoPublish":{"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"derivedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"assertedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"by":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["by","at","reason","expiresAt","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","autoPublish","sloTarget","sloWindowDays","status","derivedStatus","assertedStatus","manualOverride","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/components/{componentSlug}/status":{"put":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"reason":{"type":"string","minLength":1,"maxLength":1000},"expiresInHours":{"default":24,"anyOf":[{"type":"integer","minimum":1,"maximum":720},{"nullable":true,"enum":[null]}]}},"required":["status"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoPublish":{"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"derivedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"assertedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"by":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["by","at","reason","expiresAt","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","autoPublish","sloTarget","sloWindowDays","status","derivedStatus","assertedStatus","manualOverride","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoPublish":{"type":"boolean"},"sloTarget":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sloWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"derivedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"assertedStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"by":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["by","at","reason","expiresAt","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","autoPublish","sloTarget","sloWindowDays","status","derivedStatus","assertedStatus","manualOverride","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/components/{componentSlug}/bindings":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["UPTIME_MONITOR","CRON_MONITOR","ISSUE_QUERY","RELEASE_HEALTH","MANUAL"]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"config":{},"severityMap":{},"lastEvaluatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDetail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","kind","targetId","projectId","config","severityMap","lastEvaluatedAt","lastDetail"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["UPTIME_MONITOR","CRON_MONITOR","ISSUE_QUERY","RELEASE_HEALTH","MANUAL"]},"targetId":{"type":"string","minLength":1},"projectId":{"type":"string","minLength":1},"config":{},"severityMap":{"type":"object","additionalProperties":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]}}},"required":["kind"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["UPTIME_MONITOR","CRON_MONITOR","ISSUE_QUERY","RELEASE_HEALTH","MANUAL"]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"config":{},"severityMap":{},"lastEvaluatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDetail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","kind","targetId","projectId","config","severityMap","lastEvaluatedAt","lastDetail"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/components/{componentSlug}/bindings/{bindingId}":{"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"config":{},"severityMap":{"type":"object","additionalProperties":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]}}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"bindingId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["UPTIME_MONITOR","CRON_MONITOR","ISSUE_QUERY","RELEASE_HEALTH","MANUAL"]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"config":{},"severityMap":{},"lastEvaluatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDetail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","kind","targetId","projectId","config","severityMap","lastEvaluatedAt","lastDetail"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"bindingId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/components/{componentSlug}/bindings/{bindingId}/test":{"post":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"componentSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"bindingId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"contributed":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detail":{"type":"string"},"value":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["contributed","detail","value"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"in":"query","name":"status","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoDrafted":{"type":"boolean"},"autoPublished":{"type":"boolean"},"firstPublishLatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postmortemBody":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postmortemPublishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"componentIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","detectedAt","autoDrafted","autoPublished","firstPublishLatencyMs","postmortemBody","postmortemPublishedAt","componentIds","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"status":{"default":"INVESTIGATING","type":"string","enum":["INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"default":"MINOR","type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"body":{"type":"string","minLength":1,"maxLength":20000},"componentSlugs":{"default":[],"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"componentStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"publish":{"default":false,"type":"boolean"}},"required":["title"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoDrafted":{"type":"boolean"},"autoPublished":{"type":"boolean"},"firstPublishLatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postmortemBody":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postmortemPublishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"refId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publiclyVisible":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","kind","refId","label","url","publiclyVisible","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","detectedAt","autoDrafted","autoPublished","firstPublishLatencyMs","postmortemBody","postmortemPublishedAt","componentIds","updates","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoDrafted":{"type":"boolean"},"autoPublished":{"type":"boolean"},"firstPublishLatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postmortemBody":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postmortemPublishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"refId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publiclyVisible":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","kind","refId","label","url","publiclyVisible","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","detectedAt","autoDrafted","autoPublished","firstPublishLatencyMs","postmortemBody","postmortemPublishedAt","componentIds","updates","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"componentSlugs":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"componentStatus":{"type":"string","enum":["UNKNOWN","OPERATIONAL","DEGRADED_PERFORMANCE","PARTIAL_OUTAGE","MAJOR_OUTAGE","UNDER_MAINTENANCE"]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoDrafted":{"type":"boolean"},"autoPublished":{"type":"boolean"},"firstPublishLatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postmortemBody":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postmortemPublishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"refId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publiclyVisible":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","kind","refId","label","url","publiclyVisible","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","detectedAt","autoDrafted","autoPublished","firstPublishLatencyMs","postmortemBody","postmortemPublishedAt","componentIds","updates","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/publish":{"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":20000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoDrafted":{"type":"boolean"},"autoPublished":{"type":"boolean"},"firstPublishLatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postmortemBody":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postmortemPublishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"refId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publiclyVisible":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","kind","refId","label","url","publiclyVisible","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","detectedAt","autoDrafted","autoPublished","firstPublishLatencyMs","postmortemBody","postmortemPublishedAt","componentIds","updates","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/updates":{"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":20000},"status":{"type":"string","enum":["INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"notifySubscribers":{"default":true,"type":"boolean"},"drafted":{"default":false,"type":"boolean"}},"required":["body","status"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/updates/{updateId}":{"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":20000}},"required":["body"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"updateId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"updateId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/updates/{updateId}/revisions":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"updateId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"editedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","body","status","editedBy","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/postmortem":{"put":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":100000},"publish":{"default":true,"type":"boolean"}},"required":["body"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"impact":{"type":"string","enum":["NONE","MINOR","MAJOR","CRITICAL"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoDrafted":{"type":"boolean"},"autoPublished":{"type":"boolean"},"firstPublishLatencyMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"postmortemBody":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postmortemPublishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["DRAFT","INVESTIGATING","IDENTIFIED","MONITORING","RESOLVED","POSTMORTEM"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"},"editedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"notifySubscribers":{"type":"boolean"},"drafted":{"type":"boolean"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","body","status","displayAt","createdAt","editedAt","notifySubscribers","drafted","authorPrincipalId"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"refId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publiclyVisible":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","kind","refId","label","url","publiclyVisible","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","detectedAt","autoDrafted","autoPublished","firstPublishLatencyMs","postmortemBody","postmortemPublishedAt","componentIds","updates","evidence","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/evidence":{"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["issue","uptime_monitor","cron_monitor","release","url"]},"refId":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","minLength":1,"maxLength":300},"url":{"type":"string","maxLength":2048,"format":"uri"},"publiclyVisible":{"default":false,"type":"boolean"}},"required":["kind","label"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"refId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publiclyVisible":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","kind","refId","label","url","publiclyVisible","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/incidents/{number}/evidence/{evidenceId}":{"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"evidenceId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/maintenances":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"scheduledFor":{"type":"string"},"scheduledUntil":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"excludeFromUptime":{"type":"boolean"},"createdDuringWindow":{"type":"boolean"},"autoTransition":{"type":"boolean"},"notifySubscribers":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","number","title","status","scheduledFor","scheduledUntil","startedAt","completedAt","excludeFromUptime","createdDuringWindow","autoTransition","notifySubscribers","componentIds","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"body":{"type":"string","minLength":1,"maxLength":20000},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scheduledUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"componentSlugs":{"default":[],"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"excludeFromUptime":{"default":true,"type":"boolean"},"autoTransition":{"default":true,"type":"boolean"},"notifySubscribers":{"default":true,"type":"boolean"}},"required":["title","scheduledFor","scheduledUntil"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"scheduledFor":{"type":"string"},"scheduledUntil":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"excludeFromUptime":{"type":"boolean"},"createdDuringWindow":{"type":"boolean"},"autoTransition":{"type":"boolean"},"notifySubscribers":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","body","status","displayAt","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","number","title","status","scheduledFor","scheduledUntil","startedAt","completedAt","excludeFromUptime","createdDuringWindow","autoTransition","notifySubscribers","componentIds","updates","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/maintenances/{number}":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"scheduledFor":{"type":"string"},"scheduledUntil":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"excludeFromUptime":{"type":"boolean"},"createdDuringWindow":{"type":"boolean"},"autoTransition":{"type":"boolean"},"notifySubscribers":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","body","status","displayAt","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","number","title","status","scheduledFor","scheduledUntil","startedAt","completedAt","excludeFromUptime","createdDuringWindow","autoTransition","notifySubscribers","componentIds","updates","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scheduledUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"componentSlugs":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"excludeFromUptime":{"type":"boolean"},"autoTransition":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"scheduledFor":{"type":"string"},"scheduledUntil":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"excludeFromUptime":{"type":"boolean"},"createdDuringWindow":{"type":"boolean"},"autoTransition":{"type":"boolean"},"notifySubscribers":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","body","status","displayAt","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","number","title","status","scheduledFor","scheduledUntil","startedAt","completedAt","excludeFromUptime","createdDuringWindow","autoTransition","notifySubscribers","componentIds","updates","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/maintenances/{number}/updates":{"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":20000},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"displayAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["body","status"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["SCHEDULED","IN_PROGRESS","VERIFYING","COMPLETED"]},"displayAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","body","status","displayAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/uptime":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"componentSlug","required":false},{"schema":{"default":90,"type":"integer","minimum":1,"maximum":365},"in":"query","name":"days","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"componentSlug":{"type":"string"},"componentName":{"type":"string"},"summary":{"type":"object","properties":{"windowFrom":{"type":"string"},"windowTo":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysWithData":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverageRatio":{"type":"number"},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recordedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"ratioExcludingMaintenance":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p50LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p95LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["windowFrom","windowTo","windowDays","daysWithData","coverageRatio","checks","successes","checkRatio","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","recordedSeconds","ratio","ratioExcludingMaintenance","p50LatencyMs","p95LatencyMs"],"additionalProperties":false},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"status":{"anyOf":[{"type":"string","enum":["operational","degraded","down","maintenance"]},{"nullable":true,"enum":[null]}]},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["day","status","checks","successes","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","ratio"],"additionalProperties":false}}},"required":["componentSlug","componentName","summary","days"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/subscribers":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["EMAIL","WEBHOOK","SLACK"]},"destination":{"type":"string"},"confirmedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"unsubscribedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bouncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bounceReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"allComponents":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","kind","destination","confirmedAt","unsubscribedAt","bouncedAt","bounceReason","allComponents","componentIds","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/subscribers/{subscriberId}":{"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"subscriberId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/subscribers/{subscriberId}/deliveries":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"subscriberId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"eventKind":{"type":"string"},"eventId":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"nextAttemptAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","eventKind","eventId","status","attempts","lastError","nextAttemptAt","deliveredAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/metrics":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"subscribers":{"type":"object","properties":{"confirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["confirmed","pending","bounced"],"additionalProperties":false},"deliveries":{"type":"object","properties":{"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["delivered","pending","dead"],"additionalProperties":false},"incidents":{"type":"object","properties":{"published":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"drafts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"medianTimeToPublishMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"overdueDrafts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["published","open","drafts","medianTimeToPublishMs","overdueDrafts"],"additionalProperties":false},"components":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unknown":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overridden":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contradicted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","unknown","overridden","contradicted"],"additionalProperties":false}},"required":["subscribers","deliveries","incidents","components"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/domain":{"post":{"tags":["status-pages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":4,"maxLength":253,"pattern":"^(?!-)[a-z0-9-]{1,63}(?<!-)(\\.(?!-)[a-z0-9-]{1,63}(?<!-))+$"}},"required":["domain"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checkedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"records":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":false}},{"nullable":true,"enum":[null]}]}},"required":["domain","verifiedAt","checkedAt","records"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checkedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"records":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":false}},{"nullable":true,"enum":[null]}]}},"required":["domain","verifiedAt","checkedAt","records"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/status-pages/{pageSlug}/domain/verify":{"get":{"tags":["status-pages"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"verified":{"type":"boolean"},"cnameOk":{"type":"boolean"},"txtOk":{"type":"boolean"},"detail":{"type":"string"},"state":{"type":"object","properties":{"domain":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verifiedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checkedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"records":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":false}},{"nullable":true,"enum":[null]}]}},"required":["domain","verifiedAt","checkedAt","records"],"additionalProperties":false}},"required":["verified","cnameOk","txtOk","detail","state"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/release-health":{"get":{"tags":["release-health"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"environment","required":false},{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totals":{"type":"object","properties":{"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"erroredSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"abnormalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthySessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"totalUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["totalSessions","crashedSessions","erroredSessions","abnormalSessions","healthySessions","crashFreeSessionRate","totalUsers","crashedUsers","crashFreeUserRate"],"additionalProperties":false},"releases":{"type":"array","items":{"type":"object","properties":{"releaseVersion":{"type":"string"},"firstSessionAt":{"type":"string"},"totals":{"type":"object","properties":{"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"erroredSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"abnormalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthySessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"totalUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["totalSessions","crashedSessions","erroredSessions","abnormalSessions","healthySessions","crashFreeSessionRate","totalUsers","crashedUsers","crashFreeUserRate"],"additionalProperties":false},"adoptionRate":{"type":"number"}},"required":["releaseVersion","firstSessionAt","totals","adoptionRate"],"additionalProperties":false}}},"required":["environment","totalSessions","totals","releases"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/release-health/{version}":{"get":{"tags":["release-health"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"environment","required":false},{"schema":{"default":1,"type":"integer","minimum":1,"maximum":24},"in":"query","name":"bucketHours","required":false},{"schema":{"default":24,"type":"integer","minimum":1,"maximum":168},"in":"query","name":"buckets","required":false},{"schema":{"type":"number","minimum":0,"maximum":2160},"in":"query","name":"stageHours","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"version","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"releaseVersion":{"type":"string"},"environment":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"firstSessionAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSessionAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"totals":{"type":"object","properties":{"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"erroredSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"abnormalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthySessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"totalUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["totalSessions","crashedSessions","erroredSessions","abnormalSessions","healthySessions","crashFreeSessionRate","totalUsers","crashedUsers","crashFreeUserRate"],"additionalProperties":false},"adoptionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"adoption":{"type":"array","items":{"type":"object","properties":{"hoursSinceRelease":{"type":"number"},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cumulativeSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"users":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cumulativeUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cumulativeCrashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["hoursSinceRelease","sessions","cumulativeSessions","users","cumulativeUsers","crashedSessions","cumulativeCrashFreeSessionRate"],"additionalProperties":false}},"comparison":{"anyOf":[{"type":"object","properties":{"stageHours":{"type":"number"},"current":{"type":"object","properties":{"releaseVersion":{"type":"string"},"stageHours":{"type":"number"},"totals":{"type":"object","properties":{"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"erroredSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"abnormalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthySessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"totalUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["totalSessions","crashedSessions","erroredSessions","abnormalSessions","healthySessions","crashFreeSessionRate","totalUsers","crashedUsers","crashFreeUserRate"],"additionalProperties":false}},"required":["releaseVersion","stageHours","totals"],"additionalProperties":false},"previous":{"anyOf":[{"type":"object","properties":{"releaseVersion":{"type":"string"},"stageHours":{"type":"number"},"totals":{"type":"object","properties":{"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"erroredSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"abnormalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthySessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"totalUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["totalSessions","crashedSessions","erroredSessions","abnormalSessions","healthySessions","crashFreeSessionRate","totalUsers","crashedUsers","crashFreeUserRate"],"additionalProperties":false}},"required":["releaseVersion","stageHours","totals"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"crashFreeSessionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeUserDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"regression":{"type":"boolean"}},"required":["stageHours","current","previous","crashFreeSessionDelta","crashFreeUserDelta","regression"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["releaseVersion","environment","firstSessionAt","lastSessionAt","totals","adoptionRate","adoption","comparison"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/releases":{"post":{"tags":["releases"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string","minLength":1,"maxLength":200},"ref":{"type":"string","minLength":1,"maxLength":200},"commitSha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"url":{"type":"string","maxLength":2000,"format":"uri"},"releasedAt":{}},"required":["version"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string"},"ref":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"commitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releasedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","version","ref","commitSha","url","releasedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["releases"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"environment","required":false},{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string"},"ref":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"commitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releasedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"deploys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"releaseId":{"type":"string"},"environment":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deployedAt":{"type":"string"}},"required":["id","releaseId","environment","name","deployedAt"],"additionalProperties":false}}},"required":["id","version","ref","commitSha","url","releasedAt","createdAt","deploys"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/releases/{version}/deploys":{"post":{"tags":["releases"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"deployedAt":{}},"required":["environment"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"version","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"releaseId":{"type":"string"},"environment":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deployedAt":{"type":"string"}},"required":["id","releaseId","environment","name","deployedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/rollout-providers":{"get":{"summary":"Rollout providers and whether they can actually halt anything","tags":["rollouts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"implemented":{"type":"boolean"}},"required":["name","description","implemented"],"additionalProperties":false}}},"required":["providers"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts":{"get":{"tags":["rollouts"],"parameters":[{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"rollouts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"externalRef":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"cohortFraction":{"type":"number"},"status":{"type":"string"},"minSessions":{"type":"number"},"deltaThreshold":{"type":"number"},"maxPValue":{"type":"number"},"baselineVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltApprovalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspects":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","provider","externalRef","releaseVersion","environment","cohortFraction","status","minSessions","deltaThreshold","maxPValue","baselineVersion","haltApprovalRequestId","haltedAt","haltReason","haltIssueId","suspects","startedAt","lastCheckedAt"],"additionalProperties":false}}},"required":["rollouts"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["rollouts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"releaseVersion":{"type":"string","minLength":1,"maxLength":200},"environment":{"default":"production","type":"string","minLength":1,"maxLength":64},"provider":{"default":"generic","type":"string","minLength":1,"maxLength":64},"externalRef":{"anyOf":[{"type":"string","minLength":1,"maxLength":256},{"nullable":true,"enum":[null]}]},"providerConfig":{},"cohortFraction":{"default":0.01,"type":"number","minimum":0,"maximum":1},"minSessions":{"type":"integer","minimum":1,"maximum":1000000},"deltaThreshold":{"type":"number","minimum":0,"maximum":1},"maxPValue":{"type":"number","minimum":0,"maximum":1}},"required":["releaseVersion"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"externalRef":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"cohortFraction":{"type":"number"},"status":{"type":"string"},"minSessions":{"type":"number"},"deltaThreshold":{"type":"number"},"maxPValue":{"type":"number"},"baselineVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltApprovalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspects":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","provider","externalRef","releaseVersion","environment","cohortFraction","status","minSessions","deltaThreshold","maxPValue","baselineVersion","haltApprovalRequestId","haltedAt","haltReason","haltIssueId","suspects","startedAt","lastCheckedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts/{rolloutId}":{"get":{"tags":["rollouts"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"rolloutId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"externalRef":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"cohortFraction":{"type":"number"},"status":{"type":"string"},"minSessions":{"type":"number"},"deltaThreshold":{"type":"number"},"maxPValue":{"type":"number"},"baselineVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltApprovalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspects":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","provider","externalRef","releaseVersion","environment","cohortFraction","status","minSessions","deltaThreshold","maxPValue","baselineVersion","haltApprovalRequestId","haltedAt","haltReason","haltIssueId","suspects","startedAt","lastCheckedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts/{rolloutId}/checks":{"get":{"tags":["rollouts"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"rolloutId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"observedAt":{"type":"string"},"stageHours":{"type":"number"},"verdict":{"type":"string"},"detail":{"type":"string"},"currentSessions":{"type":"number"},"currentCrashed":{"type":"number"},"previousSessions":{"type":"number"},"previousCrashed":{"type":"number"},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"previousCrashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeSessionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pValue":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["id","observedAt","stageHours","verdict","detail","currentSessions","currentCrashed","previousSessions","previousCrashed","crashFreeSessionRate","previousCrashFreeSessionRate","crashFreeSessionDelta","pValue"],"additionalProperties":false}}},"required":["checks"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts/{rolloutId}/evaluate":{"post":{"tags":["rollouts"],"parameters":[{"schema":{"type":"number","minimum":0,"maximum":2160},"in":"query","name":"stageHours","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"rolloutId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"rollout":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"externalRef":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"cohortFraction":{"type":"number"},"status":{"type":"string"},"minSessions":{"type":"number"},"deltaThreshold":{"type":"number"},"maxPValue":{"type":"number"},"baselineVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltApprovalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspects":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","provider","externalRef","releaseVersion","environment","cohortFraction","status","minSessions","deltaThreshold","maxPValue","baselineVersion","haltApprovalRequestId","haltedAt","haltReason","haltIssueId","suspects","startedAt","lastCheckedAt"],"additionalProperties":false},"assessment":{"type":"object","properties":{"verdict":{"type":"string"},"detail":{"type":"string"},"stageHours":{"type":"number"},"currentSessions":{"type":"number"},"currentCrashed":{"type":"number"},"previousSessions":{"type":"number"},"previousCrashed":{"type":"number"},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"previousCrashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeSessionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pValue":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"shouldHalt":{"type":"boolean"}},"required":["verdict","detail","stageHours","currentSessions","currentCrashed","previousSessions","previousCrashed","crashFreeSessionRate","previousCrashFreeSessionRate","crashFreeSessionDelta","pValue","shouldHalt"],"additionalProperties":false},"checkId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["rollout","assessment","checkId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts/{rolloutId}/halt":{"post":{"summary":"Halt a staged rollout (human approval required by default)","tags":["rollouts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2000},"force":{"default":false,"type":"boolean"},"stageHours":{"type":"number","minimum":0,"maximum":2160}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"rolloutId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"rollout":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"externalRef":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"cohortFraction":{"type":"number"},"status":{"type":"string"},"minSessions":{"type":"number"},"deltaThreshold":{"type":"number"},"maxPValue":{"type":"number"},"baselineVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltApprovalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspects":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","provider","externalRef","releaseVersion","environment","cohortFraction","status","minSessions","deltaThreshold","maxPValue","baselineVersion","haltApprovalRequestId","haltedAt","haltReason","haltIssueId","suspects","startedAt","lastCheckedAt"],"additionalProperties":false},"halted":{"type":"boolean"},"awaitingApproval":{"type":"boolean"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueShortId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"changeEventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspectRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"providerDetail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"alertError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assessment":{"type":"object","properties":{"verdict":{"type":"string"},"detail":{"type":"string"},"stageHours":{"type":"number"},"currentSessions":{"type":"number"},"currentCrashed":{"type":"number"},"previousSessions":{"type":"number"},"previousCrashed":{"type":"number"},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"previousCrashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeSessionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pValue":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"shouldHalt":{"type":"boolean"}},"required":["verdict","detail","stageHours","currentSessions","currentCrashed","previousSessions","previousCrashed","crashFreeSessionRate","previousCrashFreeSessionRate","crashFreeSessionDelta","pValue","shouldHalt"],"additionalProperties":false}},"required":["rollout","halted","awaitingApproval","approvalRequestId","reason","issueId","issueShortId","changeEventId","suspectRelease","providerDetail","alertError","assessment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts/{rolloutId}/status":{"post":{"tags":["rollouts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["COMPLETED","CANCELLED"]}},"required":["status"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"rolloutId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"externalRef":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"cohortFraction":{"type":"number"},"status":{"type":"string"},"minSessions":{"type":"number"},"deltaThreshold":{"type":"number"},"maxPValue":{"type":"number"},"baselineVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltApprovalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"haltIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"suspects":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"lastCheckedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","provider","externalRef","releaseVersion","environment","cohortFraction","status","minSessions","deltaThreshold","maxPValue","baselineVersion","haltApprovalRequestId","haltedAt","haltReason","haltIssueId","suspects","startedAt","lastCheckedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/rollouts/{rolloutId}/bisect":{"get":{"summary":"Suspect release and commits for this rollout","tags":["rollouts"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"rolloutId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"suspectRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detail":{"type":"string"},"anchorIssueShortId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"probes":{"type":"array","items":{"type":"object","properties":{"releaseVersion":{"type":"string"},"previousVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verdict":{"type":"string"},"crashFreeSessionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"currentSessions":{"type":"number"},"previousSessions":{"type":"number"},"detail":{"type":"string"}},"required":["releaseVersion","previousVersion","verdict","crashFreeSessionDelta","currentSessions","previousSessions","detail"],"additionalProperties":false}},"suspectCommits":{"type":"array","items":{"type":"object","properties":{"sha":{"type":"string"},"shortSha":{"type":"string"},"message":{"type":"string"},"author":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"score":{"type":"number"},"reason":{"type":"string"}},"required":["sha","shortSha","message","author","url","score","reason"],"additionalProperties":false}}},"required":["suspectRelease","detail","anchorIssueShortId","probes","suspectCommits"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/integrations/providers":{"get":{"tags":["integrations"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"displayName":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"providesAlertChannel":{"type":"boolean"},"supportsIssueLinks":{"type":"boolean"},"requiresProject":{"type":"boolean"},"usesWebhookSecret":{"type":"boolean"}},"required":["provider","displayName","capabilities","providesAlertChannel","supportsIssueLinks","requiresProject","usesWebhookSecret"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations":{"post":{"tags":["integrations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":32},"name":{"type":"string","minLength":1,"maxLength":120},"projectSlug":{"type":"string","minLength":1,"maxLength":64},"settings":{},"credentials":{}},"required":["provider","name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"integration":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"provider":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"settings":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"hasWebhookSecret":{"type":"boolean"},"connectedByPrincipalId":{"type":"string"},"lastWebhookAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","enabled","settings","hasCredentials","hasWebhookSecret","connectedByPrincipalId","lastWebhookAt","createdAt","updatedAt"],"additionalProperties":false},"webhookSecret":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"webhookUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["integration","webhookSecret","webhookUrl"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["integrations"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":32},"in":"query","name":"provider","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"provider":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"settings":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"hasWebhookSecret":{"type":"boolean"},"connectedByPrincipalId":{"type":"string"},"lastWebhookAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","enabled","settings","hasCredentials","hasWebhookSecret","connectedByPrincipalId","lastWebhookAt","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/integrations/chat/capabilities":{"get":{"tags":["integrations"],"description":"Reachable without a Bucker session token. Static capability matrix; the same bytes for everyone.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string"},"displayName":{"type":"string"},"servedBy":{"type":"string","enum":["platform","webhook"]},"capabilities":{"type":"object","properties":{"buttons":{"type":"string","enum":["interactive","link_only","none"]},"threads":{"type":"string","enum":["native","topic","none"]},"updateInPlace":{"type":"boolean"},"ephemeral":{"type":"boolean"},"maxEmbeds":{"type":"number"},"perDestinationRatePerSecond":{"type":"number"},"memberEmail":{"type":"boolean"},"dataTable":{"type":"boolean"},"carousel":{"type":"boolean"}},"required":["buttons","threads","updateInPlace","ephemeral","maxEmbeds","perDestinationRatePerSecond","memberEmail"],"additionalProperties":false}},"required":["platform","displayName","servedBy","capabilities"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations/{integrationId}":{"patch":{"tags":["integrations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"settings":{},"credentials":{}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"integrationId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"provider":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"settings":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"hasWebhookSecret":{"type":"boolean"},"connectedByPrincipalId":{"type":"string"},"lastWebhookAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","enabled","settings","hasCredentials","hasWebhookSecret","connectedByPrincipalId","lastWebhookAt","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["integrations"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"integrationId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations/sync":{"post":{"tags":["integrations"],"parameters":[{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"examined":{"type":"number"},"synced":{"type":"number"},"skipped":{"type":"number"},"failed":{"type":"number"}},"required":["examined","synced","skipped","failed"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/flag-events":{"post":{"tags":["flag-events"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"flagKey":{"type":"string","minLength":1,"maxLength":200},"enabled":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"environment":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"nullable":true,"enum":[null]}]},"actor":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"nullable":true,"enum":[null]}]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"detail":{"anyOf":[{"type":"string","maxLength":300},{"nullable":true,"enum":[null]}]},"source":{"type":"string","minLength":1,"maxLength":40}},"required":["flagKey"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"summary":{"type":"string"}},"required":["id","summary"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/links":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"integrationId":{"type":"string","minLength":1,"maxLength":64},"options":{}},"required":["integrationId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"integrationId":{"type":"string"},"provider":{"type":"string"},"externalKey":{"type":"string"},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"externalStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"syncedStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","issueId","integrationId","provider","externalKey","externalId","url","externalStatus","syncedStatus","lastSyncedAt","createdAt"],"additionalProperties":false},"created":{"type":"boolean"}},"required":["link","created"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"integrationId":{"type":"string"},"provider":{"type":"string"},"externalKey":{"type":"string"},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"externalStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"syncedStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","issueId","integrationId","provider","externalKey","externalId","url","externalStatus","syncedStatus","lastSyncedAt","createdAt"],"additionalProperties":false},"created":{"type":"boolean"}},"required":["link","created"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"integrationId":{"type":"string"},"provider":{"type":"string"},"externalKey":{"type":"string"},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"externalStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"syncedStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSyncedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","issueId","integrationId","provider","externalKey","externalId","url","externalStatus","syncedStatus","lastSyncedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/flags":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"flagKey":{"type":"string"},"value":{"type":"string"},"evaluations":{"type":"number"},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["flagKey","value","evaluations","firstSeen","lastSeen"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/integrations/{integrationId}":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Per-integration HMAC over the raw body is the authentication.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"integrationId","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"received":{"type":"boolean"},"event":{"type":"string"},"changeEventsCreated":{"type":"number"},"issuesUpdated":{"type":"number"},"linksUpdated":{"type":"number"}},"required":["received","event","changeEventsCreated","issuesUpdated","linksUpdated"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations/slack/install":{"get":{"tags":["integrations"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations/slack/user-map":{"put":{"tags":["integrations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slackUserId":{"type":"string","minLength":1,"maxLength":40},"principalId":{"type":"string","minLength":1,"maxLength":64},"integrationId":{"type":"string","minLength":1,"maxLength":64}},"required":["slackUserId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"integrationId":{"type":"string"},"slackUserId":{"type":"string"},"principalId":{"type":"string"},"settings":{"type":"object","additionalProperties":{}}},"required":["integrationId","slackUserId","principalId","settings"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/slack/interactivity":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Slack signing secret over the raw body is the authentication.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/slack/commands":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Slack signing secret over the raw body is the authentication.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"response_type":{"type":"string"},"text":{"type":"string"},"blocks":{"type":"array","items":{}}},"required":["response_type","text"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/slack/events":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Slack signing secret over the raw body is the authentication.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"challenge":{"type":"string"}},"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/integrations/discord/install":{"get":{"tags":["integrations"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/discord/interactions":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Discord ed25519 signature over the exact bytes is the authentication.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"number"},"data":{"type":"object","properties":{"content":{"type":"string"},"flags":{"type":"number"}},"required":["content"],"additionalProperties":false}},"required":["type"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/dashboards/widget-types":{"get":{"tags":["dashboards"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["type","sources"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dashboards":{"post":{"tags":["dashboards"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]},"projectSlug":{"type":"string","minLength":1,"maxLength":64},"widgets":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","minLength":1,"maxLength":120},"config":{"type":"object","additionalProperties":{}},"position":{"type":"integer","minimum":0,"maximum":999}},"required":["type","title"]}}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"config":{"type":"object","additionalProperties":{}},"position":{"type":"number"}},"required":["id","type","title","config","position"],"additionalProperties":false}}},"required":["id","orgId","projectId","name","description","createdByPrincipalId","createdAt","updatedAt","widgets"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["dashboards"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"config":{"type":"object","additionalProperties":{}},"position":{"type":"number"}},"required":["id","type","title","config","position"],"additionalProperties":false}}},"required":["id","orgId","projectId","name","description","createdByPrincipalId","createdAt","updatedAt","widgets"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dashboards/{dashboardId}":{"get":{"tags":["dashboards"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dashboardId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"config":{"type":"object","additionalProperties":{}},"position":{"type":"number"}},"required":["id","type","title","config","position"],"additionalProperties":false}}},"required":["id","orgId","projectId","name","description","createdByPrincipalId","createdAt","updatedAt","widgets"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["dashboards"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]},"widgets":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","minLength":1,"maxLength":120},"config":{"type":"object","additionalProperties":{}},"position":{"type":"integer","minimum":0,"maximum":999}},"required":["type","title"]}}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dashboardId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"config":{"type":"object","additionalProperties":{}},"position":{"type":"number"}},"required":["id","type","title","config","position"],"additionalProperties":false}}},"required":["id","orgId","projectId","name","description","createdByPrincipalId","createdAt","updatedAt","widgets"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["dashboards"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dashboardId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dashboards/{dashboardId}/data":{"get":{"tags":["dashboards"],"parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":90},"in":"query","name":"days","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"dashboardId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"dashboard":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"config":{"type":"object","additionalProperties":{}},"position":{"type":"number"}},"required":["id","type","title","config","position"],"additionalProperties":false}}},"required":["id","orgId","projectId","name","description","createdByPrincipalId","createdAt","updatedAt","widgets"],"additionalProperties":false},"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"results":{"type":"array","items":{"type":"object","properties":{"widgetId":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"result":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"series":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"value":{"type":"number"}},"required":["bucket","value"],"additionalProperties":false}}},"required":["name","points"],"additionalProperties":false}},"rows":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]}}},"totals":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]}}},"required":["type","range"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["widgetId","type","title","result","error"],"additionalProperties":false}}},"required":["dashboard","range","results"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/widget-preview":{"post":{"tags":["widget-preview"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":60},"config":{"type":"object","additionalProperties":{}},"projectSlug":{"type":"string","minLength":1,"maxLength":64}},"required":["type"]}}}},"parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":90},"in":"query","name":"days","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"series":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"value":{"type":"number"}},"required":["bucket","value"],"additionalProperties":false}}},"required":["name","points"],"additionalProperties":false}},"rows":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]}}},"totals":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]}}},"required":["type","range"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/views":{"get":{"tags":["views"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"projectSlug","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ownerPrincipalId":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"filter":{"type":"object","properties":{"state":{"type":"object","properties":{"query":{"default":"","type":"string","maxLength":500},"environment":{"default":"","type":"string","maxLength":200},"release":{"default":"","type":"string","maxLength":200},"assignee":{"default":"any","type":"string","maxLength":200},"status":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]}},"level":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["fatal","error","warning","info","debug"]}},"sort":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"order":{"default":"desc","type":"string","enum":["asc","desc"]}},"required":["query","environment","release","assignee","status","level","sort","order"],"additionalProperties":false},"columns":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["state","columns"],"additionalProperties":false},"visibility":{"type":"string","enum":["PRIVATE","ORG"]},"pinned":{"type":"boolean"},"editable":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","ownerPrincipalId","name","slug","filter","visibility","pinned","editable","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["views"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"projectSlug":{"type":"string","minLength":1,"maxLength":64},"filter":{"type":"object","properties":{"state":{"type":"object","properties":{"query":{"default":"","type":"string","maxLength":500},"environment":{"default":"","type":"string","maxLength":200},"release":{"default":"","type":"string","maxLength":200},"assignee":{"default":"any","type":"string","maxLength":200},"status":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]}},"level":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["fatal","error","warning","info","debug"]}},"sort":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"order":{"default":"desc","type":"string","enum":["asc","desc"]}}},"columns":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["state"]},"visibility":{"default":"PRIVATE","type":"string","enum":["PRIVATE","ORG"]},"pinned":{"default":false,"type":"boolean"}},"required":["name","filter"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ownerPrincipalId":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"filter":{"type":"object","properties":{"state":{"type":"object","properties":{"query":{"default":"","type":"string","maxLength":500},"environment":{"default":"","type":"string","maxLength":200},"release":{"default":"","type":"string","maxLength":200},"assignee":{"default":"any","type":"string","maxLength":200},"status":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]}},"level":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["fatal","error","warning","info","debug"]}},"sort":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"order":{"default":"desc","type":"string","enum":["asc","desc"]}},"required":["query","environment","release","assignee","status","level","sort","order"],"additionalProperties":false},"columns":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["state","columns"],"additionalProperties":false},"visibility":{"type":"string","enum":["PRIVATE","ORG"]},"pinned":{"type":"boolean"},"editable":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","ownerPrincipalId","name","slug","filter","visibility","pinned","editable","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/views/{viewId}":{"patch":{"tags":["views"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"filter":{"type":"object","properties":{"state":{"type":"object","properties":{"query":{"default":"","type":"string","maxLength":500},"environment":{"default":"","type":"string","maxLength":200},"release":{"default":"","type":"string","maxLength":200},"assignee":{"default":"any","type":"string","maxLength":200},"status":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]}},"level":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["fatal","error","warning","info","debug"]}},"sort":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"order":{"default":"desc","type":"string","enum":["asc","desc"]}}},"columns":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["state"]},"visibility":{"type":"string","enum":["PRIVATE","ORG"]},"pinned":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"viewId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ownerPrincipalId":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"filter":{"type":"object","properties":{"state":{"type":"object","properties":{"query":{"default":"","type":"string","maxLength":500},"environment":{"default":"","type":"string","maxLength":200},"release":{"default":"","type":"string","maxLength":200},"assignee":{"default":"any","type":"string","maxLength":200},"status":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]}},"level":{"default":[],"maxItems":5,"type":"array","items":{"type":"string","enum":["fatal","error","warning","info","debug"]}},"sort":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"order":{"default":"desc","type":"string","enum":["asc","desc"]}},"required":["query","environment","release","assignee","status","level","sort","order"],"additionalProperties":false},"columns":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["state","columns"],"additionalProperties":false},"visibility":{"type":"string","enum":["PRIVATE","ORG"]},"pinned":{"type":"boolean"},"editable":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","ownerPrincipalId","name","slug","filter","visibility","pinned","editable","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["views"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"viewId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/billing/plans":{"get":{"tags":["billing"],"description":"Reachable without a Bucker session token. Static plan catalogue; the same bytes for everyone.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"name":{"type":"string"},"monthlyPriceCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"includedEventsPerMonth":{"type":"number"},"retentionDays":{"type":"number"},"seats":{"type":"object","properties":{"humans":{"type":"string","enum":["unlimited"]},"agents":{"anyOf":[{"type":"number"},{"type":"string","enum":["unlimited"]}]}},"required":["humans","agents"],"additionalProperties":false},"features":{"type":"object","properties":{"sso":{"type":"boolean"},"scim":{"type":"boolean"},"auditApi":{"type":"boolean"},"customRoles":{"type":"boolean"},"allIntegrations":{"type":"boolean"},"euRegion":{"type":"boolean"},"siemStreaming":{"type":"boolean"},"breakGlass":{"type":"boolean"},"selfHostCe":{"type":"boolean"},"dpa":{"type":"boolean"},"cronMonitors":{"type":"boolean"},"uptimeMonitors":{"type":"boolean"},"userFeedback":{"type":"boolean"},"sessionReplay":{"type":"boolean"}},"required":["sso","scim","auditApi","customRoles","allIntegrations","euRegion","siemStreaming","breakGlass","selfHostCe","dpa","cronMonitors","uptimeMonitors","userFeedback","sessionReplay"],"additionalProperties":false},"support":{"type":"string","enum":["community","email","email_slack","dedicated"]},"includedVerifiedFixes":{"type":"number"},"perVerifiedFixCents":{"type":"number"},"byoLlmKeyAvailable":{"type":"boolean"},"creditsRollOver":{"type":"boolean"},"creditsExpireAfterDays":{"nullable":true,"enum":[null]},"requiresPaymentMethod":{"type":"boolean"},"capsDefaultOn":{"type":"boolean"}},"required":["tier","name","monthlyPriceCents","includedEventsPerMonth","retentionDays","seats","features","support","includedVerifiedFixes","perVerifiedFixCents","byoLlmKeyAvailable","creditsRollOver","creditsExpireAfterDays","requiresPaymentMethod","capsDefaultOn"],"additionalProperties":false}}},"required":["plans"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/subscription":{"get":{"tags":["billing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planName":{"type":"string"},"status":{"type":"string"},"currentPeriodStart":{"type":"string"},"currentPeriodEnd":{"type":"string"},"pendingPlan":{"anyOf":[{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},{"nullable":true,"enum":[null]}]},"pendingPlanEffectiveAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"rolloverCredits":{"type":"number"},"includedVerifiedFixes":{"type":"number"},"includedEventsPerMonth":{"type":"number"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"},"seats":{"type":"object","properties":{"humans":{"type":"string","enum":["unlimited"]},"agents":{"anyOf":[{"type":"number"},{"type":"string","enum":["unlimited"]}]}},"required":["humans","agents"],"additionalProperties":false},"payment":{"type":"object","properties":{"provider":{"type":"string"},"configured":{"type":"boolean"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","configured","message"],"additionalProperties":false}},"required":["orgId","plan","planName","status","currentPeriodStart","currentPeriodEnd","pendingPlan","pendingPlanEffectiveAt","capsEnabled","byoLlmKey","rolloverCredits","includedVerifiedFixes","includedEventsPerMonth","aiMonthlyBudgetCents","aiBudgetHardCap","seats","payment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["billing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"}},"required":["plan"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"subscription":{"type":"object","properties":{"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planName":{"type":"string"},"status":{"type":"string"},"currentPeriodStart":{"type":"string"},"currentPeriodEnd":{"type":"string"},"pendingPlan":{"anyOf":[{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},{"nullable":true,"enum":[null]}]},"pendingPlanEffectiveAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"rolloverCredits":{"type":"number"},"includedVerifiedFixes":{"type":"number"},"includedEventsPerMonth":{"type":"number"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"},"seats":{"type":"object","properties":{"humans":{"type":"string","enum":["unlimited"]},"agents":{"anyOf":[{"type":"number"},{"type":"string","enum":["unlimited"]}]}},"required":["humans","agents"],"additionalProperties":false},"payment":{"type":"object","properties":{"provider":{"type":"string"},"configured":{"type":"boolean"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","configured","message"],"additionalProperties":false}},"required":["orgId","plan","planName","status","currentPeriodStart","currentPeriodEnd","pendingPlan","pendingPlanEffectiveAt","capsEnabled","byoLlmKey","rolloverCredits","includedVerifiedFixes","includedEventsPerMonth","aiMonthlyBudgetCents","aiBudgetHardCap","seats","payment"],"additionalProperties":false},"quote":{"type":"object","properties":{"fromPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"toPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"immediate":{"type":"boolean"},"effectiveAt":{"type":"string"},"remainingFraction":{"type":"number"},"creditCents":{"type":"number"},"chargeCents":{"type":"number"},"netCents":{"type":"number"},"requiresSalesContact":{"type":"boolean"},"explanation":{"type":"string"}},"required":["fromPlan","toPlan","immediate","effectiveAt","remainingFraction","creditCents","chargeCents","netCents","requiresSalesContact","explanation"],"additionalProperties":false},"payment":{"type":"object","properties":{"provider":{"type":"string"},"configured":{"type":"boolean"},"status":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","configured","status","message"],"additionalProperties":false}},"required":["subscription","quote","payment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/subscription/preview":{"post":{"tags":["billing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]}},"required":["plan"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"fromPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"toPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"immediate":{"type":"boolean"},"effectiveAt":{"type":"string"},"remainingFraction":{"type":"number"},"creditCents":{"type":"number"},"chargeCents":{"type":"number"},"netCents":{"type":"number"},"requiresSalesContact":{"type":"boolean"},"explanation":{"type":"string"},"payment":{"type":"object","properties":{"configured":{"type":"boolean"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["configured","message"],"additionalProperties":false}},"required":["fromPlan","toPlan","immediate","effectiveAt","remainingFraction","creditCents","chargeCents","netCents","requiresSalesContact","explanation","payment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/settings":{"patch":{"tags":["billing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planName":{"type":"string"},"status":{"type":"string"},"currentPeriodStart":{"type":"string"},"currentPeriodEnd":{"type":"string"},"pendingPlan":{"anyOf":[{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},{"nullable":true,"enum":[null]}]},"pendingPlanEffectiveAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"rolloverCredits":{"type":"number"},"includedVerifiedFixes":{"type":"number"},"includedEventsPerMonth":{"type":"number"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"},"seats":{"type":"object","properties":{"humans":{"type":"string","enum":["unlimited"]},"agents":{"anyOf":[{"type":"number"},{"type":"string","enum":["unlimited"]}]}},"required":["humans","agents"],"additionalProperties":false},"payment":{"type":"object","properties":{"provider":{"type":"string"},"configured":{"type":"boolean"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","configured","message"],"additionalProperties":false}},"required":["orgId","plan","planName","status","currentPeriodStart","currentPeriodEnd","pendingPlan","pendingPlanEffectiveAt","capsEnabled","byoLlmKey","rolloverCredits","includedVerifiedFixes","includedEventsPerMonth","aiMonthlyBudgetCents","aiBudgetHardCap","seats","payment"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/changes":{"get":{"tags":["billing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"changes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fromPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"toPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"effectiveAt":{"type":"string"},"immediate":{"type":"boolean"},"prorationCreditCents":{"type":"number"},"prorationChargeCents":{"type":"number"},"netCents":{"type":"number"},"paymentStatus":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","fromPlan","toPlan","effectiveAt","immediate","prorationCreditCents","prorationChargeCents","netCents","paymentStatus","createdAt"],"additionalProperties":false}}},"required":["changes"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/usage":{"get":{"tags":["billing"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"capsEnabled":{"type":"boolean"},"events":{"type":"object","properties":{"accepted":{"type":"number"},"sampled":{"type":"number"},"billable":{"type":"number"},"dropped":{"type":"number"},"limit":{"type":"number"},"percentOfLimit":{"type":"number"},"overageChargeCents":{"type":"number"}},"required":["accepted","sampled","billable","dropped","limit","percentOfLimit","overageChargeCents"],"additionalProperties":false},"byCategory":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"accepted":{"type":"number"},"sampled":{"type":"number"},"billable":{"type":"number"},"dropped":{"type":"number"}},"required":["category","accepted","sampled","billable","dropped"],"additionalProperties":false}},"ai":{"type":"object","properties":{"tokens":{"type":"number"},"sandboxMinutes":{"type":"number"},"meteredSpendCents":{"type":"number"},"verifiedFixes":{"type":"object","properties":{"included":{"type":"number"},"rollover":{"type":"number"},"metered":{"type":"number"},"total":{"type":"number"}},"required":["included","rollover","metered","total"],"additionalProperties":false},"fixChargesCents":{"type":"number"},"includedAllotment":{"type":"number"},"rolloverCredits":{"type":"number"},"remainingIncluded":{"type":"number"}},"required":["tokens","sandboxMinutes","meteredSpendCents","verifiedFixes","fixChargesCents","includedAllotment","rolloverCredits","remainingIncluded"],"additionalProperties":false}},"required":["orgId","plan","period","capsEnabled","events","byCategory","ai"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/usage/series":{"get":{"tags":["billing"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"accepted":{"type":"number"},"sampled":{"type":"number"},"billable":{"type":"number"},"dropped":{"type":"number"}},"required":["day","accepted","sampled","billable","dropped"],"additionalProperties":false}}},"required":["points"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/drops":{"get":{"tags":["billing"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"accepted":{"type":"number"},"sampled":{"type":"number"},"sampledExplanation":{"type":"string"},"totalDropped":{"type":"number"},"drops":{"type":"array","items":{"type":"object","properties":{"outcome":{"type":"string"},"category":{"type":"string"},"quantity":{"type":"number"},"explanation":{"type":"string"},"billed":{"type":"boolean"}},"required":["outcome","category","quantity","explanation","billed"],"additionalProperties":false}},"unattributed":{"type":"number"}},"required":["orgId","period","accepted","sampled","sampledExplanation","totalDropped","drops","unattributed"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/invoice-lines":{"get":{"tags":["billing"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"totalCents":{"type":"number"},"lines":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"runId":{"type":"string"},"proposalId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"verificationTier":{"type":"string"},"coverage":{"type":"string","enum":["included","rollover","metered"]},"amountCents":{"type":"number"},"tokenCostCents":{"type":"number"},"sandboxCostCents":{"type":"number"},"byoLlmKey":{"type":"boolean"},"approvedByPrincipalId":{"type":"string"},"approvedAt":{"type":"string"},"mergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificateId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"periodStart":{"type":"string"},"periodEnd":{"type":"string"},"artifacts":{"type":"object","properties":{"reproTest":{"anyOf":[{"type":"object","properties":{"path":{"type":"string"},"hash":{"type":"string"},"command":{"type":"string"},"passedAfterPatch":{"type":"boolean"}},"required":["path","hash","command","passedAfterPatch"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sandboxRun":{"anyOf":[{"type":"object","properties":{"runId":{"type":"string"},"provider":{"type":"string"},"sandboxSeconds":{"type":"number"}},"required":["runId","provider","sandboxSeconds"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"suiteResult":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string"},"command":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"passed":{"type":"boolean"},"durationMs":{"type":"number"}},"required":["kind","command","passed","durationMs"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"certificate":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"signature":{"type":"string"},"algorithm":{"type":"string"},"tier":{"type":"string"}},"required":["id","signature","algorithm","tier"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"approver":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"displayName":{"type":"string"},"approvedAt":{"type":"string"}},"required":["principalId","displayName","approvedAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"patch":{"anyOf":[{"type":"object","properties":{"diffHash":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"filesChanged":{"type":"array","items":{"type":"string"}}},"required":["diffHash","filesChanged"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"tierStatement":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["reproTest","sandboxRun","suiteResult","certificate","approver","patch","tierStatement"],"additionalProperties":false},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","runId","proposalId","plan","verificationTier","coverage","amountCents","tokenCostCents","sandboxCostCents","byoLlmKey","approvedByPrincipalId","approvedAt","mergedAt","certificateId","periodStart","periodEnd","artifacts","createdAt"],"additionalProperties":false}}},"required":["period","totalCents","lines"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/budgets":{"get":{"tags":["billing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"limitCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"hardCap":{"type":"boolean"},"spentCents":{"type":"number"},"creditedCents":{"type":"number"},"netSpentCents":{"type":"number"},"remainingCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"includedAllotment":{"type":"number"},"includedUsed":{"type":"number"},"rolloverCredits":{"type":"number"},"wouldRefuseNextMeteredFix":{"type":"boolean"}},"required":["period","limitCents","hardCap","spentCents","creditedCents","netSpentCents","remainingCents","includedAllotment","includedUsed","rolloverCredits","wouldRefuseNextMeteredFix"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/billing/projects/{projectId}/quota":{"put":{"tags":["billing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"monthlyEventLimit":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"capsEnabled":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planLimit":{"type":"number"},"capsEnabled":{"type":"boolean"},"effectiveLimit":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"hardCeiling":{"type":"number"},"source":{"type":"string","enum":["plan","project_override"]}},"required":["projectId","orgId","plan","planLimit","capsEnabled","effectiveLimit","hardCeiling","source"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["billing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planLimit":{"type":"number"},"capsEnabled":{"type":"boolean"},"effectiveLimit":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"hardCeiling":{"type":"number"},"source":{"type":"string","enum":["plan","project_override"]}},"required":["projectId","orgId","plan","planLimit","capsEnabled","effectiveLimit","hardCeiling","source"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/webhooks/stripe":{"post":{"tags":["webhooks"],"description":"Reachable without a Bucker session token. Stripe signature over the raw body is the authentication.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"received":{"type":"boolean","enum":[true]},"eventId":{"type":"string"},"type":{"type":"string"},"handled":{"type":"boolean"},"duplicate":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["received","eventId","type","handled","duplicate","reason"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/durability":{"get":{"tags":["durability"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"integer","minimum":1,"maximum":730},"in":"query","name":"sinceDays","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"recentLimit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"windowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"overall":{"type":"object","properties":{"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["sampleSize","held","regressed","open","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"byCategory":{"type":"array","items":{"type":"object","properties":{"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"key":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"}},"required":["sampleSize","held","regressed","open","rate","confidence","sufficient","publishable","statement","key","label"],"additionalProperties":false}},"byModel":{"type":"array","items":{"type":"object","properties":{"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"key":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"}},"required":["sampleSize","held","regressed","open","rate","confidence","sufficient","publishable","statement","key","label"],"additionalProperties":false}},"byAgent":{"type":"array","items":{"type":"object","properties":{"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"key":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"}},"required":["sampleSize","held","regressed","open","rate","confidence","sufficient","publishable","statement","key","label"],"additionalProperties":false}},"recent":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"proposalId":{"type":"string"},"status":{"type":"string","enum":["OPEN","HELD","REGRESSED","VOID"]},"category":{"type":"string"},"authorModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openedAt":{"type":"string"},"closesAt":{"type":"string"},"closedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"outcomeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"patchCommitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"crashFreeDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"failureKinds":{"type":"array","items":{"type":"string"}},"creditedCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","issueId","proposalId","status","category","authorModel","agentId","verificationTier","windowDays","openedAt","closesAt","closedAt","outcomeReason","patchCommitSha","crashFreeDelta","failureKinds","creditedCents"],"additionalProperties":false}},"credits":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"restoredCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","amountCents","restoredCredits"],"additionalProperties":false},"honesty":{"type":"object","properties":{"minRateSample":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minPublishableSample":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"type":"string"}},"required":["minRateSample","minPublishableSample","note"],"additionalProperties":false}},"required":["orgId","windowDays","overall","byCategory","byModel","byAgent","recent","credits","honesty"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/durability/summary":{"get":{"tags":["durability"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"generatedAt":{"type":"string"},"windowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"verifiedFixRate":{"type":"object","properties":{"value":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishable":{"type":"boolean"},"statement":{"type":"string"},"definition":{"type":"string"}},"required":["value","sampleSize","publishable","statement","definition"],"additionalProperties":false},"regressionRate":{"type":"object","properties":{"value":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishable":{"type":"boolean"},"statement":{"type":"string"},"definition":{"type":"string"}},"required":["value","sampleSize","publishable","statement","definition"],"additionalProperties":false},"costPerDurableFixCents":{"type":"object","properties":{"value":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishable":{"type":"boolean"},"statement":{"type":"string"},"definition":{"type":"string"}},"required":["value","sampleSize","publishable","statement","definition"],"additionalProperties":false},"publishable":{"type":"boolean"},"honesty":{"type":"object","properties":{"minRateSample":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minPublishableSample":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"type":"string"}},"required":["minRateSample","minPublishableSample","note"],"additionalProperties":false}},"required":["orgId","generatedAt","windowDays","verifiedFixRate","regressionRate","costPerDurableFixCents","publishable","honesty"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/durability/windows":{"get":{"tags":["durability"],"parameters":[{"schema":{"type":"string","enum":["OPEN","HELD","REGRESSED","VOID"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"windows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"proposalId":{"type":"string"},"status":{"type":"string","enum":["OPEN","HELD","REGRESSED","VOID"]},"category":{"type":"string"},"authorModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openedAt":{"type":"string"},"closesAt":{"type":"string"},"closedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"outcomeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"patchCommitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"crashFreeDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"failureKinds":{"type":"array","items":{"type":"string"}},"creditedCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","issueId","proposalId","status","category","authorModel","agentId","verificationTier","windowDays","openedAt","closesAt","closedAt","outcomeReason","patchCommitSha","crashFreeDelta","failureKinds","creditedCents"],"additionalProperties":false}}},"required":["windows"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/durability/windows/{windowId}":{"get":{"tags":["durability"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"windowId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"proposalId":{"type":"string"},"status":{"type":"string","enum":["OPEN","HELD","REGRESSED","VOID"]},"category":{"type":"string"},"authorModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openedAt":{"type":"string"},"closesAt":{"type":"string"},"closedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"outcomeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"patchCommitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"crashFreeDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"failureKinds":{"type":"array","items":{"type":"string"}},"creditedCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"originalFingerprint":{"type":"string"},"patchBranch":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"patchPrNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"filesChanged":{"type":"array","items":{"type":"string"}},"baselineRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"baselineCrashFreeRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"postFixRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"postFixCrashFreeRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"releaseHealthSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sweeps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSweptAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["ORIGINAL_RECURRENCE","BLAMED_NEW_ISSUE","REVERT","RELEASE_HEALTH_REGRESSION"]},"detectedAt":{"type":"string"},"evidence":{}},"required":["id","kind","detectedAt","evidence"],"additionalProperties":false}},"credit":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"restoredCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"string"},"reason":{"type":"string"},"issuedAt":{"type":"string"}},"required":["id","amountCents","restoredCredits","coverage","reason","issuedAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","projectId","issueId","proposalId","status","category","authorModel","agentId","verificationTier","windowDays","openedAt","closesAt","closedAt","outcomeReason","patchCommitSha","crashFreeDelta","failureKinds","creditedCents","originalFingerprint","patchBranch","patchPrNumber","filesChanged","baselineRelease","baselineCrashFreeRate","postFixRelease","postFixCrashFreeRate","releaseHealthSessions","sweeps","lastSweptAt","events","credit"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/durability/credits":{"get":{"tags":["durability"],"parameters":[{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"totals":{"type":"object","properties":{"credits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"restoredCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["credits","amountCents","restoredCredits"],"additionalProperties":false},"credits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"windowId":{"type":"string"},"proposalId":{"type":"string"},"invoiceLineId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"restoredCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"string"},"reason":{"type":"string"},"evidence":{},"periodStart":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issuedAt":{"type":"string"}},"required":["id","orgId","windowId","proposalId","invoiceLineId","amountCents","restoredCredits","coverage","reason","evidence","periodStart","issuedAt"],"additionalProperties":false}}},"required":["period","totals","credits"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/durability/sweep":{"post":{"tags":["durability"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":500}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"examined":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opened":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"swept":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"findings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["examined","opened","swept","held","regressed","creditsIssued","findings","errors"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/stats/verification":{"get":{"tags":["stats"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"orgSlug":{"type":"string"},"generatedAt":{"type":"string"},"verifiedFixRate":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"definition":{"type":"string"},"sources":{"minItems":1,"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"polarity":{"type":"string","enum":["HIGHER_IS_BETTER","LOWER_IS_BETTER"]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"window":{"type":"object","properties":{"kind":{"type":"string","enum":["LIFETIME","AS_OF_NOW"]},"since":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"until":{"type":"string"},"watchWindowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"note":{"type":"string"}},"required":["kind","since","until","watchWindowDays","note"],"additionalProperties":false}},"required":["key","label","definition","sources","numerator","sampleSize","rate","polarity","sufficient","publishable","statement","window"],"additionalProperties":false},"reproFirstFailRate":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"definition":{"type":"string"},"sources":{"minItems":1,"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"polarity":{"type":"string","enum":["HIGHER_IS_BETTER","LOWER_IS_BETTER"]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"window":{"type":"object","properties":{"kind":{"type":"string","enum":["LIFETIME","AS_OF_NOW"]},"since":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"until":{"type":"string"},"watchWindowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"note":{"type":"string"}},"required":["kind","since","until","watchWindowDays","note"],"additionalProperties":false}},"required":["key","label","definition","sources","numerator","sampleSize","rate","polarity","sufficient","publishable","statement","window"],"additionalProperties":false},"inWindowRegressionRate":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"definition":{"type":"string"},"sources":{"minItems":1,"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"polarity":{"type":"string","enum":["HIGHER_IS_BETTER","LOWER_IS_BETTER"]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"window":{"type":"object","properties":{"kind":{"type":"string","enum":["LIFETIME","AS_OF_NOW"]},"since":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"until":{"type":"string"},"watchWindowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"note":{"type":"string"}},"required":["kind","since","until","watchWindowDays","note"],"additionalProperties":false}},"required":["key","label","definition","sources","numerator","sampleSize","rate","polarity","sufficient","publishable","statement","window"],"additionalProperties":false},"reversalDebt":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"definition":{"type":"string"},"sources":{"minItems":1,"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"polarity":{"type":"string","enum":["HIGHER_IS_BETTER","LOWER_IS_BETTER"]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"window":{"type":"object","properties":{"kind":{"type":"string","enum":["LIFETIME","AS_OF_NOW"]},"since":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"until":{"type":"string"},"watchWindowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"note":{"type":"string"}},"required":["kind","since","until","watchWindowDays","note"],"additionalProperties":false}},"required":["key","label","definition","sources","numerator","sampleSize","rate","polarity","sufficient","publishable","statement","window"],"additionalProperties":false},"reversalDebtCounts":{"type":"object","properties":{"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overdue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cleared":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"writtenOff":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"outstanding":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["open","overdue","cleared","writtenOff","outstanding"],"additionalProperties":false},"publishable":{"type":"boolean"},"honesty":{"type":"object","properties":{"minRateSample":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minPublishableSample":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"type":"string"}},"required":["minRateSample","minPublishableSample","note"],"additionalProperties":false}},"required":["orgId","orgSlug","generatedAt","verifiedFixRate","reproFirstFailRate","inWindowRegressionRate","reversalDebt","reversalDebtCounts","publishable","honesty"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/traces/{traceId}":{"get":{"tags":["traces"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"traceId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"traceId":{"type":"string"},"spanCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"orphanCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxDepth":{"type":"integer","minimum":0,"maximum":9007199254740991},"startTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"endTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"type":"number"},"services":{"type":"array","items":{"type":"string"}},"environments":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"},"roots":{"type":"array","items":{"$ref":"#/components/schemas/schema0"}}},"required":["traceId","spanCount","orphanCount","maxDepth","startTime","endTime","durationMs","services","environments","truncated","roots"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/logs":{"get":{"tags":["logs"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"anyOf":[{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},{"type":"array","items":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]}},{"type":"string"}]},"in":"query","name":"severity","required":false},{"schema":{"type":"integer","minimum":1,"maximum":24},"in":"query","name":"minSeverityNumber","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"traceId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":32},"in":"query","name":"spanId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"environment","required":false},{"schema":{"type":"string","maxLength":200},"in":"query","name":"q","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"spanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timestamp":{"type":"string"},"severity":{"type":"string"},"severityNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"},"attributes":{"type":"object","additionalProperties":{}},"environment":{"type":"string"},"release":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"genAi":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","traceId","spanId","timestamp","severity","severityNumber","body","attributes","environment","release","issueId","eventId","genAi"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{issueId}/trace":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trace":{"anyOf":[{"type":"object","properties":{"traceId":{"type":"string"},"spanCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"orphanCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxDepth":{"type":"integer","minimum":0,"maximum":9007199254740991},"startTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"endTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"type":"number"},"services":{"type":"array","items":{"type":"string"}},"environments":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"},"roots":{"type":"array","items":{"$ref":"#/components/schemas/schema0"}}},"required":["traceId","spanCount","orphanCount","maxDepth","startTime","endTime","durationMs","services","environments","truncated","roots"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["traceId","trace"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{issueId}/logs":{"get":{"tags":["issues"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"anyOf":[{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},{"type":"array","items":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]}},{"type":"string"}]},"in":"query","name":"severity","required":false},{"schema":{"type":"integer","minimum":1,"maximum":24},"in":"query","name":"minSeverityNumber","required":false},{"schema":{"type":"string","minLength":1,"maxLength":32},"in":"query","name":"spanId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"environment","required":false},{"schema":{"type":"string","maxLength":200},"in":"query","name":"q","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"spanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timestamp":{"type":"string"},"severity":{"type":"string"},"severityNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"},"attributes":{"type":"object","additionalProperties":{}},"environment":{"type":"string"},"release":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"genAi":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["id","traceId","spanId","timestamp","severity","severityNumber","body","attributes","environment","release","issueId","eventId","genAi"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["traceId","data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/explore/spans/aggregate":{"post":{"tags":["explore"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{},"to":{},"hours":{"type":"integer","minimum":1,"maximum":720},"fn":{"type":"string","enum":["count","count_unique","sum","avg","min","max","p50","p75","p95","p99"]},"field":{"type":"string","minLength":1,"maxLength":200},"groupBy":{"type":"string","minLength":1,"maxLength":200},"filters":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["eq","neq","contains","not_contains","starts_with","gt","gte","lt","lte","exists","not_exists"]},"value":{"type":"string","maxLength":500}},"required":["key","op"]}},"limit":{"type":"integer","minimum":1,"maximum":50},"intervalMinutes":{"type":"integer","minimum":1,"maximum":1440}},"required":["fn"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"fn":{"type":"string","enum":["count","count_unique","sum","avg","min","max","p50","p75","p95","p99"]},"field":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"groups":{"type":"array","items":{"type":"object","properties":{"group":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"value":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["group","value","count"],"additionalProperties":false}},"series":{"type":"array","items":{"type":"object","properties":{"group":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"points":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"value":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","value","count"],"additionalProperties":false}}},"required":["group","points"],"additionalProperties":false}},"scanned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scanTruncated":{"type":"boolean"},"groupCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"groupsTruncated":{"type":"boolean"},"limits":{"type":"object","properties":{"maxScanRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxSeries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxGroupCardinality":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["maxScanRows","maxSeries","maxGroupCardinality"],"additionalProperties":false}},"required":["fn","field","groupBy","range","groups","series","scanned","scanTruncated","groupCount","groupsTruncated","limits"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/explore/spans/compare":{"post":{"tags":["explore"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"spike":{"type":"object","properties":{"from":{},"to":{}},"required":["from","to"]},"baseline":{"type":"object","properties":{"from":{},"to":{}},"required":["from","to"]},"filters":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["eq","neq","contains","not_contains","starts_with","gt","gte","lt","lte","exists","not_exists"]},"value":{"type":"string","maxLength":500}},"required":["key","op"]}},"keys":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"minSpikeCount":{"type":"integer","minimum":1,"maximum":10000},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["spike","baseline"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spike":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["from","to","total"],"additionalProperties":false},"baseline":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["from","to","total"],"additionalProperties":false},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"},"spikeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"baselineCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"spikeShare":{"type":"number"},"baselineShare":{"type":"number"},"expectedCount":{"type":"number"},"surplus":{"type":"number"},"lift":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"contribution":{"type":"number"}},"required":["key","value","spikeCount","baselineCount","spikeShare","baselineShare","expectedCount","surplus","lift","contribution"],"additionalProperties":false}},"truncated":{"type":"boolean"},"pairsConsidered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minSpikeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclaimer":{"type":"string"}},"required":["spike","baseline","attributes","truncated","pairsConsidered","minSpikeCount","disclaimer"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/explore/spans":{"get":{"tags":["explore"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":720},"in":"query","name":"hours","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"traceId","required":false},{"schema":{"type":"string","maxLength":4000},"in":"query","name":"filters","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"traceId":{"type":"string"},"spanId":{"type":"string"},"parentSpanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"kind":{"type":"string"},"startTime":{"type":"string"},"endTime":{"type":"string"},"durationMs":{"type":"number"},"statusCode":{"type":"string"},"statusMessage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"release":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"serviceName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"attributes":{"type":"object","additionalProperties":{}}},"required":["id","traceId","spanId","parentSpanId","name","kind","startTime","endTime","durationMs","statusCode","statusMessage","environment","release","serviceName","attributes"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasMore":{"type":"boolean"}},"required":["data","nextCursor","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/explore/attributes":{"get":{"tags":["explore"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":720},"in":"query","name":"hours","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"spans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"numeric":{"type":"boolean"}},"required":["key","spans","numeric"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/explore/traces/{traceId}/waterfall":{"get":{"tags":["explore"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"traceId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"traceId":{"type":"string"},"spanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"orphanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxDepth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"endTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"type":"number"},"services":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"},"rows":{"type":"array","items":{"type":"object","properties":{"spanId":{"type":"string"},"parentSpanId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"kind":{"type":"string"},"serviceName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"statusCode":{"type":"string"},"depth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offsetMs":{"type":"number"},"durationMs":{"type":"number"},"offsetRatio":{"type":"number"},"widthRatio":{"type":"number"},"selfTimeMs":{"type":"number"},"orphan":{"type":"boolean"},"attributes":{"type":"object","additionalProperties":{}}},"required":["spanId","parentSpanId","name","kind","serviceName","statusCode","depth","offsetMs","durationMs","offsetRatio","widthRatio","selfTimeMs","orphan","attributes"],"additionalProperties":false}}},"required":["traceId","spanCount","orphanCount","maxDepth","startTime","endTime","durationMs","services","truncated","rows"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/anomaly/status":{"get":{"tags":["anomaly"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"minTrainingWeeks":{"type":"number"},"minCoverage":{"type":"number"},"anyActivated":{"type":"boolean"},"metrics":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","enum":["event_count","user_count","issue_count"]},"environment":{"type":"string"},"gate":{"type":"object","properties":{"activated":{"type":"boolean"},"reason":{"type":"string","enum":["insufficient_history","insufficient_coverage","no_profile","activated"]},"weeksObserved":{"type":"number"},"weeksRequired":{"type":"number"},"coverage":{"type":"number"},"coverageRequired":{"type":"number"},"eligibleAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["activated","reason","weeksObserved","weeksRequired","coverage","coverageRequired","eligibleAt"],"additionalProperties":false},"trainedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedFrom":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedTo":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"bucketsObserved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"usableSlots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ruleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["metric","environment","gate","trainedAt","trainedFrom","trainedTo","bucketsObserved","usableSlots","ruleCount"],"additionalProperties":false}}},"required":["projectId","minTrainingWeeks","minCoverage","anyActivated","metrics"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/anomaly/profiles/{metric}":{"get":{"tags":["anomaly"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"environment","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","enum":["event_count","user_count","issue_count"]},"in":"path","name":"metric","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"metric":{"type":"string","enum":["event_count","user_count","issue_count"]},"environment":{"type":"string"},"slots":{"type":"array","items":{"type":"object","properties":{"hourOfWeek":{"type":"integer","minimum":0,"maximum":167},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"median":{"type":"number"},"mad":{"type":"number"},"scale":{"type":"number"}},"required":["hourOfWeek","count","median","mad","scale"],"additionalProperties":false}},"weeksObserved":{"type":"number"},"bucketsObserved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"number"},"activated":{"type":"boolean"},"gateReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedFrom":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedTo":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedAt":{"type":"string"},"gate":{"type":"object","properties":{"activated":{"type":"boolean"},"reason":{"type":"string","enum":["insufficient_history","insufficient_coverage","no_profile","activated"]},"weeksObserved":{"type":"number"},"weeksRequired":{"type":"number"},"coverage":{"type":"number"},"coverageRequired":{"type":"number"},"eligibleAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["activated","reason","weeksObserved","weeksRequired","coverage","coverageRequired","eligibleAt"],"additionalProperties":false}},"required":["projectId","metric","environment","slots","weeksObserved","bucketsObserved","coverage","activated","gateReason","trainedFrom","trainedTo","trainedAt","gate"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/anomaly/train":{"post":{"tags":["anomaly"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"metric":{"type":"string","enum":["event_count","user_count","issue_count"]},"environment":{"type":"string","minLength":1,"maxLength":200}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"metric":{"type":"string","enum":["event_count","user_count","issue_count"]},"environment":{"type":"string"},"slots":{"type":"array","items":{"type":"object","properties":{"hourOfWeek":{"type":"integer","minimum":0,"maximum":167},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"median":{"type":"number"},"mad":{"type":"number"},"scale":{"type":"number"}},"required":["hourOfWeek","count","median","mad","scale"],"additionalProperties":false}},"weeksObserved":{"type":"number"},"bucketsObserved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"number"},"activated":{"type":"boolean"},"gateReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedFrom":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedTo":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"trainedAt":{"type":"string"},"gate":{"type":"object","properties":{"activated":{"type":"boolean"},"reason":{"type":"string","enum":["insufficient_history","insufficient_coverage","no_profile","activated"]},"weeksObserved":{"type":"number"},"weeksRequired":{"type":"number"},"coverage":{"type":"number"},"coverageRequired":{"type":"number"},"eligibleAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["activated","reason","weeksObserved","weeksRequired","coverage","coverageRequired","eligibleAt"],"additionalProperties":false}},"required":["projectId","metric","environment","slots","weeksObserved","bucketsObserved","coverage","activated","gateReason","trainedFrom","trainedTo","trainedAt","gate"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/replay":{"get":{"tags":["issues"],"parameters":[{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"object","properties":{"name":{"type":"string","enum":["bucker.replay.interaction"]},"version":{"type":"string"}},"required":["name","version"],"additionalProperties":false},"segments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"replayId":{"type":"string"},"segmentId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"endedAt":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"evicted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"masked":{"type":"boolean"},"stoppedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasTranscript":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","replayId","segmentId","issueId","eventId","startedAt","endedAt","durationMs","eventCount","url","evicted","masked","stoppedReason","sizeBytes","hasTranscript","createdAt"],"additionalProperties":false}}},"required":["format","segments"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/replay/transcript":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"segmentId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"schemaVersion":{"type":"string"},"transcript":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["NAV","UI","NET","LOG"]},"text":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false}},"required":["kind","text"],"additionalProperties":false}},"estimatedTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"actionCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"droppedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"quarantinedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["segmentId","issueId","schemaVersion","transcript","lines","estimatedTokens","actionCount","droppedCount","quarantinedCount","securityNotice","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/replay/anchors":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"segmentId","required":false},{"schema":{"default":5,"type":"integer","minimum":0,"maximum":50},"in":"query","name":"interactions","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"segmentId":{"type":"string"},"replayId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"format":{"type":"object","properties":{"name":{"type":"string","enum":["bucker.replay.interaction"]},"version":{"type":"string"}},"required":["name","version"],"additionalProperties":false},"segmentStartMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"segmentEndMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"anchors":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["error","navigation","interaction"]},"timestampMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"offsetMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventType":{"type":"string"},"label":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false}},"required":["kind","timestampMs","offsetMs","eventType","label"],"additionalProperties":false}}},"required":["segmentId","replayId","issueId","format","segmentStartMs","segmentEndMs","anchors"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/replay/{segmentId}":{"get":{"tags":["replay"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"segmentId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"segment":{"type":"object","properties":{"id":{"type":"string"},"replayId":{"type":"string"},"segmentId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"endedAt":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"evicted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"masked":{"type":"boolean"},"stoppedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasTranscript":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","replayId","segmentId","issueId","eventId","startedAt","endedAt","durationMs","eventCount","url","evicted","masked","stoppedReason","sizeBytes","hasTranscript","createdAt"],"additionalProperties":false},"format":{"type":"object","properties":{"name":{"type":"string","enum":["bucker.replay.interaction"]},"version":{"type":"string"}},"required":["name","version"],"additionalProperties":false},"recording":{"type":"object","properties":{"schemaVersion":{"type":"string"},"replay_id":{"type":"string"},"segment_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events":{"type":"array","items":{"type":"object","additionalProperties":{}}},"redactions":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","replay_id","segment_id","events","redactions"],"additionalProperties":false}},"required":["segment","format","recording"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/retention":{"get":{"tags":["retention"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"hotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coldDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveEnabled":{"type":"boolean"},"isDefault":{"type":"boolean"},"updatedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"updatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limits":{"type":"object","properties":{"minHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxColdDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultColdDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minHotDays","maxHotDays","maxColdDays","defaultHotDays","defaultColdDays"],"additionalProperties":false},"tier":{"type":"object","properties":{"hotBoundary":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archivedRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archivedBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveFormat":{"type":"string"}},"required":["hotBoundary","archivedDays","archivedRows","archivedBytes","expiredDays","archiveFormat"],"additionalProperties":false}},"required":["projectId","hotDays","coldDays","archiveEnabled","isDefault","updatedByPrincipalId","updatedAt","limits","tier"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["retention"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hotDays":{"type":"integer","minimum":7,"maximum":90},"coldDays":{"type":"integer","minimum":0,"maximum":730},"archiveEnabled":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"hotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coldDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveEnabled":{"type":"boolean"},"isDefault":{"type":"boolean"},"updatedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"updatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limits":{"type":"object","properties":{"minHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxColdDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultColdDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minHotDays","maxHotDays","maxColdDays","defaultHotDays","defaultColdDays"],"additionalProperties":false},"tier":{"type":"object","properties":{"hotBoundary":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archivedRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archivedBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveFormat":{"type":"string"}},"required":["hotBoundary","archivedDays","archivedRows","archivedBytes","expiredDays","archiveFormat"],"additionalProperties":false}},"required":["projectId","hotDays","coldDays","archiveEnabled","isDefault","updatedByPrincipalId","updatedAt","limits","tier"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/retention/archives":{"get":{"tags":["retention"],"parameters":[{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includeExpired","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":400},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"objectKey":{"type":"string"},"manifestKey":{"type":"string"},"format":{"type":"string"},"rowCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksum":{"type":"string"},"expiredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["day","objectKey","manifestKey","format","rowCount","bytes","checksum","expiredAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/retention/events":{"get":{"tags":["retention"],"parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":true},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":true},{"schema":{"type":"string"},"in":"query","name":"issueId","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"environment","required":false},{"schema":{"type":"string","maxLength":16},"in":"query","name":"level","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"level":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionValue":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"releaseVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timestamp":{"type":"string"},"receivedAt":{"type":"string"},"tier":{"type":"string","enum":["hot","cold"]}},"required":["id","eventId","issueId","level","message","exceptionType","exceptionValue","environment","releaseVersion","traceId","timestamp","receivedAt","tier"],"additionalProperties":false}},"counts":{"type":"object","properties":{"hot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hot","cold"],"additionalProperties":false},"truncated":{"type":"boolean"},"bytesReadCold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plan":{"type":"object","properties":{"projectId":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"hotDays":{"type":"array","items":{"type":"string"}},"coldDays":{"type":"array","items":{"type":"string"}},"unavailableDays":{"type":"array","items":{"type":"string"}}},"required":["projectId","from","to","hotDays","coldDays","unavailableDays"],"additionalProperties":false}},"required":["data","counts","truncated","bytesReadCold","plan"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/grouping/auto-merge":{"get":{"tags":["grouping"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"similarityThreshold":{"type":"number"},"precisionAtEnable":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"recallAtEnable":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"decisionsAtEnable":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enabledByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enabledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disabledByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disabledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgId","enabled","similarityThreshold","precisionAtEnable","recallAtEnable","decisionsAtEnable","embeddingModel","enabledByPrincipalId","enabledAt","disabledByPrincipalId","disabledAt"],"additionalProperties":false},"evidence":{"type":"object","properties":{"orgId":{"type":"string"},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectIds":{"type":"array","items":{"type":"string"}},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"decided":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"curve":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number"},"support":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recallAtThreshold":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"passes":{"type":"boolean"}},"required":["threshold","support","confirmed","rejected","precision","precisionLowerBound","recallAtThreshold","passes"],"additionalProperties":false}},"recommendedThreshold":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"reversals":{"type":"object","properties":{"autoMerges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unmerged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"significant":{"type":"boolean"}},"required":["autoMerges","unmerged","rate","significant"],"additionalProperties":false},"gate":{"type":"object","properties":{"precisionBar":{"type":"number"},"minDecisions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minDecisionsAtThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minAllowedThreshold":{"type":"number"},"maxReversalRate":{"type":"number"},"passes":{"type":"boolean"},"blockedBecause":{"type":"array","items":{"type":"string"}}},"required":["precisionBar","minDecisions","minDecisionsAtThreshold","minAllowedThreshold","maxReversalRate","passes","blockedBecause"],"additionalProperties":false},"measuredAt":{"type":"string"}},"required":["orgId","embeddingModel","projectIds","pending","confirmed","rejected","decided","precision","precisionLowerBound","curve","recommendedThreshold","reversals","gate","measuredAt"],"additionalProperties":false}},"required":["policy","evidence"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/grouping/auto-merge/enable":{"post":{"tags":["grouping"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"similarityThreshold":{"type":"number","minimum":0.9,"maximum":0.999},"embeddingModel":{"type":"string","maxLength":120}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"similarityThreshold":{"type":"number"},"precisionAtEnable":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"recallAtEnable":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"decisionsAtEnable":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enabledByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enabledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disabledByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disabledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgId","enabled","similarityThreshold","precisionAtEnable","recallAtEnable","decisionsAtEnable","embeddingModel","enabledByPrincipalId","enabledAt","disabledByPrincipalId","disabledAt"],"additionalProperties":false},"evidence":{"type":"object","properties":{"orgId":{"type":"string"},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectIds":{"type":"array","items":{"type":"string"}},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"decided":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"curve":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number"},"support":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recallAtThreshold":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"passes":{"type":"boolean"}},"required":["threshold","support","confirmed","rejected","precision","precisionLowerBound","recallAtThreshold","passes"],"additionalProperties":false}},"recommendedThreshold":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"reversals":{"type":"object","properties":{"autoMerges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unmerged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"significant":{"type":"boolean"}},"required":["autoMerges","unmerged","rate","significant"],"additionalProperties":false},"gate":{"type":"object","properties":{"precisionBar":{"type":"number"},"minDecisions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minDecisionsAtThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minAllowedThreshold":{"type":"number"},"maxReversalRate":{"type":"number"},"passes":{"type":"boolean"},"blockedBecause":{"type":"array","items":{"type":"string"}}},"required":["precisionBar","minDecisions","minDecisionsAtThreshold","minAllowedThreshold","maxReversalRate","passes","blockedBecause"],"additionalProperties":false},"measuredAt":{"type":"string"}},"required":["orgId","embeddingModel","projectIds","pending","confirmed","rejected","decided","precision","precisionLowerBound","curve","recommendedThreshold","reversals","gate","measuredAt"],"additionalProperties":false}},"required":["policy","evidence"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/grouping/auto-merge/disable":{"post":{"tags":["grouping"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"similarityThreshold":{"type":"number"},"precisionAtEnable":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"recallAtEnable":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"decisionsAtEnable":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enabledByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"enabledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disabledByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disabledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgId","enabled","similarityThreshold","precisionAtEnable","recallAtEnable","decisionsAtEnable","embeddingModel","enabledByPrincipalId","enabledAt","disabledByPrincipalId","disabledAt"],"additionalProperties":false}},"required":["policy"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/grouping/auto-merge/run":{"post":{"tags":["grouping"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"threshold":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"considered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"merged":{"type":"array","items":{"type":"object","properties":{"mergeId":{"type":"string"},"projectId":{"type":"string"},"sourceIssueId":{"type":"string"},"targetIssueId":{"type":"string"},"kind":{"type":"string","enum":["MANUAL","AUTO"]},"movedEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"target":{"type":"object","properties":{"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["eventCount","userCount","firstSeen","lastSeen"],"additionalProperties":false}},"required":["mergeId","projectId","sourceIssueId","targetIssueId","kind","movedEvents","target"],"additionalProperties":false}},"skipped":{"type":"array","items":{"type":"object","properties":{"suggestionId":{"type":"string"},"similarity":{"type":"number"},"reason":{"type":"string"}},"required":["suggestionId","similarity","reason"],"additionalProperties":false}},"refusedBecause":{"type":"array","items":{"type":"string"}}},"required":["orgId","enabled","threshold","considered","merged","skipped","refusedBecause"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/merge":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetIssueId":{"type":"string","minLength":1}},"required":["targetIssueId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mergeId":{"type":"string"},"projectId":{"type":"string"},"sourceIssueId":{"type":"string"},"targetIssueId":{"type":"string"},"kind":{"type":"string","enum":["MANUAL","AUTO"]},"movedEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"target":{"type":"object","properties":{"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["eventCount","userCount","firstSeen","lastSeen"],"additionalProperties":false}},"required":["mergeId","projectId","sourceIssueId","targetIssueId","kind","movedEvents","target"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/merges":{"get":{"tags":["merges"],"parameters":[{"schema":{"default":false,"type":"boolean"},"in":"query","name":"active","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sourceIssueId":{"type":"string"},"targetIssueId":{"type":"string"},"kind":{"type":"string","enum":["MANUAL","AUTO"]},"similarity":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"movedEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"actorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"mergedAt":{"type":"string"},"unmergedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"unmergedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","sourceIssueId","targetIssueId","kind","similarity","movedEvents","actorPrincipalId","mergedAt","unmergedAt","unmergedByPrincipalId"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/merges/{mergeId}/unmerge":{"post":{"tags":["merges"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"mergeId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mergeId":{"type":"string"},"sourceIssueId":{"type":"string"},"targetIssueId":{"type":"string"},"restoredEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"object","properties":{"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["eventCount","userCount","firstSeen","lastSeen"],"additionalProperties":false},"target":{"type":"object","properties":{"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["eventCount","userCount","firstSeen","lastSeen"],"additionalProperties":false}},"required":["mergeId","sourceIssueId","targetIssueId","restoredEvents","source","target"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/warehouse/sinks":{"get":{"tags":["warehouse"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["BLOBSTORE","SNOWFLAKE","BIGQUERY"]},"enabled":{"type":"boolean"},"streams":{"type":"array","items":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]}},"configured":{"type":"boolean"},"notConfiguredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scrubTier":{"type":"string","enum":["stored"]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgId","name","kind","enabled","streams","configured","notConfiguredReason","scrubTier","createdByPrincipalId","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["warehouse"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"kind":{"type":"string","enum":["BLOBSTORE","SNOWFLAKE","BIGQUERY"]},"streams":{"default":[],"type":"array","items":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]}},"config":{"default":{},"type":"object","additionalProperties":{}}},"required":["name","kind"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["BLOBSTORE","SNOWFLAKE","BIGQUERY"]},"enabled":{"type":"boolean"},"streams":{"type":"array","items":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]}},"configured":{"type":"boolean"},"notConfiguredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scrubTier":{"type":"string","enum":["stored"]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgId","name","kind","enabled","streams","configured","notConfiguredReason","scrubTier","createdByPrincipalId","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/warehouse/sinks/{sinkId}":{"patch":{"tags":["warehouse"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"enabled":{"type":"boolean"},"streams":{"type":"array","items":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]}}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"sinkId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["BLOBSTORE","SNOWFLAKE","BIGQUERY"]},"enabled":{"type":"boolean"},"streams":{"type":"array","items":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]}},"configured":{"type":"boolean"},"notConfiguredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scrubTier":{"type":"string","enum":["stored"]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgId","name","kind","enabled","streams","configured","notConfiguredReason","scrubTier","createdByPrincipalId","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["warehouse"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"sinkId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/warehouse/sinks/{sinkId}/status":{"get":{"tags":["warehouse"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"sinkId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sink":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["BLOBSTORE","SNOWFLAKE","BIGQUERY"]},"enabled":{"type":"boolean"},"streams":{"type":"array","items":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]}},"configured":{"type":"boolean"},"notConfiguredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scrubTier":{"type":"string","enum":["stored"]},"createdByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgId","name","kind","enabled","streams","configured","notConfiguredReason","scrubTier","createdByPrincipalId","createdAt"],"additionalProperties":false},"checkpoints":{"type":"array","items":{"type":"object","properties":{"stream":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"cursorId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rowsExported":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastRunAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["stream","cursorAt","cursorId","rowsExported","lastRunAt"],"additionalProperties":false}},"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"stream":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]},"status":{"type":"string","enum":["SUCCEEDED","FAILED","NOT_CONFIGURED"]},"rows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"objectKeys":{"type":"array","items":{"type":"string"}},"scrubTier":{"type":"string"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"finishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","stream","status","rows","bytes","objectKeys","scrubTier","error","startedAt","finishedAt"],"additionalProperties":false}}},"required":["sink","checkpoints","runs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/warehouse/sinks/{sinkId}/export":{"post":{"tags":["warehouse"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"maxBatchesPerStream":{"type":"integer","minimum":1,"maximum":50}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"sinkId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sinkId":{"type":"string"},"kind":{"type":"string","enum":["BLOBSTORE","SNOWFLAKE","BIGQUERY"]},"rows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"runs":{"type":"array","items":{"type":"object","properties":{"runId":{"type":"string"},"stream":{"type":"string","enum":["ERROR_ESSENCES","ISSUE_ROLLUPS","RELEASE_HEALTH_ROLLUPS","INGEST_OUTCOMES"]},"status":{"type":"string","enum":["SUCCEEDED","FAILED","NOT_CONFIGURED"]},"rows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"objectKeys":{"type":"array","items":{"type":"string"}},"scrubTier":{"type":"string"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"idle":{"type":"boolean"}},"required":["runId","stream","status","rows","bytes","objectKeys","scrubTier","error","idle"],"additionalProperties":false}}},"required":["sinkId","kind","rows","runs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/envelope/":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. The trailing-slash spelling Sentry SDKs send — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/envelope":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. Envelope accept — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/monitors/{monitorSlug}/checkins":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. Cron check-in open — DSN public key; a cron container has no session.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["in_progress","ok","error"]},"checkInId":{"type":"string","minLength":1,"maxLength":64},"environment":{"type":"string","minLength":1,"maxLength":64},"durationMs":{"type":"integer","minimum":0,"maximum":604800000},"monitorConfig":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"scheduleKind":{"default":"cron","type":"string","enum":["cron","interval"]},"schedule":{"type":"string","maxLength":200},"intervalMinutes":{"type":"integer","minimum":1,"maximum":44640},"timezone":{"default":"UTC","type":"string","minLength":1,"maxLength":64},"gracePeriodMinutes":{"type":"integer","minimum":0,"maximum":1440},"maxRuntimeMinutes":{"type":"integer","minimum":1,"maximum":10080}}}},"required":["status"]}}}},"parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"checkInId":{"type":"string"},"status":{"type":"string"},"environment":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"expectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","monitorId","checkInId","status","environment","startedAt","completedAt","durationMs","expectedAt","issueId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/monitors/{monitorSlug}/checkins/{checkInId}":{"put":{"tags":["api"],"description":"Reachable without a Bucker session token. Cron check-in close — DSN public key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["in_progress","ok","error"]},"environment":{"type":"string","minLength":1,"maxLength":64},"durationMs":{"type":"integer","minimum":0,"maximum":604800000},"monitorConfig":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"scheduleKind":{"default":"cron","type":"string","enum":["cron","interval"]},"schedule":{"type":"string","maxLength":200},"intervalMinutes":{"type":"integer","minimum":1,"maximum":44640},"timezone":{"default":"UTC","type":"string","minLength":1,"maxLength":64},"gracePeriodMinutes":{"type":"integer","minimum":0,"maximum":1440},"maxRuntimeMinutes":{"type":"integer","minimum":1,"maximum":10080}}}},"required":["status"]}}}},"parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"checkInId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"checkInId":{"type":"string"},"status":{"type":"string"},"environment":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"expectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","monitorId","checkInId","status","environment","startedAt","completedAt","durationMs","expectedAt","issueId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/monitors/{monitorSlug}/heartbeat":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. Heartbeat — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","enum":["ok","error"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"environment","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"checkInId":{"type":"string"},"status":{"type":"string"},"environment":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"expectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","monitorId","checkInId","status","environment","startedAt","completedAt","durationMs","expectedAt","issueId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["api"],"description":"Reachable without a Bucker session token. Heartbeat for callers that can only issue a GET (curl in a crontab).","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","enum":["ok","error"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"environment","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorSlug","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"checkInId":{"type":"string"},"status":{"type":"string"},"environment":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"expectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","monitorId","checkInId","status","environment","startedAt","completedAt","durationMs","expectedAt","issueId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/feedback":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. User-feedback widget — DSN public key; a browser widget has no account.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","minLength":1,"maxLength":4096},"name":{"type":"string","maxLength":200},"email":{"type":"string","maxLength":320},"url":{"type":"string","maxLength":2048},"eventId":{"type":"string","maxLength":64},"environment":{"type":"string","minLength":1,"maxLength":64},"source":{"type":"string","minLength":1,"maxLength":40}},"required":["message"]}}}},"parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"}},"required":["id","status"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/traces":{"post":{"tags":["v1"],"description":"Reachable without a Bucker session token. OTLP traces at the collector-default path — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"project_id","required":false}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"partialSuccess":{"type":"object","properties":{"rejectedSpans":{"type":"integer","minimum":0,"maximum":9007199254740991},"errorMessage":{"type":"string"}},"required":["rejectedSpans","errorMessage"],"additionalProperties":false}},"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/logs":{"post":{"tags":["v1"],"description":"Reachable without a Bucker session token. OTLP logs at the collector-default path — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"project_id","required":false}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"partialSuccess":{"type":"object","properties":{"rejectedLogRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"errorMessage":{"type":"string"}},"required":["rejectedLogRecords","errorMessage"],"additionalProperties":false}},"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/otlp/v1/traces":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. OTLP traces, per-project — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"project_id","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"partialSuccess":{"type":"object","properties":{"rejectedSpans":{"type":"integer","minimum":0,"maximum":9007199254740991},"errorMessage":{"type":"string"}},"required":["rejectedSpans","errorMessage"],"additionalProperties":false}},"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/otlp/v1/logs":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. OTLP logs, per-project — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"project_id","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"partialSuccess":{"type":"object","properties":{"rejectedLogRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"errorMessage":{"type":"string"}},"required":["rejectedLogRecords","errorMessage"],"additionalProperties":false}},"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/{projectId}/agent/v1/traces":{"post":{"tags":["api"],"description":"Reachable without a Bucker session token. GenAI agent traces — DSN public key.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampledOut":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"agentSpans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["tool_misuse","retry_loop","goal_drift","empty_retrieval","output_format_violation","silent_truncation","cost_anomaly"]},"subject":{"type":"string"},"summary":{"type":"string"}},"required":["kind","subject","summary"],"additionalProperties":false}},"issueIds":{"type":"array","items":{"type":"string"}},"costMicroUsd":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contentStripped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recordingIds":{"type":"array","items":{"type":"string"}},"partialSuccess":{"type":"object","properties":{"rejectedSpans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorMessage":{"type":"string"}},"required":["rejectedSpans","errorMessage"],"additionalProperties":false}},"required":["accepted","rejected","dropped","sampledOut","agentSpans","sessions","findings","issueIds","costMicroUsd","contentStripped","recordingIds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/telemetry-policy":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"captureMode":{"type":"string","enum":["metadata","full"]},"baselineSampleRate":{"type":"number","minimum":0,"maximum":1},"maxContentChars":{"type":"integer","minimum":0,"maximum":100000},"tailSamplingEnabled":{"type":"boolean"}},"required":["captureMode","baselineSampleRate","maxContentChars","tailSamplingEnabled"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"captureMode":{"type":"string","enum":["metadata","full"]},"baselineSampleRate":{"type":"number","minimum":0,"maximum":1},"maxContentChars":{"type":"integer","minimum":0,"maximum":100000},"tailSamplingEnabled":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"captureMode":{"type":"string","enum":["metadata","full"]},"baselineSampleRate":{"type":"number","minimum":0,"maximum":1},"maxContentChars":{"type":"integer","minimum":0,"maximum":100000},"tailSamplingEnabled":{"type":"boolean"}},"required":["captureMode","baselineSampleRate","maxContentChars","tailSamplingEnabled"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/cost":{"get":{"tags":["agent"],"parameters":[{"schema":{},"in":"query","name":"from","required":true},{"schema":{},"in":"query","name":"to","required":true},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"environment","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string","enum":["agent","feature","user","model","provider","session"]}}]},"in":"query","name":"dimensions","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"total":{"type":"object","properties":{"key":{"type":"string"},"microUsd":{"type":"number"},"billableInputTokens":{"type":"number"},"outputTokens":{"type":"number"},"cacheReadTokens":{"type":"number"},"cacheWriteTokens":{"type":"number"},"spanCount":{"type":"number"},"meteredSpanCount":{"type":"number"}},"required":["key","microUsd","billableInputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","spanCount","meteredSpanCount"],"additionalProperties":false},"byDimension":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"microUsd":{"type":"number"},"billableInputTokens":{"type":"number"},"outputTokens":{"type":"number"},"cacheReadTokens":{"type":"number"},"cacheWriteTokens":{"type":"number"},"spanCount":{"type":"number"},"meteredSpanCount":{"type":"number"}},"required":["key","microUsd","billableInputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","spanCount","meteredSpanCount"],"additionalProperties":false}}}},"required":["projectId","from","to","total","byDimension"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/cost/timeseries":{"get":{"tags":["agent"],"parameters":[{"schema":{},"in":"query","name":"from","required":true},{"schema":{},"in":"query","name":"to","required":true},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"environment","required":false},{"schema":{"type":"string","enum":["agent","feature","user","model","provider","session"]},"in":"query","name":"dimension","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"dimension":{"type":"string","enum":["agent","feature","user","model","provider","session"]},"days":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"microUsd":{"type":"number"},"points":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"microUsd":{"type":"number"}},"required":["day","microUsd"],"additionalProperties":false}}},"required":["key","microUsd","points"],"additionalProperties":false}},"byKind":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["chat","invoke_agent","execute_tool","retrieval","embedding","other"]},"spanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"microUsd":{"type":"number"},"metered":{"type":"boolean"}},"required":["kind","spanCount","microUsd","metered"],"additionalProperties":false}},"totalMicroUsd":{"type":"number"},"spanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"meteredSpanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"}},"required":["from","to","dimension","days","series","byKind","totalMicroUsd","spanCount","meteredSpanCount","truncated"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/sessions":{"get":{"tags":["agent"],"parameters":[{"schema":{},"in":"query","name":"from","required":true},{"schema":{},"in":"query","name":"to","required":true},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"environment","required":false},{"schema":{"type":"string","enum":["ok","failed"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"agentName","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"sessionId":{"type":"string"},"traceIds":{"type":"array","items":{"type":"string"}},"agentName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"status":{"type":"string","enum":["ok","failed"]},"startTime":{"type":"string"},"endTime":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"turnCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"llmCallCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"toolCallCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retrievalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorSpanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicroUsd":{"type":"number"},"totalTokens":{"type":"number"},"models":{"type":"array","items":{"type":"string"}},"failureKinds":{"type":"array","items":{"type":"string"}}},"required":["sessionId","traceIds","agentName","environment","status","startTime","endTime","durationMs","turnCount","stepCount","llmCallCount","toolCallCount","retrievalCount","errorSpanCount","costMicroUsd","totalTokens","models","failureKinds"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"from":{"type":"string"},"to":{"type":"string"},"truncated":{"type":"boolean"}},"required":["data","total","from","to","truncated"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/sessions/{sessionId}":{"get":{"tags":["agent"],"parameters":[{"schema":{},"in":"query","name":"from","required":true},{"schema":{},"in":"query","name":"to","required":true},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"environment","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"sessionId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"traceIds":{"type":"array","items":{"type":"string"}},"agentName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"environment":{"type":"string"},"status":{"type":"string","enum":["ok","failed"]},"startTime":{"type":"string"},"endTime":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"turnCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"llmCallCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"toolCallCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retrievalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorSpanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicroUsd":{"type":"number"},"totalTokens":{"type":"number"},"models":{"type":"array","items":{"type":"string"}},"failureKinds":{"type":"array","items":{"type":"string"}},"turns":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startTime":{"type":"string"},"endTime":{"type":"string"},"durationMs":{"type":"number"},"spanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"root":{"$ref":"#/components/schemas/AgentSessionTreeNode"}},"required":["index","startTime","endTime","durationMs","spanCount","root"],"additionalProperties":false}},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"subject":{"type":"string"},"summary":{"type":"string"},"detail":{"type":"string"},"level":{"type":"string"},"traceId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"spanIds":{"type":"array","items":{"type":"string"}},"timestamp":{"type":"string"},"issue":{"anyOf":[{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"level":{"type":"string"},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transaction":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["issueId","shortId","title","status","level","eventCount","transaction"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["kind","subject","summary","detail","level","traceId","spanIds","timestamp","issue"],"additionalProperties":false}},"issues":{"type":"array","items":{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"level":{"type":"string"},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transaction":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["issueId","shortId","title","status","level","eventCount","transaction"],"additionalProperties":false}},"recordedTraceIds":{"type":"array","items":{"type":"string"}}},"required":["sessionId","traceIds","agentName","environment","status","startTime","endTime","durationMs","turnCount","stepCount","llmCallCount","toolCallCount","retrievalCount","errorSpanCount","costMicroUsd","totalTokens","models","failureKinds","turns","findings","issues","recordedTraceIds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/prompts":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"template":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checksum":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","version","template","notes","checksum","labels","createdAt"],"additionalProperties":false}}},"required":["id","key","name","createdAt","versions"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":120},"name":{"type":"string","minLength":1,"maxLength":200}},"required":["key"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"template":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checksum":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","version","template","notes","checksum","labels","createdAt"],"additionalProperties":false}}},"required":["id","key","name","createdAt","versions"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/prompts/{key}":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"key","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"template":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checksum":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","version","template","notes","checksum","labels","createdAt"],"additionalProperties":false}}},"required":["id","key","name","createdAt","versions"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/prompts/{key}/versions":{"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"string","minLength":1,"maxLength":100000},"notes":{"type":"string","maxLength":2000},"labels":{"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}}},"required":["template"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"key","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"template":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checksum":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","version","template","notes","checksum","labels","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/prompts/{key}/labels":{"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"label":{"type":"string","minLength":1,"maxLength":40}},"required":["version","label"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"key","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"template":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"checksum":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}},"required":["id","version","template","notes","checksum","labels","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/eval-datasets":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"frozen":{"type":"boolean"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"runCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"latestScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"latestRunAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"baselineScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["id","key","name","frozen","caseCount","runCount","createdAt","latestScore","latestRunAt","baselineScore"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":120},"name":{"type":"string","minLength":1,"maxLength":200},"frozen":{"type":"boolean"},"cases":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200},"input":{"type":"object","properties":{"output":{"type":"string","maxLength":200000},"spans":{"maxItems":500,"type":"array","items":{"type":"object","additionalProperties":{}}}}},"expected":{"type":"object","properties":{"contains":{"maxItems":50,"type":"array","items":{"type":"string"}},"reference":{"type":"string","maxLength":200000}}},"checks":{"maxItems":50,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["json_valid"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["json_schema"]},"schema":{}},"required":["kind","schema"]},{"type":"object","properties":{"kind":{"type":"string","enum":["contains"]},"text":{"type":"string","maxLength":1000}},"required":["kind","text"]},{"type":"object","properties":{"kind":{"type":"string","enum":["not_contains"]},"text":{"type":"string","maxLength":1000}},"required":["kind","text"]},{"type":"object","properties":{"kind":{"type":"string","enum":["regex"]},"pattern":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","pattern"]},{"type":"object","properties":{"kind":{"type":"string","enum":["max_steps"]},"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["tool_called"]},"name":{"type":"string","maxLength":1000}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"type":"string","enum":["no_agent_issues"]}},"required":["kind"]}]}}},"required":["key","input","checks"]}}},"required":["key"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","key","caseCount"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/eval-datasets/{key}":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"key","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"frozen":{"type":"boolean"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"runCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"latestScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"latestRunAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"baselineScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"cases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"checkKinds":{"type":"array","items":{"type":"string"}},"hasExpected":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","key","checkKinds","hasExpected","createdAt"],"additionalProperties":false}}},"required":["id","key","name","frozen","caseCount","runCount","createdAt","latestScore","latestRunAt","baselineScore","cases"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/eval-runs":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"datasetKey","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"datasetKey":{"type":"string"},"label":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"gitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"judgeVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"score":{"type":"number"},"passed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"baseline":{"type":"boolean"},"delta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"truncated":{"type":"boolean"},"skippedCases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","datasetKey","label","gitSha","promptKey","promptVersion","judgeVersion","score","passed","failed","baseline","delta","truncated","skippedCases","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"datasetKey":{"type":"string","minLength":1},"label":{"type":"string","maxLength":200},"gitSha":{"type":"string","maxLength":64},"promptKey":{"type":"string","maxLength":120},"promptVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"baseline":{"type":"boolean"},"judge":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":120},"version":{"type":"string","minLength":1,"maxLength":40}},"required":["key","version"]}},"required":["datasetKey"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"datasetKey":{"type":"string"},"score":{"type":"number"},"passed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"baseline":{"type":"boolean"},"judgeVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"tierCounts":{"type":"object","properties":{"deterministic":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scorer":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"judge":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["deterministic","scorer","judge"],"additionalProperties":false},"results":{"type":"array","items":{"type":"object","properties":{"caseKey":{"type":"string"},"tier":{"type":"string"},"score":{"type":"number"},"passed":{"type":"boolean"},"escalated":{"type":"boolean"},"judgeVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failures":{"type":"array","items":{"type":"object","properties":{"check":{"type":"string"},"message":{"type":"string"}},"required":["check","message"],"additionalProperties":false}}},"required":["caseKey","tier","score","passed","escalated","judgeVersion","failures"],"additionalProperties":false}},"truncated":{"type":"boolean"},"skippedCases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","datasetKey","score","passed","failed","baseline","judgeVersion","tierCounts","results","truncated","skippedCases","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/judges":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"checksum":{"type":"string"},"rubric":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"weight":{"type":"number"}},"required":["key","description","weight"],"additionalProperties":false}},"canaryDatasetKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"canaryRuns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"judgeVersion":{"type":"string"},"datasetKey":{"type":"string"},"meanScore":{"type":"number"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","judgeVersion","datasetKey","meanScore","caseCount","createdAt"],"additionalProperties":false}}},"required":["id","key","version","model","checksum","rubric","canaryDatasetKey","createdAt","canaryRuns"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":120},"version":{"type":"string","minLength":1,"maxLength":40},"model":{"type":"string","minLength":1,"maxLength":120},"prompt":{"type":"string","minLength":1,"maxLength":20000},"rubric":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500},"weight":{"type":"number","minimum":0,"maximum":100}},"required":["key","description","weight"]}},"canaryDatasetKey":{"type":"string","minLength":1,"maxLength":120}},"required":["key","version","model","prompt","rubric"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"checksum":{"type":"string"},"canaryDatasetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","key","version","model","checksum","canaryDatasetId","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/eval-runs/baseline":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"datasetKey","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"score":{"type":"number"},"judgeVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"truncated":{"type":"boolean"},"skippedCases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","score","judgeVersion","truncated","skippedCases","createdAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/eval-runs/gate":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"datasetKey","required":true},{"schema":{"type":"string","minLength":1},"in":"query","name":"runId","required":true},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"failUnder","required":false},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"maxRegression","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"passed":{"type":"boolean"},"score":{"type":"number"},"baselineScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"delta":{"type":"number"},"reasons":{"type":"array","items":{"type":"string"}},"judgeMismatch":{"type":"boolean"},"truncated":{"type":"boolean"},"skippedCases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["passed","score","baselineScore","delta","reasons","judgeMismatch","truncated","skippedCases"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/eval-runs/{runId}":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"runId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"datasetKey":{"type":"string"},"label":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"gitSha":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"judgeVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"score":{"type":"number"},"passed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"baseline":{"type":"boolean"},"delta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"truncated":{"type":"boolean"},"skippedCases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"tierCounts":{"type":"object","properties":{"deterministic":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scorer":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"judge":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["deterministic","scorer","judge"],"additionalProperties":false},"results":{"type":"array","items":{"type":"object","properties":{"caseKey":{"type":"string"},"tier":{"type":"string"},"score":{"type":"number"},"passed":{"type":"boolean"},"escalated":{"type":"boolean"},"judgeVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failures":{"type":"array","items":{"type":"object","properties":{"check":{"type":"string"},"message":{"type":"string"}},"required":["check","message"],"additionalProperties":false}}},"required":["caseKey","tier","score","passed","escalated","judgeVersion","failures"],"additionalProperties":false}}},"required":["id","datasetKey","label","gitSha","promptKey","promptVersion","judgeVersion","score","passed","failed","baseline","delta","truncated","skippedCases","createdAt","tierCounts","results"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/judges/canary":{"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"judgeKey":{"type":"string","minLength":1},"judgeVersion":{"type":"string","minLength":1},"datasetKey":{"type":"string","minLength":1},"tokenBudget":{"type":"integer","minimum":300,"maximum":1000000}},"required":["judgeKey","judgeVersion","datasetKey"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"judgeVersion":{"type":"string"},"datasetKey":{"type":"string"},"meanScore":{"type":"number"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"perCase":{"type":"object","additionalProperties":{"type":"number"}},"truncated":{"type":"boolean"},"skippedCases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","judgeVersion","datasetKey","meanScore","caseCount","perCase","truncated","skippedCases","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/judge-drift":{"post":{"tags":["agent"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"before":{"type":"object","properties":{"judgeVersion":{"type":"string"},"productionScore":{"type":"number"},"canaryScore":{"type":"number"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["judgeVersion","productionScore","canaryScore"]},"after":{"type":"object","properties":{"judgeVersion":{"type":"string"},"productionScore":{"type":"number"},"canaryScore":{"type":"number"},"caseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["judgeVersion","productionScore","canaryScore"]},"tolerance":{"type":"number","minimum":0,"maximum":1}},"required":["before","after"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":"string","enum":["stable","system_changed","judge_drifted","judge_replaced","confounded"]},"productionDelta":{"type":"number"},"canaryDelta":{"type":"number"},"judgeAttributedDelta":{"type":"number"},"systemAttributedDelta":{"type":"number"},"judgeChanged":{"type":"boolean"},"tolerance":{"type":"number"},"explanation":{"type":"string"}},"required":["verdict","productionDelta","canaryDelta","judgeAttributedDelta","systemAttributedDelta","judgeChanged","tolerance","explanation"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/recordings/{traceId}":{"get":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"traceId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"traceId":{"type":"string"},"sessionId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"stepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"model":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"promptVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string"},"name":{"type":"string"},"signature":{"type":"string"},"toolName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["index","kind","name","signature","toolName"],"additionalProperties":false}}},"required":["id","traceId","sessionId","stepCount","mockCount","model","promptKey","promptVersion","steps"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/agent/recordings/{traceId}/replay":{"post":{"tags":["agent"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"traceId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"outcome":{"type":"string","enum":["matched","diverged","missing_mock"]},"firstDivergenceIndex":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"stepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"matchedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"divergences":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":"string"},"expected":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actual":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["index","reason","expected","actual"],"additionalProperties":false}}},"required":["outcome","firstDivergenceIndex","stepCount","matchedCount","divergences"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/accountability/me":{"get":{"tags":["accountability"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"in":"query","name":"actionClass","required":false},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"action","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"agentId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"in":"query","name":"outcome","required":false},{"schema":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"in":"query","name":"attribution","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"subject":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgRole":{"type":"string"}},"required":["principalId","kind","displayName","userId","email","orgRole"],"additionalProperties":false},"viewer":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},"isSelf":{"type":"boolean"},"window":{"type":"object","properties":{"from":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"to":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["from","to"],"additionalProperties":false},"summary":{"type":"object","properties":{"actionsOnAuthority":{"type":"number"},"approvals":{"type":"number"},"declines":{"type":"number"},"neutral":{"type":"number"},"decisionRatio":{"type":"object","properties":{"approvals":{"type":"number"},"declines":{"type":"number"},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"approvalRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["approvals","declines","ratio","approvalRate"],"additionalProperties":false},"byAttribution":{"type":"object","additionalProperties":{"type":"number"},"required":["DIRECT","DELEGATED","SPONSORED"]},"byDeclineClass":{"type":"object","additionalProperties":{"type":"number"},"required":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},"byActionClass":{"type":"object","additionalProperties":{"type":"number"},"required":["approval","remediation","agent_governance","issue","other"]},"sponsoredAgents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"lifecycle":{"type":"string"},"maxTier":{"type":"string"}},"required":["id","principalId","name","kind","lifecycle","maxTier"],"additionalProperties":false}},"spendAttributed":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"amount":{"type":"number"},"records":{"type":"number"}},"required":["kind","amount","records"],"additionalProperties":false}},"trustRungs":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string"},"agentName":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"}},"required":["agentId","agentName","category","rung","approvals","rejections","regressions"],"additionalProperties":false}}},"required":["actionsOnAuthority","approvals","declines","neutral","decisionRatio","byAttribution","byDeclineClass","byActionClass","sponsoredAgents","spendAttributed","trustRungs"],"additionalProperties":false},"entries":{"type":"array","items":{"type":"object","properties":{"auditLogId":{"type":"string"},"at":{"type":"string"},"action":{"type":"string"},"actionClass":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"result":{"type":"string"},"outcome":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"declineClass":{"anyOf":[{"type":"string","enum":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},{"nullable":true,"enum":[null]}]},"attribution":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"actor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"onBehalfOf":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"agent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}},"required":["id","name","kind"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"target":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"id":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["auditLogId","at","action","actionClass","result","outcome","declineClass","attribution","actor","onBehalfOf","agent","target","incidentId","inputDigest"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectFilterTruncated":{"type":"boolean"}},"required":["org","subject","viewer","isSelf","window","summary","entries","nextCursor","projectFilterTruncated"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/accountability/{principalId}":{"get":{"tags":["accountability"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"in":"query","name":"actionClass","required":false},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"action","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"agentId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"in":"query","name":"outcome","required":false},{"schema":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"in":"query","name":"attribution","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"subject":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgRole":{"type":"string"}},"required":["principalId","kind","displayName","userId","email","orgRole"],"additionalProperties":false},"viewer":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},"isSelf":{"type":"boolean"},"window":{"type":"object","properties":{"from":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"to":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["from","to"],"additionalProperties":false},"summary":{"type":"object","properties":{"actionsOnAuthority":{"type":"number"},"approvals":{"type":"number"},"declines":{"type":"number"},"neutral":{"type":"number"},"decisionRatio":{"type":"object","properties":{"approvals":{"type":"number"},"declines":{"type":"number"},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"approvalRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["approvals","declines","ratio","approvalRate"],"additionalProperties":false},"byAttribution":{"type":"object","additionalProperties":{"type":"number"},"required":["DIRECT","DELEGATED","SPONSORED"]},"byDeclineClass":{"type":"object","additionalProperties":{"type":"number"},"required":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},"byActionClass":{"type":"object","additionalProperties":{"type":"number"},"required":["approval","remediation","agent_governance","issue","other"]},"sponsoredAgents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"lifecycle":{"type":"string"},"maxTier":{"type":"string"}},"required":["id","principalId","name","kind","lifecycle","maxTier"],"additionalProperties":false}},"spendAttributed":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"amount":{"type":"number"},"records":{"type":"number"}},"required":["kind","amount","records"],"additionalProperties":false}},"trustRungs":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string"},"agentName":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"}},"required":["agentId","agentName","category","rung","approvals","rejections","regressions"],"additionalProperties":false}}},"required":["actionsOnAuthority","approvals","declines","neutral","decisionRatio","byAttribution","byDeclineClass","byActionClass","sponsoredAgents","spendAttributed","trustRungs"],"additionalProperties":false},"entries":{"type":"array","items":{"type":"object","properties":{"auditLogId":{"type":"string"},"at":{"type":"string"},"action":{"type":"string"},"actionClass":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"result":{"type":"string"},"outcome":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"declineClass":{"anyOf":[{"type":"string","enum":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},{"nullable":true,"enum":[null]}]},"attribution":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"actor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"onBehalfOf":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"agent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}},"required":["id","name","kind"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"target":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"id":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["auditLogId","at","action","actionClass","result","outcome","declineClass","attribution","actor","onBehalfOf","agent","target","incidentId","inputDigest"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectFilterTruncated":{"type":"boolean"}},"required":["org","subject","viewer","isSelf","window","summary","entries","nextCursor","projectFilterTruncated"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/accountability/{principalId}/actions/{auditLogId}":{"get":{"tags":["accountability"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"auditLogId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"subject":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgRole":{"type":"string"}},"required":["principalId","kind","displayName","userId","email","orgRole"],"additionalProperties":false},"entry":{"type":"object","properties":{"auditLogId":{"type":"string"},"at":{"type":"string"},"action":{"type":"string"},"actionClass":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"result":{"type":"string"},"outcome":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"declineClass":{"anyOf":[{"type":"string","enum":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},{"nullable":true,"enum":[null]}]},"attribution":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"actor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"onBehalfOf":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"agent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}},"required":["id","name","kind"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"target":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"id":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["auditLogId","at","action","actionClass","result","outcome","declineClass","attribution","actor","onBehalfOf","agent","target","incidentId","inputDigest"],"additionalProperties":false},"basis":{"type":"object","properties":{"auditLogId":{"type":"string"},"at":{"type":"string"},"action":{"type":"string"},"actionClass":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"result":{"type":"string"},"outcome":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"declineClass":{"anyOf":[{"type":"string","enum":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},{"nullable":true,"enum":[null]}]},"attribution":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"subjectPrincipalId":{"type":"string"},"actor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"onBehalfOf":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"agent":{"anyOf":[{"type":"object","properties":{"agentId":{"type":"string"},"principalId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"lifecycle":{"type":"string"},"maxTier":{"type":"string"},"sponsorUserId":{"type":"string"}},"required":["agentId","principalId","name","kind","lifecycle","maxTier","sponsorUserId"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"delegation":{"anyOf":[{"type":"object","properties":{"delegationId":{"type":"string"},"onBehalfOfUserId":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inForceAtAction":{"type":"boolean"},"matchedByJti":{"type":"boolean"}},"required":["delegationId","onBehalfOfUserId","incidentId","projectId","scopes","audience","jti","createdAt","expiresAt","revokedAt","inForceAtAction","matchedByJti"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sponsor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"budgets":{"type":"array","items":{"type":"object","properties":{"budgetId":{"type":"string"},"kind":{"type":"string"},"scopeKey":{"type":"string"},"limit":{"type":"number"},"consumed":{"type":"number"},"remaining":{"type":"number"},"period":{"type":"string"}},"required":["budgetId","kind","scopeKey","limit","consumed","remaining","period"],"additionalProperties":false}},"trustLadder":{"anyOf":[{"type":"object","properties":{"ladderId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"category":{"type":"string"},"rung":{"type":"string"},"implicit":{"type":"boolean"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"}},"required":["ladderId","category","rung","implicit","approvals","rejections","regressions","consecutiveApprovals"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"approval":{"anyOf":[{"type":"object","properties":{"approvalRequestId":{"type":"string"},"action":{"type":"string"},"riskClass":{"type":"string"},"status":{"type":"string"},"minApprovers":{"type":"number"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["approvalRequestId","action","riskClass","status","minApprovers","requesterPrincipalId","onBehalfOfPrincipalId","deciderPrincipalId","decidedAt","policyId"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"verification":{"anyOf":[{"type":"object","properties":{"proposalId":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"status":{"type":"string"},"verificationTier":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificate":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"algorithm":{"type":"string"},"signedAt":{"type":"string"},"approverPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","algorithm","signedAt","approverPrincipalId"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["proposalId","runId","issueId","status","verificationTier","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","certificate"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"target":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"id":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"gaps":{"type":"array","items":{"type":"object","properties":{"link":{"type":"string","enum":["actor","on_behalf_of","agent","delegation","sponsor","budget","trust_ladder","approval","verification"]},"reason":{"type":"string","enum":["MISSING","DELETED","EXPIRED","REVOKED","TRANSFERRED","UNBUDGETED"]},"severity":{"type":"string","enum":["INFO","DEGRADED","BROKEN"]},"detail":{"type":"string"}},"required":["link","reason","severity","detail"],"additionalProperties":false}},"complete":{"type":"boolean"}},"required":["auditLogId","at","action","actionClass","result","outcome","declineClass","attribution","subjectPrincipalId","actor","onBehalfOf","agent","delegation","sponsor","budgets","trustLadder","approval","verification","target","incidentId","inputDigest","gaps","complete"],"additionalProperties":false}},"required":["org","subject","entry","basis"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/accountability/{principalId}/export":{"get":{"tags":["accountability"],"parameters":[{"schema":{},"in":"query","name":"from","required":false},{"schema":{},"in":"query","name":"to","required":false},{"schema":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"in":"query","name":"actionClass","required":false},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"action","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"agentId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"in":"query","name":"outcome","required":false},{"schema":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"in":"query","name":"attribution","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string"},"algorithm":{"type":"string"},"signature":{"type":"string"},"documentHash":{"type":"string"},"document":{"type":"object","properties":{"schema":{"type":"string"},"version":{"type":"number"},"generatedAt":{"type":"string"},"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"subject":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgRole":{"type":"string"}},"required":["principalId","kind","displayName","userId","email","orgRole"],"additionalProperties":false},"requestedBy":{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},"window":{"type":"object","properties":{"from":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"to":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["from","to"],"additionalProperties":false},"filters":{"type":"object","properties":{"actionClass":{"anyOf":[{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},{"nullable":true,"enum":[null]}]},"action":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"outcome":{"anyOf":[{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},{"nullable":true,"enum":[null]}]},"attribution":{"anyOf":[{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},{"nullable":true,"enum":[null]}]}},"required":["actionClass","action","agentId","projectId","outcome","attribution"],"additionalProperties":false},"summary":{"type":"object","properties":{"actionsOnAuthority":{"type":"number"},"approvals":{"type":"number"},"declines":{"type":"number"},"neutral":{"type":"number"},"decisionRatio":{"type":"object","properties":{"approvals":{"type":"number"},"declines":{"type":"number"},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"approvalRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["approvals","declines","ratio","approvalRate"],"additionalProperties":false},"byAttribution":{"type":"object","additionalProperties":{"type":"number"},"required":["DIRECT","DELEGATED","SPONSORED"]},"byDeclineClass":{"type":"object","additionalProperties":{"type":"number"},"required":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},"byActionClass":{"type":"object","additionalProperties":{"type":"number"},"required":["approval","remediation","agent_governance","issue","other"]},"sponsoredAgents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"lifecycle":{"type":"string"},"maxTier":{"type":"string"}},"required":["id","principalId","name","kind","lifecycle","maxTier"],"additionalProperties":false}},"spendAttributed":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"amount":{"type":"number"},"records":{"type":"number"}},"required":["kind","amount","records"],"additionalProperties":false}},"trustRungs":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string"},"agentName":{"type":"string"},"category":{"type":"string"},"rung":{"type":"string"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"}},"required":["agentId","agentName","category","rung","approvals","rejections","regressions"],"additionalProperties":false}}},"required":["actionsOnAuthority","approvals","declines","neutral","decisionRatio","byAttribution","byDeclineClass","byActionClass","sponsoredAgents","spendAttributed","trustRungs"],"additionalProperties":false},"entryCount":{"type":"number"},"truncated":{"type":"boolean"},"entries":{"type":"array","items":{"type":"object","properties":{"auditLogId":{"type":"string"},"at":{"type":"string"},"action":{"type":"string"},"actionClass":{"type":"string","enum":["approval","remediation","agent_governance","issue","other"]},"result":{"type":"string"},"outcome":{"type":"string","enum":["APPROVAL","DECLINE","NEUTRAL"]},"declineClass":{"anyOf":[{"type":"string","enum":["HUMAN_REJECTION","POLICY_DENY","SELF_APPROVAL_BLOCKED","BUDGET_REFUSAL","EXPIRED","FORBIDDEN"]},{"nullable":true,"enum":[null]}]},"attribution":{"type":"string","enum":["DIRECT","DELEGATED","SPONSORED"]},"subjectPrincipalId":{"type":"string"},"actor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"onBehalfOf":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"agent":{"anyOf":[{"type":"object","properties":{"agentId":{"type":"string"},"principalId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"lifecycle":{"type":"string"},"maxTier":{"type":"string"},"sponsorUserId":{"type":"string"}},"required":["agentId","principalId","name","kind","lifecycle","maxTier","sponsorUserId"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"delegation":{"anyOf":[{"type":"object","properties":{"delegationId":{"type":"string"},"onBehalfOfUserId":{"type":"string"},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scopes":{"type":"array","items":{"type":"string"}},"audience":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"jti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inForceAtAction":{"type":"boolean"},"matchedByJti":{"type":"boolean"}},"required":["delegationId","onBehalfOfUserId","incidentId","projectId","scopes","audience","jti","createdAt","expiresAt","revokedAt","inForceAtAction","matchedByJti"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sponsor":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"budgets":{"type":"array","items":{"type":"object","properties":{"budgetId":{"type":"string"},"kind":{"type":"string"},"scopeKey":{"type":"string"},"limit":{"type":"number"},"consumed":{"type":"number"},"remaining":{"type":"number"},"period":{"type":"string"}},"required":["budgetId","kind","scopeKey","limit","consumed","remaining","period"],"additionalProperties":false}},"trustLadder":{"anyOf":[{"type":"object","properties":{"ladderId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"category":{"type":"string"},"rung":{"type":"string"},"implicit":{"type":"boolean"},"approvals":{"type":"number"},"rejections":{"type":"number"},"regressions":{"type":"number"},"consecutiveApprovals":{"type":"number"}},"required":["ladderId","category","rung","implicit","approvals","rejections","regressions","consecutiveApprovals"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"approval":{"anyOf":[{"type":"object","properties":{"approvalRequestId":{"type":"string"},"action":{"type":"string"},"riskClass":{"type":"string"},"status":{"type":"string"},"minApprovers":{"type":"number"},"requesterPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deciderPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"policyId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["approvalRequestId","action","riskClass","status","minApprovers","requesterPrincipalId","onBehalfOfPrincipalId","deciderPrincipalId","decidedAt","policyId"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"verification":{"anyOf":[{"type":"object","properties":{"proposalId":{"type":"string"},"runId":{"type":"string"},"issueId":{"type":"string"},"status":{"type":"string"},"verificationTier":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"certificate":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"algorithm":{"type":"string"},"signedAt":{"type":"string"},"approverPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","algorithm","signedAt","approverPrincipalId"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["proposalId","runId","issueId","status","verificationTier","approvedByPrincipalId","approvedAt","rejectedByPrincipalId","rejectedAt","certificate"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"target":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"id":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["type","id"],"additionalProperties":false},"incidentId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"inputDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"gaps":{"type":"array","items":{"type":"object","properties":{"link":{"type":"string","enum":["actor","on_behalf_of","agent","delegation","sponsor","budget","trust_ladder","approval","verification"]},"reason":{"type":"string","enum":["MISSING","DELETED","EXPIRED","REVOKED","TRANSFERRED","UNBUDGETED"]},"severity":{"type":"string","enum":["INFO","DEGRADED","BROKEN"]},"detail":{"type":"string"}},"required":["link","reason","severity","detail"],"additionalProperties":false}},"complete":{"type":"boolean"}},"required":["auditLogId","at","action","actionClass","result","outcome","declineClass","attribution","subjectPrincipalId","actor","onBehalfOf","agent","delegation","sponsor","budgets","trustLadder","approval","verification","target","incidentId","inputDigest","gaps","complete"],"additionalProperties":false}}},"required":["schema","version","generatedAt","org","subject","requestedBy","window","filters","summary","entryCount","truncated","entries"],"additionalProperties":false}},"required":["format","algorithm","signature","documentHash","document"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/.well-known/proof-ledger-keys":{"get":{"tags":[".well-known"],"description":"Reachable without a Bucker session token. The signing key a third party verifies checkpoints against.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{}},"publicKeyPem":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"provenance":{"type":"string"},"disclosures":{"type":"array","items":{"type":"string"}},"specUri":{"type":"string"}},"required":["keys","publicKeyPem","keyId","algorithm","provenance","disclosures","specUri"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/proof-ledger/shared/{token}":{"get":{"tags":["proof-ledger"],"description":"Reachable without a Bucker session token. The auditor share link; the unguessable token is the authorization.","parameters":[{"schema":{"type":"string","minLength":8},"in":"path","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"entry":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"runId":{"type":"string"},"proposalId":{"type":"string"},"bundleId":{"type":"string"},"formatVersion":{"type":"string"},"specUri":{"type":"string"},"tier":{"type":"string"},"verdict":{"type":"string"},"billable":{"type":"boolean"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"envelopeDigest":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"redacted":{"type":"boolean"},"redactedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"redactionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","runId","proposalId","bundleId","formatVersion","specUri","tier","verdict","billable","leafIndex","leafHash","envelopeDigest","keyId","algorithm","issuedAt","redacted","redactedAt","redactionReason"],"additionalProperties":false},"envelope":{},"bundle":{},"audit":{},"inclusion":{"anyOf":[{"type":"object","properties":{"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"proof":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean"},"checkpoint":{"anyOf":[{"type":"object","properties":{"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"note":{"type":"string"},"signedNote":{"type":"string"},"signature":{"type":"string"},"keyId":{"type":"string"},"issuedAt":{"type":"string"},"timestampStatus":{"type":"string"},"timestampNote":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["treeSize","rootHash","note","signedNote","signature","keyId","issuedAt","timestampStatus","timestampNote"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["leafIndex","leafHash","treeSize","rootHash","proof","verified","checkpoint","disclosure"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["entry","envelope","bundle","audit","inclusion","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/entries":{"post":{"tags":["proof-ledger"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"proposalId":{"type":"string","minLength":1}},"required":["proposalId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"entry":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"runId":{"type":"string"},"proposalId":{"type":"string"},"bundleId":{"type":"string"},"formatVersion":{"type":"string"},"specUri":{"type":"string"},"tier":{"type":"string"},"verdict":{"type":"string"},"billable":{"type":"boolean"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"envelopeDigest":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"redacted":{"type":"boolean"},"redactedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"redactionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","runId","proposalId","bundleId","formatVersion","specUri","tier","verdict","billable","leafIndex","leafHash","envelopeDigest","keyId","algorithm","issuedAt","redacted","redactedAt","redactionReason"],"additionalProperties":false},"bundle":{},"envelope":{},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"reused":{"type":"boolean"}},"required":["entry","bundle","envelope","leafIndex","treeSize","rootHash","reused"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"tier","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"entries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"runId":{"type":"string"},"proposalId":{"type":"string"},"bundleId":{"type":"string"},"formatVersion":{"type":"string"},"specUri":{"type":"string"},"tier":{"type":"string"},"verdict":{"type":"string"},"billable":{"type":"boolean"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"envelopeDigest":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"redacted":{"type":"boolean"},"redactedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"redactionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","runId","proposalId","bundleId","formatVersion","specUri","tier","verdict","billable","leafIndex","leafHash","envelopeDigest","keyId","algorithm","issuedAt","redacted","redactedAt","redactionReason"],"additionalProperties":false}}},"required":["treeSize","entries"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/entries/{entryId}":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"entryId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"entry":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"runId":{"type":"string"},"proposalId":{"type":"string"},"bundleId":{"type":"string"},"formatVersion":{"type":"string"},"specUri":{"type":"string"},"tier":{"type":"string"},"verdict":{"type":"string"},"billable":{"type":"boolean"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"envelopeDigest":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"redacted":{"type":"boolean"},"redactedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"redactionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","runId","proposalId","bundleId","formatVersion","specUri","tier","verdict","billable","leafIndex","leafHash","envelopeDigest","keyId","algorithm","issuedAt","redacted","redactedAt","redactionReason"],"additionalProperties":false},"envelope":{},"bundle":{},"audit":{}},"required":["entry","envelope","bundle","audit"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/entries/{entryId}/inclusion-proof":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"treeSize","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"entryId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"proof":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean"},"checkpoint":{"anyOf":[{"type":"object","properties":{"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"note":{"type":"string"},"signedNote":{"type":"string"},"signature":{"type":"string"},"keyId":{"type":"string"},"issuedAt":{"type":"string"},"timestampStatus":{"type":"string"},"timestampNote":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["treeSize","rootHash","note","signedNote","signature","keyId","issuedAt","timestampStatus","timestampNote"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["leafIndex","leafHash","treeSize","rootHash","proof","verified","checkpoint","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/entries/{entryId}/redact":{"post":{"tags":["proof-ledger"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":600}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"entryId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"entry":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"runId":{"type":"string"},"proposalId":{"type":"string"},"bundleId":{"type":"string"},"formatVersion":{"type":"string"},"specUri":{"type":"string"},"tier":{"type":"string"},"verdict":{"type":"string"},"billable":{"type":"boolean"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"envelopeDigest":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"redacted":{"type":"boolean"},"redactedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"redactionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","runId","proposalId","bundleId","formatVersion","specUri","tier","verdict","billable","leafIndex","leafHash","envelopeDigest","keyId","algorithm","issuedAt","redacted","redactedAt","redactionReason"],"additionalProperties":false},"disclosure":{"type":"string"}},"required":["entry","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/entries/{entryId}/shares":{"post":{"tags":["proof-ledger"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"expiresInDays":{"default":30,"type":"integer","minimum":1,"maximum":365},"includeProof":{"default":true,"type":"boolean"}},"required":["label"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"entryId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"share":{"type":"object","properties":{"id":{"type":"string"},"entryId":{"type":"string"},"label":{"type":"string"},"includeProof":{"type":"boolean"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"usedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"active":{"type":"boolean"}},"required":["id","entryId","label","includeProof","createdByPrincipalId","createdAt","expiresAt","revokedAt","usedCount","lastUsedAt","active"],"additionalProperties":false},"token":{"type":"string"},"url":{"type":"string"}},"required":["share","token","url"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"entryId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"shares":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"entryId":{"type":"string"},"label":{"type":"string"},"includeProof":{"type":"boolean"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"usedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"active":{"type":"boolean"}},"required":["id","entryId","label","includeProof","createdByPrincipalId","createdAt","expiresAt","revokedAt","usedCount","lastUsedAt","active"],"additionalProperties":false}}},"required":["shares"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/shares/{shareId}":{"delete":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"shareId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"share":{"type":"object","properties":{"id":{"type":"string"},"entryId":{"type":"string"},"label":{"type":"string"},"includeProof":{"type":"boolean"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"usedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"active":{"type":"boolean"}},"required":["id","entryId","label","includeProof","createdByPrincipalId","createdAt","expiresAt","revokedAt","usedCount","lastUsedAt","active"],"additionalProperties":false}},"required":["share"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/consistency-proof":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"oldSize","required":true},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"newSize","required":false},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"},"in":"query","name":"oldRoot","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"oldSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldRoot":{"type":"string"},"derivedOldRoot":{"type":"string"},"oldRootSupplied":{"type":"boolean"},"newSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newRoot":{"type":"string"},"proof":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean"},"disclosure":{"type":"string"}},"required":["oldSize","oldRoot","derivedOldRoot","oldRootSupplied","newSize","newRoot","proof","verified","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/checkpoints":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latest":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"origin":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"note":{"type":"string"},"signedNote":{"type":"string"},"signature":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"timestamp":{"type":"object","properties":{"status":{"type":"string"},"authority":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"token":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"authorityTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"imprint":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["status","authority","token","authorityTime","imprint","disclosure"],"additionalProperties":false},"witnesses":{"type":"array","items":{"type":"object","properties":{"witnessId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countersigned":{"type":"boolean"},"countersignatureVerified":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["witnessId","name","kind","custody","status","attempts","deliveredAt","countersigned","countersignatureVerified","error"],"additionalProperties":false}}},"required":["id","origin","treeSize","rootHash","note","signedNote","signature","keyId","algorithm","issuedAt","timestamp","witnesses"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"checkpoints":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"origin":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"note":{"type":"string"},"signedNote":{"type":"string"},"signature":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"timestamp":{"type":"object","properties":{"status":{"type":"string"},"authority":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"token":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"authorityTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"imprint":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["status","authority","token","authorityTime","imprint","disclosure"],"additionalProperties":false},"witnesses":{"type":"array","items":{"type":"object","properties":{"witnessId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countersigned":{"type":"boolean"},"countersignatureVerified":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["witnessId","name","kind","custody","status","attempts","deliveredAt","countersigned","countersignatureVerified","error"],"additionalProperties":false}}},"required":["id","origin","treeSize","rootHash","note","signedNote","signature","keyId","algorithm","issuedAt","timestamp","witnesses"],"additionalProperties":false}}},"required":["treeSize","latest","checkpoints"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["proof-ledger"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{"deliver":true,"skipIfUnchanged":false},"type":"object","properties":{"deliver":{"default":true,"type":"boolean"},"skipIfUnchanged":{"default":false,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"checkpoint":{"type":"object","properties":{"id":{"type":"string"},"origin":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"note":{"type":"string"},"signedNote":{"type":"string"},"signature":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"timestamp":{"type":"object","properties":{"status":{"type":"string"},"authority":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"token":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"authorityTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"imprint":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["status","authority","token","authorityTime","imprint","disclosure"],"additionalProperties":false},"witnesses":{"type":"array","items":{"type":"object","properties":{"witnessId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countersigned":{"type":"boolean"},"countersignatureVerified":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["witnessId","name","kind","custody","status","attempts","deliveredAt","countersigned","countersignatureVerified","error"],"additionalProperties":false}}},"required":["id","origin","treeSize","rootHash","note","signedNote","signature","keyId","algorithm","issuedAt","timestamp","witnesses"],"additionalProperties":false},"created":{"type":"boolean"},"delivery":{"anyOf":[{},{"nullable":true,"enum":[null]}]}},"required":["checkpoint","created","delivery"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/checkpoints/{checkpointId}/deliver":{"post":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"checkpointId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"delivery":{},"checkpoint":{"type":"object","properties":{"id":{"type":"string"},"origin":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"note":{"type":"string"},"signedNote":{"type":"string"},"signature":{"type":"string"},"keyId":{"type":"string"},"algorithm":{"type":"string"},"issuedAt":{"type":"string"},"timestamp":{"type":"object","properties":{"status":{"type":"string"},"authority":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"token":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"authorityTime":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"imprint":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["status","authority","token","authorityTime","imprint","disclosure"],"additionalProperties":false},"witnesses":{"type":"array","items":{"type":"object","properties":{"witnessId":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countersigned":{"type":"boolean"},"countersignatureVerified":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["witnessId","name","kind","custody","status","attempts","deliveredAt","countersigned","countersignatureVerified","error"],"additionalProperties":false}}},"required":["id","origin","treeSize","rootHash","note","signedNote","signature","keyId","algorithm","issuedAt","timestamp","witnesses"],"additionalProperties":false}},"required":["delivery","checkpoint"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/witnesses":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"witnesses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"endpoint":{"type":"string"},"enabled":{"type":"boolean"},"hasSecret":{"type":"boolean"},"config":{},"expectsCountersignature":{"type":"boolean"},"publicKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDeliveredTreeSize":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"lastDeliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"independent":{"type":"boolean"},"custodyUnverified":{"type":"boolean"},"disclosure":{"type":"string"}},"required":["id","name","kind","custody","endpoint","enabled","hasSecret","config","expectsCountersignature","publicKey","lastDeliveredTreeSize","lastDeliveredAt","deliveredCount","failureCount","lastError","createdAt","independent","custodyUnverified","disclosure"],"additionalProperties":false}},"independentlyWitnessed":{"type":"boolean"},"disclosure":{"type":"string"}},"required":["witnesses","independentlyWitnessed","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["proof-ledger"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","enum":["OBJECT_STORE","WEBHOOK"]},"custody":{"default":"CUSTOMER","type":"string","enum":["CUSTOMER","ISSUER"]},"endpoint":{"type":"string","minLength":1,"maxLength":1000},"secret":{"type":"string","minLength":16,"maxLength":200},"config":{"default":{},"type":"object","additionalProperties":{}},"expectsCountersignature":{"default":false,"type":"boolean"},"publicKey":{"type":"string","maxLength":4000}},"required":["name","kind","endpoint"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"witness":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"endpoint":{"type":"string"},"enabled":{"type":"boolean"},"hasSecret":{"type":"boolean"},"config":{},"expectsCountersignature":{"type":"boolean"},"publicKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDeliveredTreeSize":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"lastDeliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"independent":{"type":"boolean"},"custodyUnverified":{"type":"boolean"},"disclosure":{"type":"string"}},"required":["id","name","kind","custody","endpoint","enabled","hasSecret","config","expectsCountersignature","publicKey","lastDeliveredTreeSize","lastDeliveredAt","deliveredCount","failureCount","lastError","createdAt","independent","custodyUnverified","disclosure"],"additionalProperties":false}},"required":["witness"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/witnesses/{witnessId}":{"patch":{"tags":["proof-ledger"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":120}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"witnessId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"witness":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"custody":{"type":"string"},"endpoint":{"type":"string"},"enabled":{"type":"boolean"},"hasSecret":{"type":"boolean"},"config":{},"expectsCountersignature":{"type":"boolean"},"publicKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastDeliveredTreeSize":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"lastDeliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"deliveredCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"independent":{"type":"boolean"},"custodyUnverified":{"type":"boolean"},"disclosure":{"type":"string"}},"required":["id","name","kind","custody","endpoint","enabled","hasSecret","config","expectsCountersignature","publicKey","lastDeliveredTreeSize","lastDeliveredAt","deliveredCount","failureCount","lastError","createdAt","independent","custodyUnverified","disclosure"],"additionalProperties":false}},"required":["witness"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"witnessId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"},"retainedReceipts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["deleted","retainedReceipts"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/witnesses/{witnessId}/receipts":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"witnessId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"receipts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"checkpointId":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countersignature":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countersignatureVerified":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"receipt":{},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","checkpointId","treeSize","rootHash","status","attempts","deliveredAt","countersignature","countersignatureVerified","receipt","error"],"additionalProperties":false}},"attestedHeads":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"storedHeads":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclosure":{"type":"string"}},"required":["receipts","attestedHeads","storedHeads","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/proof-ledger/audit":{"get":{"tags":["proof-ledger"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"checkpointsChecked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ok":{"type":"boolean"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"treeSize":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["code","message","treeSize"],"additionalProperties":false}},"latestCheckpointTreeSize":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["orgId","treeSize","rootHash","checkpointsChecked","ok","findings","latestCheckpointTreeSize","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/divergence":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":120},"reference":{"$ref":"#/components/schemas/ExecutionTraceInput"},"candidate":{"$ref":"#/components/schemas/ExecutionTraceInput"},"control":{"anyOf":[{"$ref":"#/components/schemas/ExecutionTraceInput"},{"nullable":true,"enum":[null]}]},"patched":{"anyOf":[{"$ref":"#/components/schemas/ExecutionTraceInput"},{"nullable":true,"enum":[null]}]},"patchedControl":{"anyOf":[{"$ref":"#/components/schemas/ExecutionTraceInput"},{"nullable":true,"enum":[null]}]},"intendedFrameKeys":{"anyOf":[{"maxItems":50,"type":"array","items":{"type":"string","maxLength":1024}},{"nullable":true,"enum":[null]}]},"disabledRules":{"anyOf":[{"maxItems":32,"type":"array","items":{"type":"string","maxLength":120}},{"nullable":true,"enum":[null]}]}},"required":["source","reference","candidate"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"source":{"type":"string"},"status":{"type":"string"},"faultClass":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"frameKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"file":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"line":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"frameIndex":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"divergenceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postPatchOutcome":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"localization":{"type":"object","additionalProperties":{}},"postPatch":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]}},"required":["id","issueId","source","status","faultClass","frameKey","file","line","frameIndex","divergenceCount","postPatchOutcome","createdAt","localization","postPatch"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"source":{"type":"string"},"status":{"type":"string"},"faultClass":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"frameKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"file":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"line":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"frameIndex":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"divergenceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postPatchOutcome":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"localization":{"type":"object","additionalProperties":{}},"postPatch":{"anyOf":[{"type":"object","additionalProperties":{}},{"nullable":true,"enum":[null]}]}},"required":["id","issueId","source","status","faultClass","frameKey","file","line","frameIndex","divergenceCount","postPatchOutcome","createdAt","localization","postPatch"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-diff/traffic":{"post":{"tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sampleKey":{"type":"string","minLength":1,"maxLength":256},"method":{"type":"string","minLength":1,"maxLength":16},"route":{"type":"string","minLength":1,"maxLength":512},"request":{"type":"object","properties":{"method":{"type":"string","minLength":1,"maxLength":16},"path":{"type":"string","minLength":1,"maxLength":2048},"query":{"default":{},"type":"object","additionalProperties":{"type":"string","maxLength":4096}},"headers":{"default":{},"type":"object","additionalProperties":{"type":"string","maxLength":8192}},"body":{"$ref":"#/components/schemas/schema0Input"}},"required":["method","path"]},"response":{"type":"object","properties":{"status":{"type":"integer","minimum":0,"maximum":999},"headers":{"default":{},"type":"object","additionalProperties":{"type":"string","maxLength":8192}},"body":{"$ref":"#/components/schemas/schema0Input"}},"required":["status"]},"executedFrames":{"default":[],"maxItems":500,"type":"array","items":{"type":"object","properties":{"file":{"type":"string","minLength":1,"maxLength":1024},"lines":{"default":[],"maxItems":2000,"type":"array","items":{"type":"integer","minimum":0,"maximum":10000000}}},"required":["file"]}},"mocks":{"default":{},"type":"object","additionalProperties":{"type":"object","properties":{"signature":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":256},"result":{"$ref":"#/components/schemas/schema0Input"},"failed":{"default":false,"type":"boolean"}},"required":["signature","name"]}},"reproducedIssueId":{"default":null,"anyOf":[{"type":"string","maxLength":64},{"nullable":true,"enum":[null]}]},"capturedAt":{}},"required":["sampleKey","method","route","request","response"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sampleKey":{"type":"string"},"method":{"type":"string"},"route":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"executedFiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redactions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reproducedIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"capturedAt":{"type":"string"}},"required":["id","sampleKey","method","route","status","executedFiles","mockCount","redactions","reproducedIssueId","capturedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["projects"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"samples":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sampleKey":{"type":"string"},"method":{"type":"string"},"route":{"type":"string"},"executedFiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reproducedIssueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"capturedAt":{"type":"string"}},"required":["id","sampleKey","method","route","executedFiles","mockCount","reproducedIssueId","capturedAt"],"additionalProperties":false}}},"required":["samples"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-diff/selection-preview":{"post":{"tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"diff":{"type":"string","minLength":1,"maxLength":524288},"declaredEntrypoints":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","maxLength":512}},"includeFileLevel":{"default":true,"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":500},"sinceDays":{"type":"integer","minimum":1,"maximum":365}},"required":["diff"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"candidatePool":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limitReached":{"type":"boolean"},"criteria":{"type":"array","items":{"type":"object","properties":{"basis":{"type":"string"},"samples":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"type":"string"}},"required":["basis","samples","description"],"additionalProperties":false}},"coverageCeiling":{"type":"object","properties":{"patchedFiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"patchedLinesExecutable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"patchedLinesExercised":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"filesNotExercised":{"type":"array","items":{"type":"string"}},"addedLinesUnreachableByRecording":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instrument":{"type":"string"},"fileGranularityOnly":{"type":"boolean"}},"required":["patchedFiles","patchedLinesExecutable","patchedLinesExercised","ratio","filesNotExercised","addedLinesUnreachableByRecording","instrument","fileGranularityOnly"],"additionalProperties":false},"coverageStatement":{"type":"string"},"patchedFiles":{"type":"array","items":{"type":"string"}},"decisions":{"type":"array","items":{"type":"object","properties":{"sampleId":{"type":"string"},"selected":{"type":"boolean"},"basis":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"matchedFiles":{"type":"array","items":{"type":"string"}},"matchedLines":{"type":"array","items":{"type":"string"}}},"required":["sampleId","selected","basis","reason","matchedFiles","matchedLines"],"additionalProperties":false}},"decisionsTruncated":{"type":"boolean"}},"required":["candidatePool","selected","limitReached","criteria","coverageCeiling","coverageStatement","patchedFiles","decisions","decisionsTruncated"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-diff/runs":{"get":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"proposalId","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"patchDigest":{"type":"string"},"baseCommit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string"},"selection":{"type":"object","properties":{"candidatePool":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notReplayed":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"criteria":{"type":"array","items":{"type":"object","properties":{"basis":{"type":"string"},"samples":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"type":"string"}},"required":["basis","samples","description"],"additionalProperties":false}}},"required":["candidatePool","selected","replayed","notReplayed","criteria"],"additionalProperties":false},"coverage":{"type":"object","properties":{"patchedFiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"patchedLinesExecutable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"patchedLinesExercised":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"filesNotExercised":{"type":"array","items":{"type":"string"}},"addedLinesUnreachableByRecording":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instrument":{"type":"string"},"fileGranularityOnly":{"type":"boolean"}},"required":["patchedFiles","patchedLinesExecutable","patchedLinesExercised","ratio","filesNotExercised","addedLinesUnreachableByRecording","instrument","fileGranularityOnly"],"additionalProperties":false},"normalizers":{"type":"array","items":{"type":"string"}},"samplesWithDiffs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"diffsFound":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"intended":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unintended":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unclassified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"establishesAnything":{"type":"boolean"},"coverageStatement":{"type":"string"},"sandboxProvider":{"type":"string"},"dependenciesMockedFromRecording":{"type":"boolean"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sampleId":{"type":"string"},"route":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"pointer":{"type":"string"},"change":{"type":"string"},"classification":{"type":"string"},"basis":{"type":"object","properties":{"rule":{"type":"string"},"detail":{"type":"string"},"source":{"type":"string"}},"required":["rule","detail","source"],"additionalProperties":false},"selectionBasis":{"type":"string"},"normalizations":{"type":"array","items":{"type":"string"}},"before":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"after":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","sampleId","route","pointer","change","classification","basis","selectionBasis","normalizations","before","after"],"additionalProperties":false}}},"required":["id","projectId","proposalId","patchDigest","baseCommit","status","selection","coverage","normalizers","samplesWithDiffs","diffsFound","intended","unintended","unclassified","establishesAnything","coverageStatement","sandboxProvider","dependenciesMockedFromRecording","startedAt","completedAt","securityNotice"],"additionalProperties":false}}},"required":["runs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-diff/runs/{runId}":{"get":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"runId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"patchDigest":{"type":"string"},"baseCommit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string"},"selection":{"type":"object","properties":{"candidatePool":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notReplayed":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"criteria":{"type":"array","items":{"type":"object","properties":{"basis":{"type":"string"},"samples":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"type":"string"}},"required":["basis","samples","description"],"additionalProperties":false}}},"required":["candidatePool","selected","replayed","notReplayed","criteria"],"additionalProperties":false},"coverage":{"type":"object","properties":{"patchedFiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"patchedLinesExecutable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"patchedLinesExercised":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"filesNotExercised":{"type":"array","items":{"type":"string"}},"addedLinesUnreachableByRecording":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instrument":{"type":"string"},"fileGranularityOnly":{"type":"boolean"}},"required":["patchedFiles","patchedLinesExecutable","patchedLinesExercised","ratio","filesNotExercised","addedLinesUnreachableByRecording","instrument","fileGranularityOnly"],"additionalProperties":false},"normalizers":{"type":"array","items":{"type":"string"}},"samplesWithDiffs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"diffsFound":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"intended":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unintended":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unclassified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"establishesAnything":{"type":"boolean"},"coverageStatement":{"type":"string"},"sandboxProvider":{"type":"string"},"dependenciesMockedFromRecording":{"type":"boolean"},"startedAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sampleId":{"type":"string"},"route":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"pointer":{"type":"string"},"change":{"type":"string"},"classification":{"type":"string"},"basis":{"type":"object","properties":{"rule":{"type":"string"},"detail":{"type":"string"},"source":{"type":"string"}},"required":["rule","detail","source"],"additionalProperties":false},"selectionBasis":{"type":"string"},"normalizations":{"type":"array","items":{"type":"string"}},"before":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"after":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","sampleId","route","pointer","change","classification","basis","selectionBasis","normalizations","before","after"],"additionalProperties":false}}},"required":["id","projectId","proposalId","patchDigest","baseCommit","status","selection","coverage","normalizers","samplesWithDiffs","diffsFound","intended","unintended","unclassified","establishesAnything","coverageStatement","sandboxProvider","dependenciesMockedFromRecording","startedAt","completedAt","securityNotice"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/state-slice":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"stateSlice":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"string","enum":["1.0.0"]},"captureVersion":{"type":"string"},"origin":{"type":"string","enum":["throw","probe"]},"probeId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faultExpression":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"file":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"function":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"values":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"reason":{"type":"string","enum":["FAULT_EXPRESSION_OPERAND","TRANSITIVE_ASSIGNMENT","DESTRUCTURED_BINDING","FUNCTION_PARAMETER","CLOSURE_CAPTURE","CONSERVATIVE_UNRESOLVED"]},"depth":{"type":"integer","minimum":0,"maximum":9007199254740991},"definedAtLine":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"type":{"type":"string"},"preview":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"paths":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false}},"nullPath":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["name","reason","depth","definedAtLine","type","preview","paths","nullPath","note"],"additionalProperties":false}},"redactions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"reason":{"type":"string"},"shape":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"length":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["name","reason","shape","length"],"additionalProperties":false}},"redactionSummary":{"type":"array","items":{"type":"string"}},"analysis":{"type":"object","properties":{"complete":{"type":"boolean"},"notes":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false}},"statementsScanned":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["complete","notes","statementsScanned"],"additionalProperties":false},"truncated":{"type":"array","items":{"type":"string"}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"estimatedTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"generatedAt":{"type":"string"}},"required":["schemaVersion","captureVersion","origin","probeId","faultExpression","file","line","function","values","redactions","redactionSummary","analysis","truncated","securityNotice","estimatedTokens","generatedAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["available","reason","stateSlice"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/state-probes":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","minLength":3,"maxLength":1024},"line":{"type":"integer","minimum":1,"maximum":10000000},"names":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"rationale":{"type":"string","minLength":10,"maxLength":1000},"ttlMinutes":{"type":"integer","minimum":5,"maximum":240},"maxCaptures":{"type":"integer","minimum":1,"maximum":50}},"required":["file","line","names","rationale"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"probe":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"file":{"type":"string"},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"names":{"type":"array","items":{"type":"string"}},"rationale":{"type":"string"},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVOKED","REJECTED","EXHAUSTED"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxCaptures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"captureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentTokenJti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"alwaysExpires":{"type":"boolean","enum":[true]}},"required":["id","orgId","projectId","issueId","file","line","names","rationale","status","revision","maxCaptures","captureCount","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","activatedAt","expiresAt","revokedAt","revokeReason","incidentTokenJti","createdAt","alwaysExpires"],"additionalProperties":false},"approval":{"type":"object","properties":{"requestId":{"type":"string"},"status":{"type":"string"},"minApprovers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"riskClass":{"type":"string"},"reason":{"type":"string"}},"required":["requestId","status","minApprovers","riskClass","reason"],"additionalProperties":false}},"required":["probe","approval"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/state-probes":{"get":{"tags":["state-probes"],"parameters":[{"schema":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVOKED","REJECTED","EXHAUSTED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"issueId","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"file":{"type":"string"},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"names":{"type":"array","items":{"type":"string"}},"rationale":{"type":"string"},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVOKED","REJECTED","EXHAUSTED"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxCaptures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"captureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentTokenJti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"alwaysExpires":{"type":"boolean","enum":[true]}},"required":["id","orgId","projectId","issueId","file","line","names","rationale","status","revision","maxCaptures","captureCount","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","activatedAt","expiresAt","revokedAt","revokeReason","incidentTokenJti","createdAt","alwaysExpires"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/state-probes/sweep":{"post":{"tags":["state-probes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"checked":{"type":"integer","minimum":0,"maximum":9007199254740991},"expired":{"type":"array","items":{"type":"string"}},"errors":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["checked","expired","errors"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/state-probes/{id}":{"get":{"tags":["state-probes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"file":{"type":"string"},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"names":{"type":"array","items":{"type":"string"}},"rationale":{"type":"string"},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVOKED","REJECTED","EXHAUSTED"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxCaptures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"captureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentTokenJti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"alwaysExpires":{"type":"boolean","enum":[true]}},"required":["id","orgId","projectId","issueId","file","line","names","rationale","status","revision","maxCaptures","captureCount","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","activatedAt","expiresAt","revokedAt","revokeReason","incidentTokenJti","createdAt","alwaysExpires"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/state-probes/{id}/activate":{"post":{"tags":["state-probes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"probe":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"file":{"type":"string"},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"names":{"type":"array","items":{"type":"string"}},"rationale":{"type":"string"},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVOKED","REJECTED","EXHAUSTED"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxCaptures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"captureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentTokenJti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"alwaysExpires":{"type":"boolean","enum":[true]}},"required":["id","orgId","projectId","issueId","file","line","names","rationale","status","revision","maxCaptures","captureCount","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","activatedAt","expiresAt","revokedAt","revokeReason","incidentTokenJti","createdAt","alwaysExpires"],"additionalProperties":false}},"required":["probe"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/state-probes/{id}/revoke":{"post":{"tags":["state-probes"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"probe":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"file":{"type":"string"},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"names":{"type":"array","items":{"type":"string"}},"rationale":{"type":"string"},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVOKED","REJECTED","EXHAUSTED"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxCaptures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"captureCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"activatedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"incidentTokenJti":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"alwaysExpires":{"type":"boolean","enum":[true]}},"required":["id","orgId","projectId","issueId","file","line","names","rationale","status","revision","maxCaptures","captureCount","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","activatedAt","expiresAt","revokedAt","revokeReason","incidentTokenJti","createdAt","alwaysExpires"],"additionalProperties":false}},"required":["probe"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/state-probes/{id}/captures":{"get":{"tags":["state-probes"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"capturedAt":{"type":"string"},"stateSlice":{"anyOf":[{"type":"object","properties":{"block":{"type":"object","properties":{"schemaVersion":{"type":"string","enum":["1.0.0"]},"captureVersion":{"type":"string"},"origin":{"type":"string","enum":["throw","probe"]},"probeId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faultExpression":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"file":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"function":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"values":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"reason":{"type":"string","enum":["FAULT_EXPRESSION_OPERAND","TRANSITIVE_ASSIGNMENT","DESTRUCTURED_BINDING","FUNCTION_PARAMETER","CLOSURE_CAPTURE","CONSERVATIVE_UNRESOLVED"]},"depth":{"type":"integer","minimum":0,"maximum":9007199254740991},"definedAtLine":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"type":{"type":"string"},"preview":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"paths":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false}},"nullPath":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["name","reason","depth","definedAtLine","type","preview","paths","nullPath","note"],"additionalProperties":false}},"redactions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false},"reason":{"type":"string"},"shape":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"length":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["name","reason","shape","length"],"additionalProperties":false}},"redactionSummary":{"type":"array","items":{"type":"string"}},"analysis":{"type":"object","properties":{"complete":{"type":"boolean"},"notes":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"trust":{"type":"string","enum":["trusted","code","untrusted","quarantined"]},"flagged":{"type":"string"}},"required":["value","trust"],"additionalProperties":false}},"statementsScanned":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["complete","notes","statementsScanned"],"additionalProperties":false},"truncated":{"type":"array","items":{"type":"string"}},"securityNotice":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"estimatedTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"generatedAt":{"type":"string"}},"required":["schemaVersion","captureVersion","origin","probeId","faultExpression","file","line","function","values","redactions","redactionSummary","analysis","truncated","securityNotice","estimatedTokens","generatedAt"],"additionalProperties":false},"reductions":{"type":"array","items":{"type":"string"}},"manifest":{"type":"object","properties":{"tier":{"type":"string","enum":["stored","agent"]},"entries":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"rule":{"type":"string"},"action":{"type":"string","enum":["remove","replace","hash"]},"shape":{"type":"string"},"length":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["path","rule","action","shape","length","count"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"}},"required":["tier","entries","total","truncated"],"additionalProperties":false},"quarantined":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["block","reductions","manifest","quarantined"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","sequence","capturedAt","stateSlice"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/probes/{projectId}/specs":{"get":{"tags":["probes"],"description":"Reachable without a Bucker session token. State-slice spec feed — DSN public key; revocation propagates through it.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"specs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"file":{"type":"string"},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"names":{"type":"array","items":{"type":"string"}},"maxCaptures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"type":"number"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","file","line","names","maxCaptures","expiresAt","revision"],"additionalProperties":false}}},"required":["specs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/probes/{projectId}/captures":{"post":{"tags":["probes"],"description":"Reachable without a Bucker session token. State-slice capture report — DSN public key, cross-checked against the probe owner.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"probeId":{"type":"string","minLength":1,"maxLength":64},"capture":{}},"required":["probeId","capture"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean","enum":[true]},"captureId":{"type":"string"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":0,"maximum":9007199254740991},"redactionSummary":{"type":"array","items":{"type":"string"}}},"required":["accepted","captureId","sequence","remaining","redactionSummary"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean","enum":[false]},"code":{"type":"string","enum":["PROBE_NOT_ACTIVE","PROBE_EXPIRED","PROBE_CAP_REACHED","NAME_NOT_APPROVED","CAPTURE_UNPARSEABLE"]},"reason":{"type":"string"}},"required":["accepted","code","reason"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/neutral-verification":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"diff":{"type":"string","minLength":1,"maxLength":524288},"originKind":{"type":"string","enum":["EXTERNAL_AGENT","HUMAN_CONTRACTOR","UNATTRIBUTED"]},"declaredAuthor":{"type":"object","properties":{"vendor":{"description":"Organisation behind the author, e.g. \"github\", \"cognition\".","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]},"agentName":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]},"agentVersion":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"nullable":true,"enum":[null]}]},"modelId":{"description":"Model the submitter says produced the diff. Recorded, never verified.","anyOf":[{"type":"string","minLength":1,"maxLength":200},{"nullable":true,"enum":[null]}]}}},"approach":{"anyOf":[{"type":"string","maxLength":200},{"nullable":true,"enum":[null]}]},"hasNewEvidence":{"type":"boolean"},"signedBundle":{},"agentId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]}},"required":["diff","originKind"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"submission":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"runId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string"},"channel":{"type":"string"},"originKind":{"type":"string"},"attestationSource":{"type":"string"},"declaredAuthor":{"type":"object","properties":{"vendor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"modelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["vendor","agentName","agentVersion","modelId"],"additionalProperties":false},"diffDigest":{"type":"string"},"diffBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filesChanged":{"type":"array","items":{"type":"string"}},"verificationTier":{"type":"string"},"certificateEntryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reservedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejectionCode":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"submittedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["id","orgId","projectId","issueId","runId","proposalId","status","channel","originKind","attestationSource","declaredAuthor","diffDigest","diffBytes","filesChanged","verificationTier","certificateEntryId","reservedCents","costCents","rejectionCode","rejectionReason","submittedByPrincipalId","createdAt","settledAt","disclosure"],"additionalProperties":false},"admission":{"type":"object","properties":{"observed":{"type":"object","properties":{"lastHour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inFlight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"spentCents30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["lastHour","lastDay","inFlight","spentCents30d"],"additionalProperties":false},"policy":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"submissionsPerHour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"submissionsPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxConcurrent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthlyBudgetCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costPerSubmissionCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDefault":{"type":"boolean"}},"required":["orgId","enabled","submissionsPerHour","submissionsPerDay","maxConcurrent","monthlyBudgetCents","costPerSubmissionCents","isDefault"],"additionalProperties":false},"reservedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["observed","policy","reservedCents"],"additionalProperties":false},"nextStep":{"type":"string"}},"required":["submission","admission","nextStep"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/neutral-verification/quota":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"admitted":{"type":"boolean"},"code":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"observed":{"type":"object","properties":{"lastHour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inFlight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"spentCents30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["lastHour","lastDay","inFlight","spentCents30d"],"additionalProperties":false},"policy":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"submissionsPerHour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"submissionsPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxConcurrent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthlyBudgetCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costPerSubmissionCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDefault":{"type":"boolean"}},"required":["orgId","enabled","submissionsPerHour","submissionsPerDay","maxConcurrent","monthlyBudgetCents","costPerSubmissionCents","isDefault"],"additionalProperties":false},"reservedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["admitted","code","reason","observed","policy","reservedCents"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/neutral-verification/submissions":{"get":{"tags":["neutral-verification"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"issueId","required":false},{"schema":{"type":"string","enum":["QUEUED","VERIFYING","CERTIFIED","REJECTED","FAILED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","enum":["FIRST_PARTY","EXTERNAL_AGENT","HUMAN_CONTRACTOR","UNATTRIBUTED"]},"in":"query","name":"originKind","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"submissions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"runId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string"},"channel":{"type":"string"},"originKind":{"type":"string"},"attestationSource":{"type":"string"},"declaredAuthor":{"type":"object","properties":{"vendor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"modelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["vendor","agentName","agentVersion","modelId"],"additionalProperties":false},"diffDigest":{"type":"string"},"diffBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filesChanged":{"type":"array","items":{"type":"string"}},"verificationTier":{"type":"string"},"certificateEntryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reservedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejectionCode":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"submittedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["id","orgId","projectId","issueId","runId","proposalId","status","channel","originKind","attestationSource","declaredAuthor","diffDigest","diffBytes","filesChanged","verificationTier","certificateEntryId","reservedCents","costCents","rejectionCode","rejectionReason","submittedByPrincipalId","createdAt","settledAt","disclosure"],"additionalProperties":false}},"byOriginKind":{"type":"array","items":{"type":"object","properties":{"originKind":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["originKind","count"],"additionalProperties":false}}},"required":["submissions","byOriginKind"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/neutral-verification/submissions/{submissionId}":{"get":{"tags":["neutral-verification"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"submissionId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"submission":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"runId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"proposalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string"},"channel":{"type":"string"},"originKind":{"type":"string"},"attestationSource":{"type":"string"},"declaredAuthor":{"type":"object","properties":{"vendor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"agentVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"modelId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["vendor","agentName","agentVersion","modelId"],"additionalProperties":false},"diffDigest":{"type":"string"},"diffBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filesChanged":{"type":"array","items":{"type":"string"}},"verificationTier":{"type":"string"},"certificateEntryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reservedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejectionCode":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rejectionReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"submittedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclosure":{"type":"string"}},"required":["id","orgId","projectId","issueId","runId","proposalId","status","channel","originKind","attestationSource","declaredAuthor","diffDigest","diffBytes","filesChanged","verificationTier","certificateEntryId","reservedCents","costCents","rejectionCode","rejectionReason","submittedByPrincipalId","createdAt","settledAt","disclosure"],"additionalProperties":false},"certificate":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"certificateUnavailableReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verifiedFix":{"type":"boolean"},"runLog":{"type":"array","items":{"type":"object","properties":{"stage":{"type":"string"},"ok":{"type":"boolean"},"detail":{"type":"string"},"at":{"type":"string"}},"required":["stage","ok","detail","at"],"additionalProperties":false}}},"required":["submission","certificate","certificateUnavailableReason","verifiedFix","runLog"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/neutral-verification/policy":{"get":{"tags":["neutral-verification"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"submissionsPerHour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"submissionsPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxConcurrent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthlyBudgetCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costPerSubmissionCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDefault":{"type":"boolean"}},"required":["orgId","enabled","submissionsPerHour","submissionsPerDay","maxConcurrent","monthlyBudgetCents","costPerSubmissionCents","isDefault"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["neutral-verification"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"submissionsPerHour":{"type":"integer","minimum":0,"maximum":10000},"submissionsPerDay":{"type":"integer","minimum":0,"maximum":100000},"maxConcurrent":{"type":"integer","minimum":0,"maximum":200},"monthlyBudgetCents":{"type":"integer","minimum":0,"maximum":100000000},"costPerSubmissionCents":{"type":"integer","minimum":0,"maximum":1000000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"enabled":{"type":"boolean"},"submissionsPerHour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"submissionsPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxConcurrent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthlyBudgetCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costPerSubmissionCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDefault":{"type":"boolean"}},"required":["orgId","enabled","submissionsPerHour","submissionsPerDay","maxConcurrent","monthlyBudgetCents","costPerSubmissionCents","isDefault"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard":{"get":{"tags":["scoreboard"],"parameters":[{"schema":{"default":90,"type":"integer","minimum":1,"maximum":365},"in":"query","name":"windowDays","required":false},{"schema":{"default":"agent","type":"string","enum":["agent","category","language","repo"]},"in":"query","name":"dimension","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minSampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dimension":{"type":"string"},"cells":{"type":"array","items":{"type":"object","properties":{"agentKey":{"type":"string"},"dimension":{"type":"string"},"dimensionValue":{"type":"string"},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attempted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"noResponse":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedFixRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"costPerVerifiedFixCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"totalCostCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"noResponseRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"regressionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"regressionSampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durabilityPending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refusal":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["agentKey","dimension","dimensionValue","sampleSize","attempted","verified","rejected","noResponse","verifiedFixRate","costPerVerifiedFixCents","totalCostCents","noResponseRate","regressionRate","regressionSampleSize","durabilityPending","refusal"],"additionalProperties":false}},"unsettled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selectionBias":{"minItems":1,"type":"array","items":{"type":"string"}},"sampleSizeStatement":{"type":"string"}},"required":["orgId","windowDays","minSampleSize","dimension","cells","unsettled","selectionBias","sampleSizeStatement"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/replay-plan":{"get":{"tags":["scoreboard"],"parameters":[{"schema":{"default":90,"type":"integer","minimum":1,"maximum":365},"in":"query","name":"windowDays","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolvedConsidered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eligibleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eligible":{"type":"array","items":{"type":"object","properties":{"issueId":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"category":{"type":"string"},"language":{"type":"string"},"repo":{"type":"string"},"groundTruthCommitSha":{"type":"string"},"groundTruthSource":{"type":"string"},"resolvedAt":{"type":"string"}},"required":["issueId","shortId","projectId","category","language","repo","groundTruthCommitSha","groundTruthSource","resolvedAt"],"additionalProperties":false}},"exclusions":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"explanation":{"type":"string"}},"required":["reason","count","explanation"],"additionalProperties":false}},"selectionBias":{"minItems":1,"type":"array","items":{"type":"string"}}},"required":["orgId","projectId","windowDays","resolvedConsidered","eligibleCount","eligible","exclusions","selectionBias"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/replays":{"post":{"tags":["scoreboard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"agentKeys":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"projectId":{"type":"string","minLength":1},"windowDays":{"type":"integer","minimum":1,"maximum":365},"limit":{"type":"integer","minimum":1,"maximum":500}},"required":["label","agentKeys"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolvedConsidered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eligible":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusions":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"explanation":{"type":"string"}},"required":["reason","count","explanation"],"additionalProperties":false}},"agentKeys":{"type":"array","items":{"type":"string"}},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"selectionBias":{"minItems":1,"type":"array","items":{"type":"string"}}},"required":["id","orgId","projectId","label","windowDays","resolvedConsidered","eligible","exclusions","agentKeys","attempts","createdAt","selectionBias"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["scoreboard"],"parameters":[{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"replays":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolvedConsidered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eligible":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusions":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"explanation":{"type":"string"}},"required":["reason","count","explanation"],"additionalProperties":false}},"agentKeys":{"type":"array","items":{"type":"string"}},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"selectionBias":{"minItems":1,"type":"array","items":{"type":"string"}}},"required":["id","orgId","projectId","label","windowDays","resolvedConsidered","eligible","exclusions","agentKeys","attempts","createdAt","selectionBias"],"additionalProperties":false}}},"required":["replays"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/replays/{replayId}":{"get":{"tags":["scoreboard"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"replayId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"label":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolvedConsidered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eligible":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusions":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"explanation":{"type":"string"}},"required":["reason","count","explanation"],"additionalProperties":false}},"agentKeys":{"type":"array","items":{"type":"string"}},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"selectionBias":{"minItems":1,"type":"array","items":{"type":"string"}},"attemptRows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"replayId":{"type":"string"},"issueId":{"type":"string"},"agentKey":{"type":"string"},"category":{"type":"string"},"language":{"type":"string"},"repo":{"type":"string"},"groundTruthCommitSha":{"type":"string"},"groundTruthSource":{"type":"string"},"status":{"type":"string"},"submissionId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"verifiedFix":{"type":"boolean"},"costCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"originKind":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"attestationSource":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"dispatchedAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","replayId","issueId","agentKey","category","language","repo","groundTruthCommitSha","groundTruthSource","status","submissionId","verificationTier","verifiedFix","costCents","regressed","originKind","attestationSource","failureReason","dispatchedAt","settledAt"],"additionalProperties":false}}},"required":["id","orgId","projectId","label","windowDays","resolvedConsidered","eligible","exclusions","agentKeys","attempts","createdAt","selectionBias","attemptRows"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/attempts/{attemptId}/submission":{"post":{"tags":["scoreboard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"submissionId":{"type":"string","minLength":1}},"required":["submissionId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"attemptId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"replayId":{"type":"string"},"issueId":{"type":"string"},"agentKey":{"type":"string"},"category":{"type":"string"},"language":{"type":"string"},"repo":{"type":"string"},"groundTruthCommitSha":{"type":"string"},"groundTruthSource":{"type":"string"},"status":{"type":"string"},"submissionId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"verifiedFix":{"type":"boolean"},"costCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"originKind":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"attestationSource":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"dispatchedAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","replayId","issueId","agentKey","category","language","repo","groundTruthCommitSha","groundTruthSource","status","submissionId","verificationTier","verifiedFix","costCents","regressed","originKind","attestationSource","failureReason","dispatchedAt","settledAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/attempts/{attemptId}/no-response":{"post":{"tags":["scoreboard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"attemptId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"replayId":{"type":"string"},"issueId":{"type":"string"},"agentKey":{"type":"string"},"category":{"type":"string"},"language":{"type":"string"},"repo":{"type":"string"},"groundTruthCommitSha":{"type":"string"},"groundTruthSource":{"type":"string"},"status":{"type":"string"},"submissionId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"verifiedFix":{"type":"boolean"},"costCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regressed":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"originKind":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"attestationSource":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"dispatchedAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","replayId","issueId","agentKey","category","language","repo","groundTruthCommitSha","groundTruthSource","status","submissionId","verificationTier","verifiedFix","costCents","regressed","originKind","attestationSource","failureReason","dispatchedAt","settledAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/pins":{"get":{"tags":["scoreboard"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"pins":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"category":{"type":"string"},"agentKey":{"type":"string"},"basis":{},"basisSampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pinnedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","category","agentKey","basis","basisSampleSize","pinnedByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}},"required":["pins"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/pins/{category}":{"put":{"tags":["scoreboard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"agentKey":{"type":"string","minLength":1,"maxLength":200}},"required":["agentKey"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":60},"in":"path","name":"category","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"category":{"type":"string"},"agentKey":{"type":"string"},"basis":{},"basisSampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pinnedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","category","agentKey","basis","basisSampleSize","pinnedByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["scoreboard"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":60},"in":"path","name":"category","required":true}],"security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Default Response"},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/snapshot":{"post":{"tags":["scoreboard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"periodDays":{"type":"integer","minimum":1,"maximum":365}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"periodStart":{"type":"string"},"periodEnd":{"type":"string"},"written":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skippedBelowFloor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["periodStart","periodEnd","written","skippedBelowFloor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/degradation-sweep":{"post":{"tags":["scoreboard"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"agentsExamined":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"findings":{"type":"array","items":{"type":"object","properties":{"agentKey":{"type":"string"},"previous":{"type":"object","properties":{"periodStart":{"type":"string"},"rate":{"type":"number"},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["periodStart","rate","sampleSize"],"additionalProperties":false},"current":{"type":"object","properties":{"periodStart":{"type":"string"},"rate":{"type":"number"},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["periodStart","rate","sampleSize"],"additionalProperties":false},"dropPoints":{"type":"number"},"thresholdPoints":{"type":"number"},"reason":{"type":"string"},"alertEventIds":{"type":"array","items":{"type":"string"}},"notDeliveredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["agentKey","previous","current","dropPoints","thresholdPoints","reason","alertEventIds","notDeliveredReason"],"additionalProperties":false}},"skipped":{"type":"array","items":{"type":"object","properties":{"agentKey":{"type":"string"},"reason":{"type":"string"}},"required":["agentKey","reason"],"additionalProperties":false}}},"required":["orgId","agentsExamined","findings","skipped"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/scoreboard/settings":{"get":{"tags":["scoreboard"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"minSampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradationDropPoints":{"type":"number"},"degradationAlertRuleId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"isDefault":{"type":"boolean"}},"required":["orgId","minSampleSize","degradationDropPoints","degradationAlertRuleId","isDefault"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["scoreboard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"minSampleSize":{"type":"integer","minimum":2,"maximum":10000},"degradationDropPoints":{"type":"number","minimum":0.01,"maximum":1},"degradationAlertRuleId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"minSampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradationDropPoints":{"type":"number"},"degradationAlertRuleId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"isDefault":{"type":"boolean"}},"required":["orgId","minSampleSize","degradationDropPoints","degradationAlertRuleId","isDefault"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-fingerprint/issues/{issueId}/minimize":{"post":{"tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","minLength":1,"maxLength":80},"payload":{"$ref":"#/components/schemas/schema0Input"}},"required":["id","kind"]}},"signal":{"type":"object","properties":{"exceptionType":{"default":"","type":"string","maxLength":400},"message":{"default":"","type":"string","maxLength":4000},"frames":{"default":[],"maxItems":64,"type":"array","items":{"type":"string","maxLength":600}}}},"maxExecutions":{"type":"integer","minimum":1,"maximum":500},"maxCostMicros":{"type":"integer","minimum":0,"maximum":100000000},"costPerExecutionMicros":{"type":"integer","minimum":0,"maximum":1000000},"spend":{"type":"object","properties":{"agentId":{"type":"string","minLength":1,"maxLength":120},"onBehalfOfUserId":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]}},"required":["agentId"]}},"required":["steps"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"repro":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"status":{"type":"string","enum":["MINIMAL","BUDGET_EXHAUSTED","NOT_REPRODUCED"]},"oneMinimal":{"type":"boolean"},"digest":{"type":"string"},"originalStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizedStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reductionRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rounds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizerVersion":{"type":"string"},"signal":{"type":"object","properties":{"exceptionType":{"default":"","type":"string","maxLength":400},"message":{"default":"","type":"string","maxLength":4000},"frames":{"default":[],"maxItems":64,"type":"array","items":{"type":"string","maxLength":600}}},"required":["exceptionType","message","frames"],"additionalProperties":false},"minimizedSteps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","minLength":1,"maxLength":80},"payload":{"$ref":"#/components/schemas/schema0"}},"required":["id","kind","payload"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","projectId","issueId","status","oneMinimal","digest","originalStepCount","minimizedStepCount","reductionRatio","rounds","executions","cacheHits","costMicros","minimizerVersion","signal","minimizedSteps","createdAt"],"additionalProperties":false},"result":{"type":"object","properties":{"status":{"type":"string","enum":["MINIMAL","BUDGET_EXHAUSTED","NOT_REPRODUCED"]},"oneMinimal":{"type":"boolean"},"originalStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizedStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rounds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inconclusiveRuns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"budgetExhausted":{"type":"boolean"},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["status","oneMinimal","originalStepCount","minimizedStepCount","rounds","executions","cacheHits","costMicros","inconclusiveRuns","budgetExhausted","disclosures"],"additionalProperties":false}},"required":["repro","result"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-fingerprint/repros":{"get":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"issueId","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"status":{"type":"string","enum":["MINIMAL","BUDGET_EXHAUSTED","NOT_REPRODUCED"]},"oneMinimal":{"type":"boolean"},"digest":{"type":"string"},"originalStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizedStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reductionRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rounds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizerVersion":{"type":"string"},"signal":{"type":"object","properties":{"exceptionType":{"default":"","type":"string","maxLength":400},"message":{"default":"","type":"string","maxLength":4000},"frames":{"default":[],"maxItems":64,"type":"array","items":{"type":"string","maxLength":600}}},"required":["exceptionType","message","frames"],"additionalProperties":false},"minimizedSteps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","minLength":1,"maxLength":80},"payload":{"$ref":"#/components/schemas/schema0"}},"required":["id","kind","payload"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","projectId","issueId","status","oneMinimal","digest","originalStepCount","minimizedStepCount","reductionRatio","rounds","executions","cacheHits","costMicros","minimizerVersion","signal","minimizedSteps","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-fingerprint/repros/{reproId}":{"get":{"tags":["projects"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"reproId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"status":{"type":"string","enum":["MINIMAL","BUDGET_EXHAUSTED","NOT_REPRODUCED"]},"oneMinimal":{"type":"boolean"},"digest":{"type":"string"},"originalStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizedStepCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reductionRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rounds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimizerVersion":{"type":"string"},"signal":{"type":"object","properties":{"exceptionType":{"default":"","type":"string","maxLength":400},"message":{"default":"","type":"string","maxLength":4000},"frames":{"default":[],"maxItems":64,"type":"array","items":{"type":"string","maxLength":600}}},"required":["exceptionType","message","frames"],"additionalProperties":false},"minimizedSteps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","minLength":1,"maxLength":80},"payload":{"$ref":"#/components/schemas/schema0"}},"required":["id","kind","payload"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","projectId","issueId","status","oneMinimal","digest","originalStepCount","minimizedStepCount","reductionRatio","rounds","executions","cacheHits","costMicros","minimizerVersion","signal","minimizedSteps","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/projects/{projectId}/behavioral-fingerprint/repros/{reproId}/equivalence":{"post":{"tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"candidateIssueId":{"type":"string","minLength":1,"maxLength":120},"mutual":{"default":false,"type":"boolean"},"useCache":{"default":true,"type":"boolean"},"costPerExecutionMicros":{"type":"integer","minimum":0,"maximum":1000000},"spend":{"type":"object","properties":{"agentId":{"type":"string","minLength":1,"maxLength":120},"onBehalfOfUserId":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]}},"required":["agentId"]}},"required":["candidateIssueId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"projectId","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"reproId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"type":"string","enum":["FORWARD_ONLY","MUTUAL"]},"forward":{"type":"object","properties":{"reproId":{"type":"string"},"reproDigest":{"type":"string"},"candidateIssueId":{"type":"string"},"outcome":{"type":"string","enum":["EQUIVALENT","NOT_EQUIVALENT","INCONCLUSIVE"]},"reason":{"type":"string","enum":["SIGNAL_MATCH","SIGNAL_MATCH_NO_FRAMES","EXCEPTION_TYPE_DIFFERS","MESSAGE_DIFFERS","FRAMES_DIFFER","NO_FAILURE_OBSERVED","EXECUTOR_INVALID","REPRO_NOT_REPRODUCING","SELF"]},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fromCache":{"type":"boolean"},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["reproId","reproDigest","candidateIssueId","outcome","reason","executions","costMicros","fromCache","disclosures"],"additionalProperties":false},"reverse":{"anyOf":[{"type":"object","properties":{"reproId":{"type":"string"},"reproDigest":{"type":"string"},"candidateIssueId":{"type":"string"},"outcome":{"type":"string","enum":["EQUIVALENT","NOT_EQUIVALENT","INCONCLUSIVE"]},"reason":{"type":"string","enum":["SIGNAL_MATCH","SIGNAL_MATCH_NO_FRAMES","EXCEPTION_TYPE_DIFFERS","MESSAGE_DIFFERS","FRAMES_DIFFER","NO_FAILURE_OBSERVED","EXECUTOR_INVALID","REPRO_NOT_REPRODUCING","SELF"]},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fromCache":{"type":"boolean"},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["reproId","reproDigest","candidateIssueId","outcome","reason","executions","costMicros","fromCache","disclosures"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"mutual":{"type":"boolean"},"oneDirectional":{"type":"boolean"},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["direction","forward","reverse","mutual","oneDirectional","executions","costMicros","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/behavioral-fingerprint/evaluate":{"post":{"tags":["behavioral-fingerprint"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"sampleLimit":{"type":"integer","minimum":1,"maximum":500},"sampleSeed":{"type":"string","minLength":1,"maxLength":120},"maxExecutions":{"type":"integer","minimum":0,"maximum":2000},"maxCostMicros":{"type":"integer","minimum":0,"maximum":200000000},"costPerExecutionMicros":{"type":"integer","minimum":0,"maximum":1000000},"embeddingModel":{"type":"string","minLength":1,"maxLength":120},"useCache":{"type":"boolean"},"spend":{"type":"object","properties":{"agentId":{"type":"string","minLength":1,"maxLength":120},"onBehalfOfUserId":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]},"incidentId":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"nullable":true,"enum":[null]}]}},"required":["agentId"]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"evaluationId":{"type":"string"},"report":{"type":"object","properties":{"version":{"type":"string"},"orgId":{"type":"string"},"projectIds":{"type":"array","items":{"type":"string"}},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedPairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampledPairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparablePairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparableConfirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparableRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notComparable":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","enum":["NO_MINIMIZED_REPRO","EXECUTOR_INCONCLUSIVE","BUDGET_EXHAUSTED","ISSUE_MISSING","SELF_PAIR"]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"coverage":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"repro":{"type":"object","properties":{"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false},"embedding":{"type":"object","properties":{"curve":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number"},"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["threshold","truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false}},"matchedRecallPoint":{"anyOf":[{"type":"object","properties":{"threshold":{"type":"number"},"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["threshold","truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"atDefaultThreshold":{"anyOf":[{"type":"object","properties":{"threshold":{"type":"number"},"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["threshold","truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["curve","matchedRecallPoint","atDefaultThreshold"],"additionalProperties":false},"precisionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pairedTest":{"anyOf":[{"type":"object","properties":{"reproOnlyCorrect":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"embeddingOnlyCorrect":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discordant":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pValue":{"type":"number"},"significant":{"type":"boolean"},"method":{"type":"string","enum":["MCNEMAR_EXACT_BINOMIAL"]}},"required":["reproOnlyCorrect","embeddingOnlyCorrect","discordant","pValue","significant","method"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"verdict":{"type":"string","enum":["INSUFFICIENT_DATA","NO_MEASURABLE_DIFFERENCE","REPRO_EQUIVALENCE_BETTER","EMBEDDING_BETTER"]},"disclosures":{"type":"array","items":{"type":"string"}},"blockedBecause":{"type":"array","items":{"type":"string"}},"cost":{"type":"object","properties":{"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costPerComparisonMicros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"projectedFullCorpusCostMicros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"executorProvider":{"type":"string"}},"required":["executions","cacheHits","costMicros","costPerComparisonMicros","projectedFullCorpusCostMicros","executorProvider"],"additionalProperties":false},"sample":{"type":"object","properties":{"seed":{"type":"string"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deterministic":{"type":"boolean","enum":[true]}},"required":["seed","limit","deterministic"],"additionalProperties":false},"measuredAt":{"type":"string"}},"required":["version","orgId","projectIds","embeddingModel","decidedPairs","sampledPairs","comparablePairs","comparableConfirmed","comparableRejected","notComparable","coverage","repro","embedding","precisionDelta","pairedTest","verdict","disclosures","blockedBecause","cost","sample","measuredAt"],"additionalProperties":false}},"required":["evaluationId","report"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/behavioral-fingerprint/evaluations":{"get":{"tags":["behavioral-fingerprint"],"parameters":[{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"verdict":{"type":"string"},"decidedPairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampledPairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparablePairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","verdict","decidedPairs","sampledPairs","comparablePairs","executions","cacheHits","costMicros","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/behavioral-fingerprint/evaluations/{evaluationId}":{"get":{"tags":["behavioral-fingerprint"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"evaluationId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"report":{"type":"object","properties":{"version":{"type":"string"},"orgId":{"type":"string"},"projectIds":{"type":"array","items":{"type":"string"}},"embeddingModel":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"decidedPairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampledPairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparablePairs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparableConfirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparableRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notComparable":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","enum":["NO_MINIMIZED_REPRO","EXECUTOR_INCONCLUSIVE","BUDGET_EXHAUSTED","ISSUE_MISSING","SELF_PAIR"]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"coverage":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"repro":{"type":"object","properties":{"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false},"embedding":{"type":"object","properties":{"curve":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number"},"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["threshold","truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false}},"matchedRecallPoint":{"anyOf":[{"type":"object","properties":{"threshold":{"type":"number"},"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["threshold","truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"atDefaultThreshold":{"anyOf":[{"type":"object","properties":{"threshold":{"type":"number"},"truePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falsePositives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trueNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"falseNegatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"precision":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"precisionLowerBound":{"type":"number"},"recall":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"accuracy":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["threshold","truePositives","falsePositives","trueNegatives","falseNegatives","precision","precisionLowerBound","recall","accuracy"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["curve","matchedRecallPoint","atDefaultThreshold"],"additionalProperties":false},"precisionDelta":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pairedTest":{"anyOf":[{"type":"object","properties":{"reproOnlyCorrect":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"embeddingOnlyCorrect":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discordant":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pValue":{"type":"number"},"significant":{"type":"boolean"},"method":{"type":"string","enum":["MCNEMAR_EXACT_BINOMIAL"]}},"required":["reproOnlyCorrect","embeddingOnlyCorrect","discordant","pValue","significant","method"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"verdict":{"type":"string","enum":["INSUFFICIENT_DATA","NO_MEASURABLE_DIFFERENCE","REPRO_EQUIVALENCE_BETTER","EMBEDDING_BETTER"]},"disclosures":{"type":"array","items":{"type":"string"}},"blockedBecause":{"type":"array","items":{"type":"string"}},"cost":{"type":"object","properties":{"executions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cacheHits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costPerComparisonMicros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"projectedFullCorpusCostMicros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"executorProvider":{"type":"string"}},"required":["executions","cacheHits","costMicros","costPerComparisonMicros","projectedFullCorpusCostMicros","executorProvider"],"additionalProperties":false},"sample":{"type":"object","properties":{"seed":{"type":"string"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deterministic":{"type":"boolean","enum":[true]}},"required":["seed","limit","deterministic"],"additionalProperties":false},"measuredAt":{"type":"string"}},"required":["version","orgId","projectIds","embeddingModel","decidedPairs","sampledPairs","comparablePairs","comparableConfirmed","comparableRejected","notComparable","coverage","repro","embedding","precisionDelta","pairedTest","verdict","disclosures","blockedBecause","cost","sample","measuredAt"],"additionalProperties":false}},"required":["id","createdAt","report"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dependency-commons":{"get":{"tags":["dependency-commons"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"orgId":{"type":"string"},"optedIn":{"type":"boolean"},"termsVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"termsOutdated":{"type":"boolean"},"currentTermsVersion":{"type":"string"},"optedInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"optedInByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contributedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liveContributions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offeredAt":{"type":"string"}},"required":["orgId","optedIn","termsVersion","termsOutdated","currentTermsVersion","optedInAt","optedInByPrincipalId","revokedAt","revokedByPrincipalId","contributedCount","receivedCount","liveContributions","offeredAt"],"additionalProperties":false},"sharedFields":{"type":"array","items":{"type":"string"}},"neverSharedFields":{"type":"array","items":{"type":"string"}}},"required":["consent","sharedFields","neverSharedFields"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dependency-commons/opt-in":{"post":{"tags":["dependency-commons"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"orgId":{"type":"string"},"optedIn":{"type":"boolean"},"termsVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"termsOutdated":{"type":"boolean"},"currentTermsVersion":{"type":"string"},"optedInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"optedInByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contributedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liveContributions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offeredAt":{"type":"string"}},"required":["orgId","optedIn","termsVersion","termsOutdated","currentTermsVersion","optedInAt","optedInByPrincipalId","revokedAt","revokedByPrincipalId","contributedCount","receivedCount","liveContributions","offeredAt"],"additionalProperties":false}},"required":["consent"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dependency-commons/revoke":{"post":{"tags":["dependency-commons"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"orgId":{"type":"string"},"optedIn":{"type":"boolean"},"termsVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"termsOutdated":{"type":"boolean"},"currentTermsVersion":{"type":"string"},"optedInAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"optedInByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contributedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liveContributions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offeredAt":{"type":"string"}},"required":["orgId","optedIn","termsVersion","termsOutdated","currentTermsVersion","optedInAt","optedInByPrincipalId","revokedAt","revokedByPrincipalId","contributedCount","receivedCount","liveContributions","offeredAt"],"additionalProperties":false},"withdrawnContributions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"entriesDelisted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadyDisclosedReceipts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["consent","withdrawnContributions","entriesDelisted","alreadyDisclosedReceipts","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dependency-commons/contributions":{"get":{"tags":["dependency-commons"],"parameters":[{"schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]},"in":"query","name":"includeWithdrawn","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"entryId":{"type":"string"},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string","enum":["A","B","C","VOID","NONE"]},"contributedAt":{"type":"string"},"withdrawnAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"withdrawnReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"affectedVersionRange":{"type":"string"},"rootCause":{"type":"string","enum":["NULL_OR_UNDEFINED_DEREFERENCE","TYPE_COERCION","UNHANDLED_REJECTION","RESOURCE_EXHAUSTION","RACE_CONDITION","DESERIALIZATION_FAILURE","REGEX_BACKTRACKING","ENCODING_MISMATCH","API_CONTRACT_CHANGE","DEPENDENCY_INCOMPATIBILITY","TIMEOUT_OR_RETRY_DEFAULT","UNVALIDATED_INPUT","CONCURRENCY_LIMIT","OTHER"]},"upstreamUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"advisoryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","entryId","issueId","verificationTier","contributedAt","withdrawnAt","withdrawnReason","ecosystem","packageName","affectedVersionRange","rootCause","upstreamUrl","advisoryId"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/dependency-commons/opt-in-rate":{"get":{"tags":["dependency-commons"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"offeredOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"optedInOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"lowerBound":{"type":"number"},"upperBound":{"type":"number"},"allOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rateOfAllOrgs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"bar":{"type":"number"},"minOrgsForVerdict":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verdict":{"type":"string","enum":["INSUFFICIENT_DATA","ABOVE_BAR","BELOW_BAR","INCONCLUSIVE"]},"liveEntries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liveContributions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalReceipts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclosures":{"type":"array","items":{"type":"string"}},"measuredAt":{"type":"string"}},"required":["offeredOrgs","optedInOrgs","rate","lowerBound","upperBound","allOrgs","rateOfAllOrgs","bar","minOrgsForVerdict","verdict","liveEntries","liveContributions","totalReceipts","disclosures","measuredAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{issueId}/dependency-commons/preview":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"packageIndex":{"type":"integer","minimum":0,"maximum":64},"affectedVersionRange":{"type":"string","minLength":1,"maxLength":64},"rootCause":{"type":"string","enum":["NULL_OR_UNDEFINED_DEREFERENCE","TYPE_COERCION","UNHANDLED_REJECTION","RESOURCE_EXHAUSTION","RACE_CONDITION","DESERIALIZATION_FAILURE","REGEX_BACKTRACKING","ENCODING_MISMATCH","API_CONTRACT_CHANGE","DEPENDENCY_INCOMPATIBILITY","TIMEOUT_OR_RETRY_DEFAULT","UNVALIDATED_INPUT","CONCURRENCY_LIMIT","OTHER"]},"fixedVersion":{"anyOf":[{"type":"string","minLength":1,"maxLength":40},{"nullable":true,"enum":[null]}]},"upstreamUrl":{"anyOf":[{"type":"string","minLength":1,"maxLength":400},{"nullable":true,"enum":[null]}]},"advisoryId":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"nullable":true,"enum":[null]}]}},"required":["packageIndex","affectedVersionRange","rootCause"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"eligible":{"type":"boolean"},"wouldPublish":{"anyOf":[{"type":"object","properties":{"entryKey":{"type":"string"},"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"affectedVersionRange":{"type":"string"},"fixedVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"upstreamUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"advisoryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rootCause":{"type":"string","enum":["NULL_OR_UNDEFINED_DEREFERENCE","TYPE_COERCION","UNHANDLED_REJECTION","RESOURCE_EXHAUSTION","RACE_CONDITION","DESERIALIZATION_FAILURE","REGEX_BACKTRACKING","ENCODING_MISMATCH","API_CONTRACT_CHANGE","DEPENDENCY_INCOMPATIBILITY","TIMEOUT_OR_RETRY_DEFAULT","UNVALIDATED_INPUT","CONCURRENCY_LIMIT","OTHER"]},"frameSignature":{"type":"string"},"packageKey":{"type":"string"},"extractorVersion":{"type":"string"}},"required":["entryKey","ecosystem","packageName","affectedVersionRange","fixedVersion","upstreamUrl","advisoryId","rootCause","frameSignature","packageKey","extractorVersion"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"refusals":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"code":{"type":"string"},"reason":{"type":"string"}},"required":["field","code","reason"],"additionalProperties":false}},"classification":{"type":"object","properties":{"thirdPartyOnly":{"type":"boolean"},"inAppFrameCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unresolvedFrameCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"frames":{"type":"array","items":{"type":"object","properties":{"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"relativePath":{"type":"string"}},"required":["ecosystem","packageName","relativePath"],"additionalProperties":false}},"packages":{"type":"array","items":{"type":"object","properties":{"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"frameCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ecosystem","packageName","frameCount"],"additionalProperties":false}},"refusals":{"type":"array","items":{"type":"string","enum":["IN_APP_FRAME","UNRESOLVABLE_PATH","NO_FRAMES","PACKAGE_NAME_REJECTED"]}}},"required":["thirdPartyOnly","inAppFrameCount","unresolvedFrameCount","frames","packages","refusals"],"additionalProperties":false},"blockedBecause":{"type":"array","items":{"type":"string"}}},"required":["eligible","wouldPublish","refusals","classification","blockedBecause"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{issueId}/dependency-commons/contribute":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"packageIndex":{"type":"integer","minimum":0,"maximum":64},"affectedVersionRange":{"type":"string","minLength":1,"maxLength":64},"rootCause":{"type":"string","enum":["NULL_OR_UNDEFINED_DEREFERENCE","TYPE_COERCION","UNHANDLED_REJECTION","RESOURCE_EXHAUSTION","RACE_CONDITION","DESERIALIZATION_FAILURE","REGEX_BACKTRACKING","ENCODING_MISMATCH","API_CONTRACT_CHANGE","DEPENDENCY_INCOMPATIBILITY","TIMEOUT_OR_RETRY_DEFAULT","UNVALIDATED_INPUT","CONCURRENCY_LIMIT","OTHER"]},"fixedVersion":{"anyOf":[{"type":"string","minLength":1,"maxLength":40},{"nullable":true,"enum":[null]}]},"upstreamUrl":{"anyOf":[{"type":"string","minLength":1,"maxLength":400},{"nullable":true,"enum":[null]}]},"advisoryId":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"nullable":true,"enum":[null]}]}},"required":["packageIndex","affectedVersionRange","rootCause"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"entryId":{"type":"string"},"contributionId":{"type":"string"},"created":{"type":"boolean"},"published":{"type":"object","properties":{"entryKey":{"type":"string"},"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"affectedVersionRange":{"type":"string"},"fixedVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"upstreamUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"advisoryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rootCause":{"type":"string","enum":["NULL_OR_UNDEFINED_DEREFERENCE","TYPE_COERCION","UNHANDLED_REJECTION","RESOURCE_EXHAUSTION","RACE_CONDITION","DESERIALIZATION_FAILURE","REGEX_BACKTRACKING","ENCODING_MISMATCH","API_CONTRACT_CHANGE","DEPENDENCY_INCOMPATIBILITY","TIMEOUT_OR_RETRY_DEFAULT","UNVALIDATED_INPUT","CONCURRENCY_LIMIT","OTHER"]},"frameSignature":{"type":"string"},"packageKey":{"type":"string"},"extractorVersion":{"type":"string"}},"required":["entryKey","ecosystem","packageName","affectedVersionRange","fixedVersion","upstreamUrl","advisoryId","rootCause","frameSignature","packageKey","extractorVersion"],"additionalProperties":false},"liveContributions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedFixCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["entryId","contributionId","created","published","liveContributions","verifiedFixCount"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{issueId}/dependency-commons":{"get":{"tags":["issues"],"parameters":[{"schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]},"in":"query","name":"record","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"eligible":{"type":"boolean"},"blockedBecause":{"type":"array","items":{"type":"string"}},"thirdPartyOnly":{"type":"boolean"},"classification":{"type":"object","properties":{"thirdPartyOnly":{"type":"boolean"},"inAppFrameCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unresolvedFrameCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"frames":{"type":"array","items":{"type":"object","properties":{"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"relativePath":{"type":"string"}},"required":["ecosystem","packageName","relativePath"],"additionalProperties":false}},"packages":{"type":"array","items":{"type":"object","properties":{"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"frameCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ecosystem","packageName","frameCount"],"additionalProperties":false}},"refusals":{"type":"array","items":{"type":"string","enum":["IN_APP_FRAME","UNRESOLVABLE_PATH","NO_FRAMES","PACKAGE_NAME_REJECTED"]}}},"required":["thirdPartyOnly","inAppFrameCount","unresolvedFrameCount","frames","packages","refusals"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"entryId":{"type":"string"},"matchKind":{"type":"string","enum":["EXACT_FRAME","PACKAGE"]},"ecosystem":{"type":"string","enum":["NPM","PYPI","MAVEN","RUBYGEMS","GO","COMPOSER","NUGET","CARGO"]},"packageName":{"type":"string"},"affectedVersionRange":{"type":"string"},"fixedVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"upstreamUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"advisoryId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rootCause":{"type":"string","enum":["NULL_OR_UNDEFINED_DEREFERENCE","TYPE_COERCION","UNHANDLED_REJECTION","RESOURCE_EXHAUSTION","RACE_CONDITION","DESERIALIZATION_FAILURE","REGEX_BACKTRACKING","ENCODING_MISMATCH","API_CONTRACT_CHANGE","DEPENDENCY_INCOMPATIBILITY","TIMEOUT_OR_RETRY_DEFAULT","UNVALIDATED_INPUT","CONCURRENCY_LIMIT","OTHER"]},"contributingOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedFixes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstContributedAt":{"type":"string"},"lastContributedAt":{"type":"string"}},"required":["entryId","matchKind","ecosystem","packageName","affectedVersionRange","fixedVersion","upstreamUrl","advisoryId","rootCause","contributingOrgs","verifiedFixes","firstContributedAt","lastContributedAt"],"additionalProperties":false}},"newlyReceived":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["eligible","blockedBecause","thirdPartyOnly","classification","items","newlyReceived","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/mitigation-actions":{"get":{"tags":["mitigation-actions"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"approvalClass":{"type":"string"},"defaultTtlMinutes":{"type":"number"},"maxTtlMinutes":{"type":"number"},"verificationSignal":{"type":"object","properties":{"kind":{"type":"string"},"description":{"type":"string"},"windowMinutes":{"type":"number"}},"required":["kind","description","windowMinutes"],"additionalProperties":false},"reversible":{"type":"boolean","enum":[true]}},"required":["type","title","summary","approvalClass","defaultTtlMinutes","maxTtlMinutes","verificationSignal","reversible"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/mitigation-providers":{"get":{"tags":["mitigation-providers"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string"},"supportedActions":{"type":"array","items":{"type":"string"}},"configured":{"type":"boolean"},"notConfiguredReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["name","displayName","supportedActions","configured","notConfiguredReason"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/mitigations":{"post":{"tags":["issues"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"actionType":{"type":"string","enum":["flag_kill_switch","variant_pin","release_rollback","config_change","model_route_swap","rate_limit_clamp"]},"input":{},"provider":{"type":"string","minLength":1,"maxLength":60},"ttlMinutes":{"type":"integer","minimum":1,"maximum":10080},"reason":{"type":"string","minLength":3,"maxLength":500},"incidentKey":{"type":"string","minLength":1,"maxLength":200}},"required":["actionType","input","reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mitigation":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"input":{},"inverse":{},"blastRadius":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalClass":{"type":"string"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"ttlMinutes":{"type":"number"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"artifact":{},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verification":{},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"description":{"type":"string"},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","actionType","provider","input","inverse","blastRadius","status","approvalClass","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","ttlMinutes","revertedAt","revertReason","autoReverted","artifact","externalId","failureReason","verification","incidentKey","reason","description","issueRemainsOpen","createdAt"],"additionalProperties":false},"approval":{"type":"object","properties":{"requestId":{"type":"string"},"status":{"type":"string"},"minApprovers":{"type":"number"},"riskClass":{"type":"string"},"reason":{"type":"string"}},"required":["requestId","status","minApprovers","riskClass","reason"],"additionalProperties":false}},"required":["mitigation","approval"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigations":{"get":{"tags":["mitigations"],"parameters":[{"schema":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"issueId","required":false},{"schema":{"type":"string","enum":["flag_kill_switch","variant_pin","release_rollback","config_change","model_route_swap","rate_limit_clamp"]},"in":"query","name":"actionType","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"incidentKey","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"input":{},"inverse":{},"blastRadius":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalClass":{"type":"string"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"ttlMinutes":{"type":"number"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"artifact":{},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verification":{},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"description":{"type":"string"},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","actionType","provider","input","inverse","blastRadius","status","approvalClass","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","ttlMinutes","revertedAt","revertReason","autoReverted","artifact","externalId","failureReason","verification","incidentKey","reason","description","issueRemainsOpen","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigations/sweep":{"post":{"tags":["mitigations"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"checked":{"type":"number"},"expired":{"type":"array","items":{"type":"string"}},"debtCleared":{"type":"number"}},"required":["checked","expired","debtCleared"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigation-documents":{"get":{"tags":["mitigation-documents"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigations/{id}":{"get":{"tags":["mitigations"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"input":{},"inverse":{},"blastRadius":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalClass":{"type":"string"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"ttlMinutes":{"type":"number"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"artifact":{},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verification":{},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"description":{"type":"string"},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","actionType","provider","input","inverse","blastRadius","status","approvalClass","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","ttlMinutes","revertedAt","revertReason","autoReverted","artifact","externalId","failureReason","verification","incidentKey","reason","description","issueRemainsOpen","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigations/{id}/apply":{"post":{"tags":["mitigations"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mitigation":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"input":{},"inverse":{},"blastRadius":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalClass":{"type":"string"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"ttlMinutes":{"type":"number"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"artifact":{},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verification":{},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"description":{"type":"string"},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","actionType","provider","input","inverse","blastRadius","status","approvalClass","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","ttlMinutes","revertedAt","revertReason","autoReverted","artifact","externalId","failureReason","verification","incidentKey","reason","description","issueRemainsOpen","createdAt"],"additionalProperties":false},"artifact":{"type":"object","properties":{"provider":{"type":"string"},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"delivery":{"type":"string","enum":["config-file","api","manual"]},"document":{"type":"object","additionalProperties":{}},"checksum":{"type":"string"},"instructions":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","externalId","delivery","document","checksum","instructions"],"additionalProperties":false}},"required":["mitigation","artifact"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigations/{id}/revert":{"post":{"tags":["mitigations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mitigation":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"input":{},"inverse":{},"blastRadius":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalClass":{"type":"string"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"ttlMinutes":{"type":"number"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"artifact":{},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verification":{},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"description":{"type":"string"},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","actionType","provider","input","inverse","blastRadius","status","approvalClass","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","ttlMinutes","revertedAt","revertReason","autoReverted","artifact","externalId","failureReason","verification","incidentKey","reason","description","issueRemainsOpen","createdAt"],"additionalProperties":false}},"required":["mitigation"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/mitigations/{id}/verify":{"post":{"tags":["mitigations"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mitigation":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"input":{},"inverse":{},"blastRadius":{},"status":{"type":"string","enum":["PENDING_APPROVAL","ACTIVE","EXPIRED","REVERTED","REJECTED","FAILED"]},"approvalClass":{"type":"string"},"approvalRequestId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"approvedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"approvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"appliedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"type":"string"},"ttlMinutes":{"type":"number"},"revertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revertReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"autoReverted":{"type":"boolean"},"artifact":{},"externalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"failureReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verification":{},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"description":{"type":"string"},"issueRemainsOpen":{"type":"boolean","enum":[true]},"createdAt":{"type":"string"}},"required":["id","orgId","projectId","issueId","actionType","provider","input","inverse","blastRadius","status","approvalClass","approvalRequestId","requestedByPrincipalId","approvedByPrincipalId","approvedAt","appliedAt","expiresAt","ttlMinutes","revertedAt","revertReason","autoReverted","artifact","externalId","failureReason","verification","incidentKey","reason","description","issueRemainsOpen","createdAt"],"additionalProperties":false},"verification":{"anyOf":[{"type":"object","properties":{"signal":{"type":"object","properties":{"kind":{"type":"string"},"description":{"type":"string"},"windowMinutes":{"type":"number"}},"required":["kind","description","windowMinutes"],"additionalProperties":false},"outcome":{"type":"string","enum":["OBSERVED","NOT_OBSERVED","PENDING","NOT_MEASURED"]},"detail":{"type":"string"},"observedFrom":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"observedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"before":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"after":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["signal","outcome","detail","observedFrom","observedUntil","before","after"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["mitigation","verification"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/incident-close":{"post":{"tags":["incident-close"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"string","minLength":1},"incidentKey":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":3,"maxLength":500},"ownerPrincipalId":{"type":"string","minLength":1},"dueAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"created":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"mitigationId":{"type":"string"},"ownerPrincipalId":{"type":"string"},"dueAt":{"type":"string"},"status":{"type":"string","enum":["OPEN","OVERDUE","CLEARED","WRITTEN_OFF"]},"openedReason":{"type":"string"},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"closedIncidentAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastAlertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"alertCount":{"type":"number"},"becameOverdueAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"mitigation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"description":{"type":"string"},"inverse":{"type":"string"}},"required":["id","actionType","provider","status","expiresAt","description","inverse"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","issueId","mitigationId","ownerPrincipalId","dueAt","status","openedReason","incidentKey","closedIncidentAt","clearedAt","clearedReason","lastAlertedAt","alertCount","becameOverdueAt","createdAt","mitigation"],"additionalProperties":false}},"existing":{"type":"number"},"considered":{"type":"number"}},"required":["created","existing","considered"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/reversal-debt":{"get":{"tags":["reversal-debt"],"parameters":[{"schema":{"type":"string","enum":["OPEN","OVERDUE","CLEARED","WRITTEN_OFF"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"ownerPrincipalId","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"issueId","required":false},{"schema":{"type":"boolean"},"in":"query","name":"outstanding","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"mitigationId":{"type":"string"},"ownerPrincipalId":{"type":"string"},"dueAt":{"type":"string"},"status":{"type":"string","enum":["OPEN","OVERDUE","CLEARED","WRITTEN_OFF"]},"openedReason":{"type":"string"},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"closedIncidentAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastAlertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"alertCount":{"type":"number"},"becameOverdueAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"mitigation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"description":{"type":"string"},"inverse":{"type":"string"}},"required":["id","actionType","provider","status","expiresAt","description","inverse"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","issueId","mitigationId","ownerPrincipalId","dueAt","status","openedReason","incidentKey","closedIncidentAt","clearedAt","clearedReason","lastAlertedAt","alertCount","becameOverdueAt","createdAt","mitigation"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/reversal-debt/sweep":{"post":{"tags":["reversal-debt"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"openedFromClosedIssues":{"type":"number"},"becameOverdue":{"type":"number"},"alerted":{"type":"number"},"alertFailures":{"type":"number"},"cleared":{"type":"number"}},"required":["openedFromClosedIssues","becameOverdue","alerted","alertFailures","cleared"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/reversal-debt/{id}":{"get":{"tags":["reversal-debt"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"mitigationId":{"type":"string"},"ownerPrincipalId":{"type":"string"},"dueAt":{"type":"string"},"status":{"type":"string","enum":["OPEN","OVERDUE","CLEARED","WRITTEN_OFF"]},"openedReason":{"type":"string"},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"closedIncidentAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastAlertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"alertCount":{"type":"number"},"becameOverdueAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"mitigation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"description":{"type":"string"},"inverse":{"type":"string"}},"required":["id","actionType","provider","status","expiresAt","description","inverse"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","issueId","mitigationId","ownerPrincipalId","dueAt","status","openedReason","incidentKey","closedIncidentAt","clearedAt","clearedReason","lastAlertedAt","alertCount","becameOverdueAt","createdAt","mitigation"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["reversal-debt"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ownerPrincipalId":{"type":"string","minLength":1},"dueAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"mitigationId":{"type":"string"},"ownerPrincipalId":{"type":"string"},"dueAt":{"type":"string"},"status":{"type":"string","enum":["OPEN","OVERDUE","CLEARED","WRITTEN_OFF"]},"openedReason":{"type":"string"},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"closedIncidentAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastAlertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"alertCount":{"type":"number"},"becameOverdueAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"mitigation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"description":{"type":"string"},"inverse":{"type":"string"}},"required":["id","actionType","provider","status","expiresAt","description","inverse"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","issueId","mitigationId","ownerPrincipalId","dueAt","status","openedReason","incidentKey","closedIncidentAt","clearedAt","clearedReason","lastAlertedAt","alertCount","becameOverdueAt","createdAt","mitigation"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/reversal-debt/{id}/write-off":{"post":{"tags":["reversal-debt"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":20,"maxLength":2000}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"issueId":{"type":"string"},"mitigationId":{"type":"string"},"ownerPrincipalId":{"type":"string"},"dueAt":{"type":"string"},"status":{"type":"string","enum":["OPEN","OVERDUE","CLEARED","WRITTEN_OFF"]},"openedReason":{"type":"string"},"incidentKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"closedIncidentAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"clearedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastAlertedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"alertCount":{"type":"number"},"becameOverdueAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"mitigation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"actionType":{"type":"string"},"provider":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"description":{"type":"string"},"inverse":{"type":"string"}},"required":["id","actionType","provider","status","expiresAt","description","inverse"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","projectId","issueId","mitigationId","ownerPrincipalId","dueAt","status","openedReason","incidentKey","closedIncidentAt","clearedAt","clearedReason","lastAlertedAt","alertCount","becameOverdueAt","createdAt","mitigation"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/register":{"get":{"tags":["transparency"],"description":"Reachable without a Bucker session token. Transparency register read — deliberately public.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string"},"generatedAt":{"type":"string"},"coverage":{"type":"object","properties":{"firstObservationAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastObservationAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["firstObservationAt","lastObservationAt"],"additionalProperties":false},"rejectedPatches":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"rejectionsByCategory":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["category","count"],"additionalProperties":false}},"regressionsCausedByOurFixes":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"regressionKinds":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","count"],"additionalProperties":false}},"firstAttemptFailureOverall":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"firstAttemptFailureByLanguage":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"language":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement","language"],"additionalProperties":false}},"injection":{"type":"object","properties":{"singleAttempt":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"adaptiveCampaign":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"adaptivePerAttempt":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"campaigns":{"type":"object","properties":{"single":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"adaptive":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["single","adaptive"],"additionalProperties":false},"note":{"type":"string"}},"required":["singleAttempt","adaptiveCampaign","adaptivePerAttempt","campaigns","note"],"additionalProperties":false},"notMeasured":{"type":"array","items":{"type":"string"}},"provenanceNote":{"type":"string"},"suppression":{"type":"object","properties":{"available":{"type":"boolean","enum":[false]},"note":{"type":"string"}},"required":["available","note"],"additionalProperties":false},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["version","generatedAt","coverage","rejectedPatches","rejectionsByCategory","regressionsCausedByOurFixes","regressionKinds","firstAttemptFailureOverall","firstAttemptFailureByLanguage","injection","notMeasured","provenanceNote","suppression","disclosures"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/snapshots":{"get":{"tags":["transparency"],"description":"Reachable without a Bucker session token. Transparency register read — deliberately public.","parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"snapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generatedAt":{"type":"string"},"digest":{"type":"string"},"rootHash":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"keyId":{"type":"string"}},"required":["id","leafIndex","generatedAt","digest","rootHash","treeSize","keyId"],"additionalProperties":false}},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["treeSize","rootHash","snapshots","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/snapshots/{leafIndex}":{"get":{"tags":["transparency"],"description":"Reachable without a Bucker session token. Transparency register read — deliberately public.","parameters":[{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"path","name":"leafIndex","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"snapshot":{"type":"object","properties":{"id":{"type":"string"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generatedAt":{"type":"string"},"digest":{"type":"string"},"leafHash":{"type":"string"},"rootHash":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"signature":{"type":"string"},"algorithm":{"type":"string"},"keyId":{"type":"string"},"publishedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"register":{"type":"object","properties":{"version":{"type":"string"},"generatedAt":{"type":"string"},"coverage":{"type":"object","properties":{"firstObservationAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastObservationAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["firstObservationAt","lastObservationAt"],"additionalProperties":false},"rejectedPatches":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"rejectionsByCategory":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["category","count"],"additionalProperties":false}},"regressionsCausedByOurFixes":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"regressionKinds":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","count"],"additionalProperties":false}},"firstAttemptFailureOverall":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"firstAttemptFailureByLanguage":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"language":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement","language"],"additionalProperties":false}},"injection":{"type":"object","properties":{"singleAttempt":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"adaptiveCampaign":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"adaptivePerAttempt":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"campaigns":{"type":"object","properties":{"single":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"adaptive":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["single","adaptive"],"additionalProperties":false},"note":{"type":"string"}},"required":["singleAttempt","adaptiveCampaign","adaptivePerAttempt","campaigns","note"],"additionalProperties":false},"notMeasured":{"type":"array","items":{"type":"string"}},"provenanceNote":{"type":"string"},"suppression":{"type":"object","properties":{"available":{"type":"boolean","enum":[false]},"note":{"type":"string"}},"required":["available","note"],"additionalProperties":false},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["version","generatedAt","coverage","rejectedPatches","rejectionsByCategory","regressionsCausedByOurFixes","regressionKinds","firstAttemptFailureOverall","firstAttemptFailureByLanguage","injection","notMeasured","provenanceNote","suppression","disclosures"],"additionalProperties":false}},"required":["id","leafIndex","generatedAt","digest","leafHash","rootHash","treeSize","signature","algorithm","keyId","publishedByPrincipalId","register"],"additionalProperties":false},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["snapshot","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/snapshots/{leafIndex}/inclusion-proof":{"get":{"tags":["transparency"],"description":"Reachable without a Bucker session token. A proof an outsider cannot check is not a proof.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"treeSize","required":false},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"path","name":"leafIndex","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"leafHash":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rootHash":{"type":"string"},"proof":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean"},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["leafIndex","leafHash","treeSize","rootHash","proof","verified","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/snapshots/{leafIndex}/audit":{"get":{"tags":["transparency"],"description":"Reachable without a Bucker session token. A proof an outsider cannot check is not a proof.","parameters":[{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"path","name":"leafIndex","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valid":{"type":"boolean"},"failures":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["leafIndex","valid","failures","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/consistency-proof":{"get":{"tags":["transparency"],"description":"Reachable without a Bucker session token. A proof an outsider cannot check is not a proof.","parameters":[{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"oldSize","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"oldSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldRoot":{"type":"string"},"newSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newRoot":{"type":"string"},"proof":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean"},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["oldSize","oldRoot","newSize","newRoot","proof","verified","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/publish":{"post":{"tags":["transparency"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{"force":false},"type":"object","properties":{"force":{"default":false,"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"snapshot":{"type":"object","properties":{"id":{"type":"string"},"leafIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generatedAt":{"type":"string"},"digest":{"type":"string"},"leafHash":{"type":"string"},"rootHash":{"type":"string"},"treeSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"signature":{"type":"string"},"algorithm":{"type":"string"},"keyId":{"type":"string"},"publishedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"register":{"type":"object","properties":{"version":{"type":"string"},"generatedAt":{"type":"string"},"coverage":{"type":"object","properties":{"firstObservationAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastObservationAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["firstObservationAt","lastObservationAt"],"additionalProperties":false},"rejectedPatches":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"rejectionsByCategory":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["category","count"],"additionalProperties":false}},"regressionsCausedByOurFixes":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"regressionKinds":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","count"],"additionalProperties":false}},"firstAttemptFailureOverall":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"firstAttemptFailureByLanguage":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"},"language":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement","language"],"additionalProperties":false}},"injection":{"type":"object","properties":{"singleAttempt":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"adaptiveCampaign":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"adaptivePerAttempt":{"type":"object","properties":{"label":{"type":"string"},"definition":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"numerator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"confidence":{"anyOf":[{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"},"level":{"type":"number"}},"required":["lower","upper","level"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"sufficient":{"type":"boolean"},"publishable":{"type":"boolean"},"statement":{"type":"string"}},"required":["label","definition","sources","numerator","denominator","rate","confidence","sufficient","publishable","statement"],"additionalProperties":false},"campaigns":{"type":"object","properties":{"single":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"adaptive":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["single","adaptive"],"additionalProperties":false},"note":{"type":"string"}},"required":["singleAttempt","adaptiveCampaign","adaptivePerAttempt","campaigns","note"],"additionalProperties":false},"notMeasured":{"type":"array","items":{"type":"string"}},"provenanceNote":{"type":"string"},"suppression":{"type":"object","properties":{"available":{"type":"boolean","enum":[false]},"note":{"type":"string"}},"required":["available","note"],"additionalProperties":false},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["version","generatedAt","coverage","rejectedPatches","rejectionsByCategory","regressionsCausedByOurFixes","regressionKinds","firstAttemptFailureOverall","firstAttemptFailureByLanguage","injection","notMeasured","provenanceNote","suppression","disclosures"],"additionalProperties":false}},"required":["id","leafIndex","generatedAt","digest","leafHash","rootHash","treeSize","signature","algorithm","keyId","publishedByPrincipalId","register"],"additionalProperties":false},"unchanged":{"type":"boolean"},"disclosures":{"type":"array","items":{"type":"string"}}},"required":["snapshot","unchanged","disclosures"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/transparency/injection-trials":{"post":{"tags":["transparency"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"campaignId":{"type":"string","minLength":1,"maxLength":120},"mode":{"type":"string","enum":["SINGLE_ATTEMPT","ADAPTIVE"]},"family":{"type":"string","minLength":1,"maxLength":60},"payload":{"type":"string","minLength":1,"maxLength":8192}},"required":["campaignId","mode","payload"]}}}},"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"campaignId":{"type":"string"},"mode":{"type":"string","enum":["SINGLE_ATTEMPT","ADAPTIVE"]},"attemptIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"family":{"type":"string"},"payloadDigest":{"type":"string"},"evaded":{"type":"boolean"},"rule":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"severity":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"depth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"note":{"type":"string"}},"required":["id","campaignId","mode","attemptIndex","family","payloadDigest","evaded","rule","severity","depth","note"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/v1/summary":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Public status page read.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"string"},"generatedAt":{"type":"string"},"dataAsOf":{"type":"string"},"stalenessSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"object","properties":{"chainDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["chainDigest","sequence"],"additionalProperties":false},"page":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"orgSlug":{"type":"string"},"name":{"type":"string"},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultUptimeExcludesMaintenance":{"type":"boolean"}},"required":["id","slug","orgSlug","name","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","uptimeWindowDays","defaultUptimeExcludesMaintenance"],"additionalProperties":false},"status":{"type":"object","properties":{"indicator":{"type":"string","enum":["none","minor","major","critical"]},"description":{"type":"string"},"coverage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["indicator","description","coverage"],"additionalProperties":false},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collapsed":{"type":"boolean"}},"required":["id","name","position","collapsed"],"additionalProperties":false}},"components":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string","enum":["unknown","operational","degraded_performance","partial_outage","major_outage","under_maintenance"]},"derivedStatus":{"type":"string","enum":["unknown","operational","degraded_performance","partial_outage","major_outage","under_maintenance"]},"assertedStatus":{"type":"string","enum":["unknown","operational","degraded_performance","partial_outage","major_outage","under_maintenance"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["at","reason","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"uptime":{"type":"object","properties":{"windowFrom":{"type":"string"},"windowTo":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysWithData":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverageRatio":{"type":"number"},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recordedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"ratioExcludingMaintenance":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p50LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p95LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["windowFrom","windowTo","windowDays","daysWithData","coverageRatio","checks","successes","checkRatio","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","recordedSeconds","ratio","ratioExcludingMaintenance","p50LatencyMs","p95LatencyMs"],"additionalProperties":false},"uptimeDays":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"status":{"anyOf":[{"type":"string","enum":["operational","degraded","down","maintenance"]},{"nullable":true,"enum":[null]}]},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["day","status","checks","successes","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","ratio"],"additionalProperties":false}},"slo":{"anyOf":[{"type":"object","properties":{"target":{"type":"number"},"achieved":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"budgetSeconds":{"type":"number"},"consumedSeconds":{"type":"number"},"remainingRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"met":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"coverageRatio":{"type":"number"}},"required":["target","achieved","budgetSeconds","consumedSeconds","remainingRatio","met","coverageRatio"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","status","derivedStatus","assertedStatus","manualOverride","evidence","uptime","uptimeDays","slo"],"additionalProperties":false}},"incidents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","postmortem"]},"impact":{"type":"string","enum":["none","minor","major","critical"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"type":"string"},"autoPublished":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","postmortem"]},"displayAt":{"type":"string"},"edited":{"type":"boolean"},"drafted":{"type":"boolean"}},"required":["id","body","status","displayAt","edited","drafted"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","label","url"],"additionalProperties":false}},"postmortem":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","autoPublished","componentIds","updates","evidence","postmortem"],"additionalProperties":false}},"scheduledMaintenances":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["scheduled","in_progress","verifying","completed"]},"scheduledFor":{"type":"string"},"scheduledUntil":{"type":"string"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["scheduled","in_progress","verifying","completed"]},"displayAt":{"type":"string"}},"required":["id","body","status","displayAt"],"additionalProperties":false}}},"required":["id","number","title","status","scheduledFor","scheduledUntil","componentIds","updates"],"additionalProperties":false}}},"required":["spec","generatedAt","dataAsOf","stalenessSeconds","history","page","status","groups","components","incidents","scheduledMaintenances"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/v1/components":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Public status page read.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"string"},"generatedAt":{"type":"string"},"dataAsOf":{"type":"string"},"stalenessSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"object","properties":{"chainDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["chainDigest","sequence"],"additionalProperties":false},"page":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"orgSlug":{"type":"string"},"name":{"type":"string"},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultUptimeExcludesMaintenance":{"type":"boolean"}},"required":["id","slug","orgSlug","name","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","uptimeWindowDays","defaultUptimeExcludesMaintenance"],"additionalProperties":false},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collapsed":{"type":"boolean"}},"required":["id","name","position","collapsed"],"additionalProperties":false}},"components":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groupId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"showcase":{"type":"boolean"},"onlyShowIfDegraded":{"type":"boolean"},"startDate":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string","enum":["unknown","operational","degraded_performance","partial_outage","major_outage","under_maintenance"]},"derivedStatus":{"type":"string","enum":["unknown","operational","degraded_performance","partial_outage","major_outage","under_maintenance"]},"assertedStatus":{"type":"string","enum":["unknown","operational","degraded_performance","partial_outage","major_outage","under_maintenance"]},"manualOverride":{"anyOf":[{"type":"object","properties":{"at":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"contradicts":{"type":"boolean"}},"required":["at","reason","contradicts"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"string"}},"uptime":{"type":"object","properties":{"windowFrom":{"type":"string"},"windowTo":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysWithData":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverageRatio":{"type":"number"},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recordedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"ratioExcludingMaintenance":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p50LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p95LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["windowFrom","windowTo","windowDays","daysWithData","coverageRatio","checks","successes","checkRatio","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","recordedSeconds","ratio","ratioExcludingMaintenance","p50LatencyMs","p95LatencyMs"],"additionalProperties":false},"uptimeDays":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"status":{"anyOf":[{"type":"string","enum":["operational","degraded","down","maintenance"]},{"nullable":true,"enum":[null]}]},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["day","status","checks","successes","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","ratio"],"additionalProperties":false}},"slo":{"anyOf":[{"type":"object","properties":{"target":{"type":"number"},"achieved":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"budgetSeconds":{"type":"number"},"consumedSeconds":{"type":"number"},"remainingRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"met":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"coverageRatio":{"type":"number"}},"required":["target","achieved","budgetSeconds","consumedSeconds","remainingRatio","met","coverageRatio"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["id","slug","name","description","groupId","position","showcase","onlyShowIfDegraded","startDate","status","derivedStatus","assertedStatus","manualOverride","evidence","uptime","uptimeDays","slo"],"additionalProperties":false}}},"required":["spec","generatedAt","dataAsOf","stalenessSeconds","history","page","groups","components"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/v1/incidents":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Public status page read.","parameters":[{"schema":{"type":"boolean"},"in":"query","name":"open","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"string"},"generatedAt":{"type":"string"},"dataAsOf":{"type":"string"},"stalenessSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"object","properties":{"chainDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["chainDigest","sequence"],"additionalProperties":false},"page":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"orgSlug":{"type":"string"},"name":{"type":"string"},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultUptimeExcludesMaintenance":{"type":"boolean"}},"required":["id","slug","orgSlug","name","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","uptimeWindowDays","defaultUptimeExcludesMaintenance"],"additionalProperties":false},"incidents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","postmortem"]},"impact":{"type":"string","enum":["none","minor","major","critical"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"type":"string"},"autoPublished":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","postmortem"]},"displayAt":{"type":"string"},"edited":{"type":"boolean"},"drafted":{"type":"boolean"}},"required":["id","body","status","displayAt","edited","drafted"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","label","url"],"additionalProperties":false}},"postmortem":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","autoPublished","componentIds","updates","evidence","postmortem"],"additionalProperties":false}}},"required":["spec","generatedAt","dataAsOf","stalenessSeconds","history","page","incidents"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/v1/incidents/{number}":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Public status page read.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true},{"schema":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0},"in":"path","name":"number","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"string"},"generatedAt":{"type":"string"},"dataAsOf":{"type":"string"},"stalenessSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"object","properties":{"chainDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["chainDigest","sequence"],"additionalProperties":false},"page":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"orgSlug":{"type":"string"},"name":{"type":"string"},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultUptimeExcludesMaintenance":{"type":"boolean"}},"required":["id","slug","orgSlug","name","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","uptimeWindowDays","defaultUptimeExcludesMaintenance"],"additionalProperties":false},"incident":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","postmortem"]},"impact":{"type":"string","enum":["none","minor","major","critical"]},"startedAt":{"type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"publishedAt":{"type":"string"},"autoPublished":{"type":"boolean"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","postmortem"]},"displayAt":{"type":"string"},"edited":{"type":"boolean"},"drafted":{"type":"boolean"}},"required":["id","body","status","displayAt","edited","drafted"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"label":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","label","url"],"additionalProperties":false}},"postmortem":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","number","title","status","impact","startedAt","resolvedAt","publishedAt","autoPublished","componentIds","updates","evidence","postmortem"],"additionalProperties":false}},"required":["spec","generatedAt","dataAsOf","stalenessSeconds","history","page","incident"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/v1/maintenances":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Public status page read.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"string"},"generatedAt":{"type":"string"},"dataAsOf":{"type":"string"},"stalenessSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"object","properties":{"chainDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["chainDigest","sequence"],"additionalProperties":false},"page":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"orgSlug":{"type":"string"},"name":{"type":"string"},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultUptimeExcludesMaintenance":{"type":"boolean"}},"required":["id","slug","orgSlug","name","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","uptimeWindowDays","defaultUptimeExcludesMaintenance"],"additionalProperties":false},"scheduledMaintenances":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"status":{"type":"string","enum":["scheduled","in_progress","verifying","completed"]},"scheduledFor":{"type":"string"},"scheduledUntil":{"type":"string"},"componentIds":{"type":"array","items":{"type":"string"}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"status":{"type":"string","enum":["scheduled","in_progress","verifying","completed"]},"displayAt":{"type":"string"}},"required":["id","body","status","displayAt"],"additionalProperties":false}}},"required":["id","number","title","status","scheduledFor","scheduledUntil","componentIds","updates"],"additionalProperties":false}}},"required":["spec","generatedAt","dataAsOf","stalenessSeconds","history","page","scheduledMaintenances"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/v1/uptime":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Public status page read.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"componentSlug","required":false},{"schema":{"default":90,"type":"integer","minimum":1,"maximum":365},"in":"query","name":"days","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"string"},"generatedAt":{"type":"string"},"dataAsOf":{"type":"string"},"stalenessSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"object","properties":{"chainDigest":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["chainDigest","sequence"],"additionalProperties":false},"page":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"orgSlug":{"type":"string"},"name":{"type":"string"},"headline":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"supportUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"brandColor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"logoBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"faviconBlobKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"timezone":{"type":"string"},"locale":{"type":"string"},"uptimeWindowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultUptimeExcludesMaintenance":{"type":"boolean"}},"required":["id","slug","orgSlug","name","headline","supportUrl","brandColor","logoBlobKey","faviconBlobKey","timezone","locale","uptimeWindowDays","defaultUptimeExcludesMaintenance"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"componentSlug":{"type":"string"},"componentName":{"type":"string"},"summary":{"type":"object","properties":{"windowFrom":{"type":"string"},"windowTo":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysWithData":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverageRatio":{"type":"number"},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkRatio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recordedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"ratioExcludingMaintenance":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p50LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"p95LatencyMs":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["windowFrom","windowTo","windowDays","daysWithData","coverageRatio","checks","successes","checkRatio","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","recordedSeconds","ratio","ratioExcludingMaintenance","p50LatencyMs","p95LatencyMs"],"additionalProperties":false},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"status":{"anyOf":[{"type":"string","enum":["operational","degraded","down","maintenance"]},{"nullable":true,"enum":[null]}]},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degradedSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"downSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maintenanceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["day","status","checks","successes","upSeconds","degradedSeconds","downSeconds","maintenanceSeconds","ratio"],"additionalProperties":false}}},"required":["componentSlug","componentName","summary","days"],"additionalProperties":false}}},"required":["spec","generatedAt","dataAsOf","stalenessSeconds","history","page","data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/access":{"post":{"tags":["status"],"description":"Reachable without a Bucker session token. Exchanges a page password for access; the password IS the credential.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":200}},"required":["password"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"expiresInSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["token","expiresInSeconds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/subscribe":{"post":{"tags":["status"],"description":"Reachable without a Bucker session token. A subscriber is a member of the public by definition.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"default":"EMAIL","type":"string","enum":["EMAIL","WEBHOOK","SLACK"]},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"url":{"type":"string","maxLength":2048,"format":"uri"},"componentSlugs":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending"]}},"required":["status"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/confirm":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Signed double-opt-in token from the confirmation email.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"pageId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["ok","pageId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/unsubscribe":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Signed token in the email footer; one-click unsubscribe cannot ask for a login.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"pageId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["ok","pageId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["status"],"description":"Reachable without a Bucker session token. RFC 8058 List-Unsubscribe-Post, from the mail client.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"pageId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["ok","pageId"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/public/status-pages/by-domain/{host}":{"get":{"tags":["public"],"description":"Reachable without a Bucker session token. Maps a verified customer hostname to its public page; the renderer asks before it can render.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":263},"in":"path","name":"host","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"pageSlug":{"type":"string"}},"required":["orgSlug","pageSlug"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/public/status-pages/{orgSlug}/{pageSlug}/canonical-host":{"get":{"tags":["public"],"description":"Reachable without a Bucker session token. The reverse: the hostname the apex URL redirects to. Null for anything not public and served.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"host":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["host"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/summary.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/status.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/components.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/incidents.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/incidents/unresolved.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/upcoming.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/active.json":{"get":{"tags":["status"],"description":"Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"pageSlug","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/context":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"isOperator":{"type":"boolean"},"org":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"role":{"type":"string"}},"required":["id","slug","role"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"configured":{"type":"boolean"},"operatorOrgSlugs":{"type":"array","items":{"type":"string"}},"environment":{"type":"string"},"region":{"type":"string"}},"required":["isOperator","org","configured","operatorOrgSlugs","environment","region"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/overview":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"counts":{"type":"object","properties":{"organizations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"users":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"agents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["organizations","users","projects","issues","agents"],"additionalProperties":false},"activity":{"type":"object","properties":{"issuesSeen24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issuesSeen7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newIssues24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newUsers7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventsAccepted24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventsRejected24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["issuesSeen24h","issuesSeen7d","newIssues24h","newUsers7d","eventsAccepted24h","eventsRejected24h"],"additionalProperties":false},"queue":{"type":"object","properties":{"byStatus":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"dead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestPendingAgeSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"inFlight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recentFailures":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}}},"required":["byStatus","dead","oldestPendingAgeSeconds","inFlight","recentFailures"],"additionalProperties":false},"seams":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"configured":{"type":"string"},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","configured","note"],"additionalProperties":false}},"productionProblems":{"type":"array","items":{"type":"string"}},"generatedAt":{"type":"string"}},"required":["counts","activity","queue","seams","productionProblems","generatedAt"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"byStatus":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"dead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestPendingAgeSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"inFlight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recentFailures":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}}},"required":["byStatus","dead","oldestPendingAgeSeconds","inFlight","recentFailures"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/orgs":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"plan":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"planStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastIssueSeenAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"aiEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","slug","name","region","plan","planStatus","members","projects","issues","events","lastIssueSeenAt","aiEnabled","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/orgs/{orgSlug}":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"plan":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"planStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastIssueSeenAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"aiEnabled":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","slug","name","region","plan","planStatus","members","projects","issues","events","lastIssueSeenAt","aiEnabled","createdAt"],"additionalProperties":false},"members":{"type":"array","items":{"type":"object","properties":{"principalId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"role":{"type":"string"},"kind":{"type":"string"},"lastLoginAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"joinedAt":{"type":"string"}},"required":["principalId","userId","name","email","role","kind","lastLoginAt","joinedAt"],"additionalProperties":false}},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string"},"issues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","slug","name","platform","issues","events","createdAt"],"additionalProperties":false}}},"required":["org","members","projects"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/users":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"principalId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"isActive":{"type":"boolean"},"emailVerified":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"lastLoginAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"}},"required":["id","principalId","email","name","isActive","emailVerified","mfaEnabled","lastLoginAt","orgCount","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/projects":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string"},"orgSlug":{"type":"string"},"orgName":{"type":"string"},"issues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastIssueSeenAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","slug","name","platform","orgSlug","orgName","issues","events","lastIssueSeenAt","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/audit":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgSlug":{"type":"string"},"actor":{"type":"string"},"action":{"type":"string"},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"result":{"type":"string"},"ipAddress":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgSlug","actor","action","targetType","targetId","result","ipAddress","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/entitlements":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"configured":{"type":"boolean"},"entitlements":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"exists":{"type":"boolean"},"orgId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"owners":{"type":"array","items":{"type":"object","properties":{"principalId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"name":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"kind":{"type":"string"},"isActive":{"type":"boolean"},"mfaEnabled":{"type":"boolean"},"lastLoginAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"grantedAt":{"type":"string"}},"required":["principalId","userId","name","email","kind","isActive","mfaEnabled","lastLoginAt","grantedAt"],"additionalProperties":false}}},"required":["slug","exists","orgId","name","owners"],"additionalProperties":false}},"totalOwners":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generatedAt":{"type":"string"}},"required":["configured","entitlements","totalOwners","generatedAt"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/schedulers":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":24,"type":"integer","minimum":1,"maximum":168},"in":"query","name":"windowHours","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"scheduler":{"type":"string"},"pass":{"type":"string"},"service":{"type":"string"},"lastSuccessAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastFailureAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"runs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"p50DurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"maxDurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationSampled":{"type":"boolean"},"pausable":{"type":"boolean"},"pauseKey":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"intervalMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"state":{"type":"string","enum":["ok","failing","overdue","no_data"]}},"required":["scheduler","pass","service","lastSuccessAt","lastFailureAt","lastError","runs","failures","p50DurationMs","maxDurationMs","durationSampled","pausable","pauseKey","intervalMs","state"],"additionalProperties":false}},"reported":{"type":"boolean"},"states":{"type":"object","properties":{"ok":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overdue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"no_data":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ok","failing","overdue","no_data"],"additionalProperties":false},"windowHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"since":{"type":"string"},"generatedAt":{"type":"string"}},"required":["data","reported","states","windowHours","since","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/workers":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"consumerId":{"type":"string"},"service":{"type":"string"},"lastSeenAt":{"type":"string"},"ageSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inFlight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"claimed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"release":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"host":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"startedAt":{"type":"string"},"state":{"type":"string","enum":["live","stale","no_data"]}},"required":["consumerId","service","lastSeenAt","ageSeconds","inFlight","claimed","release","host","startedAt","state"],"additionalProperties":false}},"reported":{"type":"boolean"},"state":{"type":"string","enum":["live","stale","no_data"]},"live":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stale":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"staleAfterSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"forgetAfterSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generatedAt":{"type":"string"}},"required":["data","reported","state","live","stale","staleAfterSeconds","forgetAfterSeconds","generatedAt"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/health":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"ingest":{"anyOf":[{"type":"object","properties":{"last15m":{"type":"object","properties":{"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"since":{"type":"string"},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clientDiscarded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"byOutcome":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"acceptedPerMinute":{"type":"number"},"droppedPerMinute":{"type":"number"},"dropRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["minutes","since","accepted","dropped","sampled","clientDiscarded","byOutcome","acceptedPerMinute","droppedPerMinute","dropRate"],"additionalProperties":false},"last24h":{"type":"object","properties":{"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"since":{"type":"string"},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clientDiscarded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"byOutcome":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"acceptedPerMinute":{"type":"number"},"droppedPerMinute":{"type":"number"},"dropRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["minutes","since","accepted","dropped","sampled","clientDiscarded","byOutcome","acceptedPerMinute","droppedPerMinute","dropRate"],"additionalProperties":false},"reported":{"type":"boolean"}},"required":["last15m","last24h","reported"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"queue":{"anyOf":[{"type":"object","properties":{"byStatus":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"dead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestPendingAgeSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"inFlight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recentFailures":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}}},"required":["byStatus","dead","oldestPendingAgeSeconds","inFlight","recentFailures"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"workers":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["live","stale","no_data"]},"reported":{"type":"boolean"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"live":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stale":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestBeatAgeSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"staleAfterSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"forgetAfterSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"href":{"type":"string"}},"required":["state","reported","total","live","stale","oldestBeatAgeSeconds","staleAfterSeconds","forgetAfterSeconds","href"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"schedulers":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["ok","failing","overdue","no_data"]},"reported":{"type":"boolean"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"states":{"type":"object","properties":{"ok":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"overdue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"no_data":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ok","failing","overdue","no_data"],"additionalProperties":false},"oldestSuccessAgeSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"attention":{"type":"array","items":{"type":"object","properties":{"scheduler":{"type":"string"},"pass":{"type":"string"},"state":{"type":"string","enum":["ok","failing","overdue","no_data"]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["scheduler","pass","state","lastError"],"additionalProperties":false}},"windowHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"since":{"type":"string"},"href":{"type":"string"}},"required":["state","reported","total","states","oldestSuccessAgeSeconds","attention","windowHours","since","href"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"database":{"anyOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"probe":{"type":"string"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["reachable","latencyMs","probe","error"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"configuration":{"anyOf":[{"type":"object","properties":{"seams":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"configured":{"type":"string"},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","configured","note"],"additionalProperties":false}},"productionProblems":{"type":"array","items":{"type":"string"}},"productionChecked":{"type":"boolean"}},"required":["seams","productionProblems","productionChecked"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"hostnames":{"anyOf":[{"type":"object","properties":{"environment":{"type":"string"},"region":{"type":"string"},"apiUrl":{"type":"string"},"appUrl":{"type":"string"},"ingestHost":{"type":"string"},"mcpResourceUrl":{"type":"string"},"statusUrl":{"type":"string"}},"required":["environment","region","apiUrl","appUrl","ingestHost","mcpResourceUrl","statusUrl"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"reachability":{"anyOf":[{"type":"object","properties":{"key":{"type":"string"},"recordedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ageSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"stale":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"staleAfterSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"endpoints":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"daysRecorded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"up":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degraded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"down":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ratio":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"checks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"up":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degraded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"down":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["day","checks","up","degraded","down"],"additionalProperties":false}}},"required":["id","daysRecorded","checks","up","degraded","down","ratio","days"],"additionalProperties":false}}},"required":["key","recordedAt","ageSeconds","stale","staleAfterSeconds","windowDays","endpoints"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"stalledHalts":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["ok","stalled"]},"stalledTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"claiming":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"graceSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stalled":{"type":"array","items":{"type":"object","properties":{"rolloutId":{"type":"string"},"orgSlug":{"type":"string"},"projectSlug":{"type":"string"},"releaseVersion":{"type":"string"},"environment":{"type":"string"},"provider":{"type":"string"},"haltedAt":{"type":"string"},"ageSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["rolloutId","orgSlug","projectSlug","releaseVersion","environment","provider","haltedAt","ageSeconds"],"additionalProperties":false}},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["state","stalledTotal","claiming","graceSeconds","stalled","limit"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"unavailable":{"type":"array","items":{"type":"object","properties":{"part":{"type":"string","enum":["ingest","queue","workers","schedulers","database","configuration","hostnames","reachability","stalledHalts"]},"reason":{"type":"string"}},"required":["part","reason"],"additionalProperties":false}}},"required":["generatedAt","ingest","queue","workers","schedulers","database","configuration","hostnames","reachability","stalledHalts","unavailable"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/series":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","enum":["ingest_outcomes","ingest_drop_reasons","events_accepted","issues_created"]},"in":"query","name":"metric","required":true},{"schema":{"default":"hour","type":"string","enum":["hour","day"]},"in":"query","name":"interval","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"from","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":90},"in":"query","name":"days","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"metric":{"type":"string","enum":["ingest_outcomes","ingest_drop_reasons","events_accepted","issues_created"]},"interval":{"type":"string","enum":["hour","day"]},"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"value":{"type":"number"}},"required":["bucket","value"],"additionalProperties":false}}},"required":["name","points"],"additionalProperties":false}},"seriesTruncated":{"type":"boolean"},"generatedAt":{"type":"string"}},"required":["metric","interval","range","sources","series","seriesTruncated","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/ingest":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"from","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":90},"in":"query","name":"days","required":false},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":1000000},"in":"query","name":"minVolume","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":false},"totals":{"type":"object","properties":{"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropRate":{"type":"number"}},"required":["accepted","sampled","dropped","total","dropRate"],"additionalProperties":false},"sampledExplanation":{"type":"string"},"reasons":{"type":"array","items":{"type":"object","properties":{"outcome":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"share":{"type":"number"},"explanation":{"type":"string"},"billed":{"type":"boolean"}},"required":["outcome","reason","quantity","share","explanation","billed"],"additionalProperties":false}},"reasonsTruncated":{"type":"boolean"},"topProjectsByVolume":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropRate":{"type":"number"}},"required":["projectId","projectSlug","projectName","orgSlug","orgName","accepted","sampled","dropped","total","dropRate"],"additionalProperties":false}},"topProjectsByDropRate":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropRate":{"type":"number"}},"required":["projectId","projectSlug","projectName","orgSlug","orgName","accepted","sampled","dropped","total","dropRate"],"additionalProperties":false}},"dropRateMinVolume":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"backpressure":{"type":"object","properties":{"backlog":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"known":{"type":"boolean"},"stale":{"type":"boolean"},"shedding":{"type":"boolean"},"measuredAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["backlog","limit","known","stale","shedding","measuredAt"],"additionalProperties":false},"rateLimit":{"type":"object","properties":{"trackedBuckets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxTrackedBuckets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["trackedBuckets","maxTrackedBuckets"],"additionalProperties":false},"caveats":{"type":"object","properties":{"rateLimit":{"type":"string"},"backlog":{"type":"string"}},"required":["rateLimit","backlog"],"additionalProperties":false},"generatedAt":{"type":"string"}},"required":["range","totals","sampledExplanation","reasons","reasonsTruncated","topProjectsByVolume","topProjectsByDropRate","dropRateMinVolume","backpressure","rateLimit","caveats","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue/dead":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","minLength":1,"maxLength":2000},"in":"query","name":"error","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAttempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"receivedAt":{"type":"string"},"contentType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"hasEnvelopeBlob":{"type":"boolean"}},"required":["id","projectId","projectSlug","projectName","orgSlug","attempts","maxAttempts","lastError","receivedAt","contentType","hasEnvelopeBlob"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"groups":{"type":"array","items":{"type":"object","properties":{"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestReceivedAt":{"type":"string"},"newestReceivedAt":{"type":"string"}},"required":["error","count","oldestReceivedAt","newestReceivedAt"],"additionalProperties":false}},"groupsTruncated":{"type":"boolean"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filteredByError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"generatedAt":{"type":"string"}},"required":["data","nextCursor","groups","groupsTruncated","total","filteredByError","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue/redrive/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"projectId":{"type":"string","minLength":1},"receivedAfter":{},"errorContains":{"type":"string","minLength":1,"maxLength":200},"limit":{"default":100,"type":"integer","minimum":1,"maximum":1000}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"oldestReceivedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"newestReceivedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","oldestReceivedAt","newestReceivedAt","projects"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue/redrive":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"projectId":{"type":"string","minLength":1},"receivedAfter":{},"errorContains":{"type":"string","minLength":1,"maxLength":200},"limit":{"default":100,"type":"integer","minimum":1,"maximum":1000},"availableAt":{},"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"requeued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ids":{"type":"array","items":{"type":"string"}},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"availableAt":{"type":"string"}},"required":["requeued","ids","matched","limit","bounded","availableAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue/purge/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"projectId":{"type":"string","minLength":1},"receivedAfter":{},"errorContains":{"type":"string","minLength":1,"maxLength":200},"receivedBefore":{},"limit":{"default":100,"type":"integer","minimum":1,"maximum":1000}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"oldestReceivedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"newestReceivedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","oldestReceivedAt","newestReceivedAt","projects"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue/purge":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"projectId":{"type":"string","minLength":1},"receivedAfter":{},"errorContains":{"type":"string","minLength":1,"maxLength":200},"receivedBefore":{},"limit":{"default":100,"type":"integer","minimum":1,"maximum":1000},"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ids":{"type":"array","items":{"type":"string"}},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"oldestReceivedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["deleted","ids","matched","limit","bounded","oldestReceivedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/queue/jobs/{jobId}/requeue":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"availableAt":{},"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"jobId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"},"requeued":{"type":"boolean"},"projectId":{"type":"string"},"availableAt":{"type":"string"}},"required":["jobId","requeued","projectId","availableAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"plan":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"planStatus":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"issues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastIssueSeenAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"aiEnabled":{"type":"boolean"},"createdAt":{"type":"string"},"accepted24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"riskCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"riskSeverity":{"anyOf":[{"type":"string","enum":["info","warning","serious","critical"]},{"nullable":true,"enum":[null]}]},"riskKinds":{"type":"array","items":{"type":"string","enum":["key_never_used","ingest_dropped","over_quota_sampling","project_went_quiet","login_failure_cluster","subscription_past_due","ingest_suspended"]}}},"required":["id","slug","name","region","plan","planStatus","members","projects","issues","events","lastIssueSeenAt","aiEnabled","createdAt","accepted24h","dropped24h","riskCount","riskSeverity","riskKinds"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"sortedWithinPage":{"type":"boolean","enum":[true]},"window":{"type":"object","properties":{"hours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"since":{"type":"string"}},"required":["hours","since"],"additionalProperties":false},"generatedAt":{"type":"string"}},"required":["data","nextCursor","sortedWithinPage","window","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/keys":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":200,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"projectName":{"type":"string"},"name":{"type":"string"},"publicKey":{"type":"string"},"region":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"neverUsed":{"type":"boolean"},"ageHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","projectId","projectSlug","projectName","name","publicKey","region","isActive","rateLimitPerMinute","lastUsedAt","createdAt","neverUsed","ageHours"],"additionalProperties":false}},"truncated":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generatedAt":{"type":"string"}},"required":["org","data","truncated","limit","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/subscription":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"subscription":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"planName":{"type":"string"},"status":{"type":"string"},"currentPeriodStart":{"type":"string"},"currentPeriodEnd":{"type":"string"},"pendingPlan":{"anyOf":[{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},{"nullable":true,"enum":[null]}]},"pendingPlanEffectiveAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"rolloverCredits":{"type":"number"},"includedVerifiedFixes":{"type":"number"},"includedEventsPerMonth":{"type":"number"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"},"seats":{"type":"object","properties":{"humans":{"type":"string","enum":["unlimited"]},"agents":{"anyOf":[{"type":"number"},{"type":"string","enum":["unlimited"]}]}},"required":["humans","agents"],"additionalProperties":false},"payment":{"type":"object","properties":{"provider":{"type":"string"},"configured":{"type":"boolean"},"message":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["provider","configured","message"],"additionalProperties":false}},"required":["orgId","plan","planName","status","currentPeriodStart","currentPeriodEnd","pendingPlan","pendingPlanEffectiveAt","capsEnabled","byoLlmKey","rolloverCredits","includedVerifiedFixes","includedEventsPerMonth","aiMonthlyBudgetCents","aiBudgetHardCap","seats","payment"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"effectivePlan":{"type":"string"},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"planChanges":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fromPlan":{"type":"string"},"toPlan":{"type":"string"},"effectiveAt":{"type":"string"},"immediate":{"type":"boolean"},"prorationCreditCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prorationChargeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paymentStatus":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","fromPlan","toPlan","effectiveAt","immediate","prorationCreditCents","prorationChargeCents","netCents","paymentStatus","createdAt"],"additionalProperties":false}},"quotaPolicies":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectSlug":{"type":"string"},"monthlyEventLimit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"capsEnabled":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"updatedAt":{"type":"string"}},"required":["projectId","projectSlug","monthlyEventLimit","capsEnabled","updatedAt"],"additionalProperties":false}},"autofixBudget":{"anyOf":[{"type":"object","properties":{"monthlyLimitCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"consumedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"periodStart":{"type":"string"},"enabled":{"type":"boolean"},"updatedAt":{"type":"string"}},"required":["monthlyLimitCents","consumedCents","periodStart","enabled","updatedAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"invoiceLines":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"type":"string"},"plan":{"type":"string"},"verificationTier":{"type":"string"},"coverage":{"type":"string"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tokenCostCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sandboxCostCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"byoLlmKey":{"type":"boolean"},"periodStart":{"type":"string"},"periodEnd":{"type":"string"},"approvedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","projectId","projectSlug","issueId","plan","verificationTier","coverage","amountCents","tokenCostCents","sandboxCostCents","byoLlmKey","periodStart","periodEnd","approvedAt","createdAt"],"additionalProperties":false}},"invoiceLinesTruncated":{"type":"boolean"},"generatedAt":{"type":"string"}},"required":["org","subscription","effectivePlan","note","planChanges","quotaPolicies","autofixBudget","invoiceLines","invoiceLinesTruncated","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/usage":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"plan":{"type":"string"},"capsEnabled":{"type":"boolean"},"series":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"billable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["day","accepted","sampled","billable","dropped"],"additionalProperties":false}},"totals":{"type":"object","properties":{"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"billable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["accepted","sampled","billable","dropped"],"additionalProperties":false},"byCategory":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"billable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dropped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["category","accepted","sampled","billable","dropped"],"additionalProperties":false}},"drops":{"type":"array","items":{"type":"object","properties":{"outcome":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"explanation":{"type":"string"}},"required":["outcome","quantity","explanation"],"additionalProperties":false}},"quota":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"billable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"percentOfLimit":{"type":"number"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"projectOverrides":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","billable","percentOfLimit","remaining","projectOverrides"],"additionalProperties":false},"generatedAt":{"type":"string"}},"required":["org","period","plan","capsEnabled","series","totals","byCategory","drops","quota","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/risk":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"signals":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["key_never_used","ingest_dropped","over_quota_sampling","project_went_quiet","login_failure_cluster","subscription_past_due","ingest_suspended"]},"severity":{"type":"string","enum":["info","warning","serious","critical"]},"sentence":{"type":"string"},"count":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"unit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"window":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"evidence":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"detail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["label","value","detail"],"additionalProperties":false}}},"required":["kind","severity","sentence","count","unit","window","evidence"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"worstSeverity":{"anyOf":[{"type":"string","enum":["info","warning","serious","critical"]},{"nullable":true,"enum":[null]}]},"checked":{"type":"array","items":{"type":"string","enum":["key_never_used","ingest_dropped","over_quota_sampling","project_went_quiet","login_failure_cluster","subscription_past_due","ingest_suspended"]}},"truncated":{"type":"boolean"},"generatedAt":{"type":"string"}},"required":["org","signals","count","worstSeverity","checked","truncated","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/timeline":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string"},"kind":{"type":"string","enum":["org_created","first_event","plan_change","ingest_suspension","support_grant","operator_action","dsr"]},"title":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["at","kind","title","detail","actor","targetType","targetId"],"additionalProperties":false}},"truncated":{"type":"boolean"},"generatedAt":{"type":"string"}},"required":["org","data","truncated","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/notes":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"authorName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","body","authorPrincipalId","authorName","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"visibility":{"type":"string","enum":["internal"]},"generatedAt":{"type":"string"}},"required":["org","data","nextCursor","visibility","generatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":10000}},"required":["body"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgSlug":{"type":"string"},"body":{"type":"string"},"authorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgSlug","body","authorPrincipalId","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/suspend/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"orgSlug":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"volume24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadyInState":{"type":"boolean"}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","orgSlug","projectSlug","projects","volume24h","alreadyInState"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/suspend":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scope":{"type":"string","enum":["org","project"]},"suspended":{"type":"boolean"},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"evictedKeys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgSlug","projectSlug","scope","suspended","suspendedAt","reason","projects","evictedKeys"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/reinstate":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scope":{"type":"string","enum":["org","project"]},"suspended":{"type":"boolean"},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"evictedKeys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgSlug","projectSlug","scope","suspended","suspendedAt","reason","projects","evictedKeys"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/projects/{projectSlug}/suspend/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"orgSlug":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"volume24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadyInState":{"type":"boolean"}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","orgSlug","projectSlug","projects","volume24h","alreadyInState"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/projects/{projectSlug}/suspend":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scope":{"type":"string","enum":["org","project"]},"suspended":{"type":"boolean"},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"evictedKeys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgSlug","projectSlug","scope","suspended","suspendedAt","reason","projects","evictedKeys"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/projects/{projectSlug}/reinstate":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scope":{"type":"string","enum":["org","project"]},"suspended":{"type":"boolean"},"suspendedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"evictedKeys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgSlug","projectSlug","scope","suspended","suspendedAt","reason","projects","evictedKeys"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/plan/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]}},"required":["plan"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"orgSlug":{"type":"string"},"fromPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"toPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"immediate":{"type":"boolean"},"effectiveAt":{"type":"string"},"creditCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresSalesContact":{"type":"boolean"},"explanation":{"type":"string"},"paymentConfigured":{"type":"boolean"},"paymentMessage":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","orgSlug","fromPlan","toPlan","immediate","effectiveAt","creditCents","chargeCents","netCents","requiresSalesContact","explanation","paymentConfigured","paymentMessage"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/plan":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["plan"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"fromPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"toPlan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"immediate":{"type":"boolean"},"effectiveAt":{"type":"string"},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paymentStatus":{"type":"string"},"pendingPlan":{"anyOf":[{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},{"nullable":true,"enum":[null]}]}},"required":["orgSlug","fromPlan","toPlan","immediate","effectiveAt","netCents","paymentStatus","pendingPlan"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/quota":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectSlug":{"type":"string","minLength":1},"monthlyEventLimit":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"capsEnabled":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["projectSlug"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"projectSlug":{"type":"string"},"projectId":{"type":"string"},"monthlyEventLimit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"capsEnabled":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]}},"required":["orgSlug","projectSlug","projectId","monthlyEventLimit","capsEnabled"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/billing-settings":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"plan":{"type":"string","enum":["FREE","PRO","TEAM","ENTERPRISE"]},"capsEnabled":{"type":"boolean"},"byoLlmKey":{"type":"boolean"},"aiMonthlyBudgetCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"aiBudgetHardCap":{"type":"boolean"}},"required":["orgSlug","plan","capsEnabled","byoLlmKey","aiMonthlyBudgetCents","aiBudgetHardCap"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/members/{principalId}/role/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["role"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"orgSlug":{"type":"string"},"principalId":{"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"currentRole":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"nextRole":{"anyOf":[{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},{"nullable":true,"enum":[null]}]},"teamMemberships":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastOwner":{"type":"boolean"}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","orgSlug","principalId","displayName","email","currentRole","nextRole","teamMemberships","lastOwner"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/members/{principalId}/role":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["role"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"principalId":{"type":"string"},"role":{"anyOf":[{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},{"nullable":true,"enum":[null]}]},"removed":{"type":"boolean"}},"required":["orgSlug","principalId","role","removed"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/members/{principalId}/remove/preview":{"post":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"orgSlug":{"type":"string"},"principalId":{"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"currentRole":{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},"nextRole":{"anyOf":[{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},{"nullable":true,"enum":[null]}]},"teamMemberships":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastOwner":{"type":"boolean"}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","orgSlug","principalId","displayName","email","currentRole","nextRole","teamMemberships","lastOwner"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/members/{principalId}":{"delete":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"principalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"principalId":{"type":"string"},"role":{"anyOf":[{"type":"string","enum":["OWNER","ADMIN","MEMBER","BILLING","VIEWER"]},{"nullable":true,"enum":[null]}]},"removed":{"type":"boolean"}},"required":["orgSlug","principalId","role","removed"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/users/{userId}/suspend/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"userId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"userId":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"isActive":{"type":"boolean"},"orgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"orgSlugs":{"type":"array","items":{"type":"string"}},"activeSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","userId","email","isActive","orgs","orgSlugs","activeSessions"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/users/{userId}/suspend":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"userId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"isActive":{"type":"boolean"},"sessionsRevoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"auditedOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["userId","isActive","sessionsRevoked","auditedOrgs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/users/{userId}/reinstate":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"userId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"isActive":{"type":"boolean"},"sessionsRevoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"auditedOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["userId","isActive","sessionsRevoked","auditedOrgs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/users/{userId}/sessions/revoke/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"userId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"userId":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"isActive":{"type":"boolean"},"orgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"orgSlugs":{"type":"array","items":{"type":"string"}},"activeSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","userId","email","isActive","orgs","orgSlugs","activeSessions"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/users/{userId}/sessions/revoke":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"userId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"isActive":{"type":"boolean"},"sessionsRevoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"auditedOrgs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["userId","isActive","sessionsRevoked","auditedOrgs"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/keys/{keyId}/revoke/preview":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"keyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string"},"class":{"type":"string","enum":["reversible","disruptive","irreversible"]},"summary":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"affected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bounded":{"type":"boolean"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiresReason":{"type":"boolean"},"requiresTypedConfirmation":{"type":"boolean"},"generatedAt":{"type":"string"},"orgSlug":{"type":"string"},"keyId":{"type":"string"},"keyName":{"type":"string"},"projectSlug":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"volume24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["action","class","summary","matched","affected","bounded","limit","requiresReason","requiresTypedConfirmation","generatedAt","orgSlug","keyId","keyName","projectSlug","isActive","rateLimitPerMinute","lastUsedAt","volume24h"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/keys/{keyId}/revoke":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"keyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"keyId":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"evictedKeys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgSlug","keyId","isActive","rateLimitPerMinute","evictedKeys"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/tenants/{orgSlug}/keys/{keyId}/rate-limit":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rateLimitPerMinute":{"anyOf":[{"type":"integer","exclusiveMinimum":true,"maximum":1000000,"minimum":0},{"nullable":true,"enum":[null]}]},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["rateLimitPerMinute"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"keyId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"keyId":{"type":"string"},"isActive":{"type":"boolean"},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"evictedKeys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgSlug","keyId","isActive","rateLimitPerMinute","evictedKeys"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/orgs/{orgSlug}/break-glass":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500},"level":{"default":"FULL","type":"string","enum":["ISSUES","FULL"]},"expiresInHours":{"type":"number","exclusiveMinimum":true,"minimum":0}},"required":["reason"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedLevel":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expired":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"grantedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"acknowledgedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"type":"string"},"operatorOrgSlug":{"type":"string"},"auditedInto":{"type":"array","items":{"type":"string"}}},"required":["orgId","level","grantedLevel","grantedAt","expiresAt","expired","reason","breakGlass","grantedByPrincipalId","acknowledgedAt","orgSlug","operatorOrgSlug","auditedInto"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/orgs/{orgSlug}/issues":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"status","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"level","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"environment","required":false},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"in":"query","name":"release","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"assignee","required":false},{"schema":{"type":"string","maxLength":500},"in":"query","name":"query","required":false},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"since","required":false},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"until","required":false},{"schema":{"default":"lastSeen","type":"string","enum":["lastSeen","firstSeen","eventCount","userCount"]},"in":"query","name":"sort","required":false},{"schema":{"default":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false},{"schema":{"type":"string","minLength":1},"in":"query","name":"projectSlug","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"access":{"type":"object","properties":{"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedLevel":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"redactedFields":{"type":"array","items":{"type":"string"}},"requiredForRedacted":{"anyOf":[{"type":"string","enum":["METADATA","ISSUES","FULL"]},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["level","grantedLevel","expiresAt","breakGlass","redactedFields","requiredForRedacted","note"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"fingerprint":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"type":"string"},"exceptionValue":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"actionability":{"type":"number"},"assigneePrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assignee":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"resolvedInRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"projectSlug":{"type":"string"}},"required":["id","shortId","projectId","fingerprint","title","culprit","exceptionType","exceptionValue","level","status","eventCount","userCount","firstSeen","lastSeen","actionability","assigneePrincipalId","assignee","resolvedInRelease","archivedUntil","projectSlug"],"additionalProperties":false}},"hasMore":{"type":"boolean"}},"required":["org","access","data","hasMore"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/orgs/{orgSlug}/issues/{issueId}":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"projectSlug","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"access":{"type":"object","properties":{"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedLevel":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"redactedFields":{"type":"array","items":{"type":"string"}},"requiredForRedacted":{"anyOf":[{"type":"string","enum":["METADATA","ISSUES","FULL"]},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["level","grantedLevel","expiresAt","breakGlass","redactedFields","requiredForRedacted","note"],"additionalProperties":false},"issue":{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"projectId":{"type":"string"},"fingerprint":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"exceptionType":{"type":"string"},"exceptionValue":{"type":"string"},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string","enum":["NEW","ONGOING","RESOLVED","ARCHIVED","REGRESSED"]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"actionability":{"type":"number"},"assigneePrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"assignee":{"anyOf":[{"type":"object","properties":{"principalId":{"type":"string"},"kind":{"type":"string","enum":["HUMAN","AGENT","SERVICE"]},"displayName":{"type":"string"}},"required":["principalId","kind","displayName"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"resolvedInRelease":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"archivedUntil":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"essence":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"essenceVersion":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"essenceTokens":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"firstReleaseId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastReleaseId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"projectSlug":{"type":"string"}},"required":["id","shortId","projectId","fingerprint","title","culprit","exceptionType","exceptionValue","level","status","eventCount","userCount","firstSeen","lastSeen","actionability","assigneePrincipalId","assignee","resolvedInRelease","archivedUntil","essence","essenceVersion","essenceTokens","firstReleaseId","lastReleaseId","createdAt","updatedAt","projectSlug"],"additionalProperties":false}},"required":["org","access","issue"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/self":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":24,"type":"integer","minimum":1,"maximum":168},"in":"query","name":"windowHours","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"additionalProperties":false},"generatedAt":{"type":"string"},"windowHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bootstrapComplete":{"type":"boolean"},"neverReported":{"type":"array","items":{"type":"string"}},"surfaces":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string","enum":["bucker-api","bucker-workers","bucker-mcp","bucker-dashboard","bucker-website","bucker-status"]},"projectSlug":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["project_missing","never_reported","accepted_ungrouped","quiet","reporting","not_configured"]},"explanation":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"project":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","slug","name","platform","createdAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"dsn":{"type":"object","properties":{"envName":{"type":"string"},"fallbackEnvName":{"type":"string"},"browserEnvName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"configured":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]},"answer":{"type":"string","enum":["measured","inferred"]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["envName","fallbackEnvName","browserEnvName","configured","answer","reason"],"additionalProperties":false},"everReported":{"type":"boolean"},"firstEventAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastEventAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"last24h":{"type":"object","properties":{"since":{"type":"string"},"eventsAccepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventsRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastAcceptedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issuesByLevel":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["fatal","error","warning","info","debug"]},"newIssues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["since","eventsAccepted","eventsRejected","lastAcceptedAt","issuesByLevel","newIssues"],"additionalProperties":false},"issues":{"type":"object","properties":{"open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"top":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"level":{"type":"string","enum":["fatal","error","warning","info","debug"]},"status":{"type":"string"},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["id","shortId","title","culprit","level","status","eventCount","userCount","firstSeen","lastSeen"],"additionalProperties":false}}},"required":["open","total","top"],"additionalProperties":false},"releases":{"type":"object","properties":{"reported":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"firstSeenAt":{"type":"string"}},"required":["version","firstSeenAt"],"additionalProperties":false}},"unnamed":{"type":"boolean"},"health":{"anyOf":[{"type":"object","properties":{"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"crashFreeUserRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"releases":{"type":"array","items":{"type":"object","properties":{"releaseVersion":{"type":"string"},"firstSessionAt":{"type":"string"},"adoptionRate":{"type":"number"},"totalSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"crashFreeSessionRate":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["releaseVersion","firstSessionAt","adoptionRate","totalSessions","crashedSessions","crashFreeSessionRate"],"additionalProperties":false}}},"required":["totalSessions","crashFreeSessionRate","crashFreeUserRate","releases"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"healthUnavailable":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["reported","unnamed","health","healthUnavailable"],"additionalProperties":false},"environments":{"type":"array","items":{"type":"string"}}},"required":["service","projectSlug","name","state","explanation","project","dsn","everReported","firstEventAt","lastEventAt","last24h","issues","releases","environments"],"additionalProperties":false}}},"required":["org","generatedAt","windowHours","bootstrapComplete","neverReported","surfaces"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/self/test-event":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string","minLength":1,"maxLength":200}}}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"object","properties":{"service":{"type":"string","enum":["bucker-api"]},"dsnEnvName":{"type":"string"},"dsnProjectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ingestOrigin":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"project":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"dsnMatchesProject":{"anyOf":[{"type":"boolean"},{"nullable":true,"enum":[null]}]}},"required":["service","dsnEnvName","dsnProjectId","ingestOrigin","project","dsnMatchesProject"],"additionalProperties":false},"outcome":{"type":"string","enum":["refused","accepted","landed","failed"]},"sent":{"type":"boolean"},"detail":{"type":"string"},"eventId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"statusCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"landedIssueShortId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recorded":{"type":"boolean"}},"required":["target","outcome","sent","detail","eventId","statusCode","durationMs","landedIssueShortId","recorded"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/security/events":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","enum":["LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT","PASSWORD_CHANGED","PASSWORD_RESET_REQUESTED","PASSWORD_RESET_COMPLETED","MFA_ENROLLED","MFA_DISABLED","MFA_CHALLENGE_FAILED","REFRESH_REUSE_DETECTED","TOKEN_REVOKED","ACCOUNT_CREATED","EMAIL_VERIFIED","PROFILE_CHANGED","DEVICE_REGISTERED","DEVICE_UNREGISTERED"]},"in":"query","name":"kind","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"orgSlug","required":false},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"principalId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"userId","required":false},{"schema":{},"in":"query","name":"since","required":false},{"schema":{},"in":"query","name":"until","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"filters":{"type":"object","properties":{"kind":{"anyOf":[{"type":"string","enum":["LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT","PASSWORD_CHANGED","PASSWORD_RESET_REQUESTED","PASSWORD_RESET_COMPLETED","MFA_ENROLLED","MFA_DISABLED","MFA_CHALLENGE_FAILED","REFRESH_REUSE_DETECTED","TOKEN_REVOKED","ACCOUNT_CREATED","EMAIL_VERIFIED","PROFILE_CHANGED","DEVICE_REGISTERED","DEVICE_UNREGISTERED"]},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgResolved":{"type":"boolean"},"orgMembersTruncated":{"type":"boolean"},"principalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"since":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"until":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["kind","orgSlug","orgResolved","orgMembersTruncated","principalId","userId","since","until"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT","PASSWORD_CHANGED","PASSWORD_RESET_REQUESTED","PASSWORD_RESET_COMPLETED","MFA_ENROLLED","MFA_DISABLED","MFA_CHALLENGE_FAILED","REFRESH_REUSE_DETECTED","TOKEN_REVOKED","ACCOUNT_CREATED","EMAIL_VERIFIED","PROFILE_CHANGED","DEVICE_REGISTERED","DEVICE_UNREGISTERED"]},"tokenReplay":{"type":"boolean"},"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"principalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"ipAddress":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"userAgent":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"detail":{"anyOf":[{},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","kind","tokenReplay","userId","principalId","actor","ipAddress","userAgent","detail","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"countsByKind":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT","PASSWORD_CHANGED","PASSWORD_RESET_REQUESTED","PASSWORD_RESET_COMPLETED","MFA_ENROLLED","MFA_DISABLED","MFA_CHALLENGE_FAILED","REFRESH_REUSE_DETECTED","TOKEN_REVOKED","ACCOUNT_CREATED","EMAIL_VERIFIED","PROFILE_CHANGED","DEVICE_REGISTERED","DEVICE_UNREGISTERED"]},"tokenReplay":{"type":"object","properties":{"kind":{"type":"string","enum":["LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT","PASSWORD_CHANGED","PASSWORD_RESET_REQUESTED","PASSWORD_RESET_COMPLETED","MFA_ENROLLED","MFA_DISABLED","MFA_CHALLENGE_FAILED","REFRESH_REUSE_DETECTED","TOKEN_REVOKED","ACCOUNT_CREATED","EMAIL_VERIFIED","PROFILE_CHANGED","DEVICE_REGISTERED","DEVICE_UNREGISTERED"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"subjects":{"type":"array","items":{"type":"object","properties":{"userId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"principalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"actor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastAt":{"type":"string"}},"required":["userId","principalId","actor","count","lastAt"],"additionalProperties":false}},"subjectsTruncated":{"type":"boolean"}},"required":["kind","total","lastAt","subjects","subjectsTruncated"],"additionalProperties":false}},"required":["generatedAt","filters","data","nextCursor","countsByKind","tokenReplay"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/security/tokens":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","enum":["pat","agent","delegation","scim"]},"in":"query","name":"kind","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"orgSlug","required":false},{"schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]},"in":"query","name":"includeRevoked","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"idleDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filters":{"type":"object","properties":{"kind":{"anyOf":[{"type":"string","enum":["pat","agent","delegation","scim"]},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgResolved":{"type":"boolean"},"includeRevoked":{"type":"boolean"},"limitPerKind":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","orgSlug","orgResolved","includeRevoked","limitPerKind"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["pat","agent","delegation","scim"]},"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"holder":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"holderId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"scopes":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedIp":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"lastUsedTracked":{"type":"boolean"},"expiredNotRevoked":{"type":"boolean"},"unusedForNinetyDays":{"type":"boolean"},"idleDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["kind","id","name","orgId","orgSlug","holder","holderId","scopes","expiresAt","lastUsedAt","lastUsedIp","revokedAt","createdAt","lastUsedTracked","expiredNotRevoked","unusedForNinetyDays","idleDays"],"additionalProperties":false}},"truncated":{"type":"array","items":{"type":"string","enum":["pat","agent","delegation","scim"]}},"summary":{"type":"object","properties":{"all":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"live":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredNotRevoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unusedForNinetyDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","live","revoked","expiredNotRevoked","unusedForNinetyDays"],"additionalProperties":false},"byKind":{"type":"object","additionalProperties":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"live":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredNotRevoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unusedForNinetyDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","live","revoked","expiredNotRevoked","unusedForNinetyDays"],"additionalProperties":false},"required":["pat","agent","delegation","scim"]}},"required":["all","byKind"],"additionalProperties":false}},"required":["generatedAt","idleDays","filters","data","truncated","summary"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/security/grants":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"open":{"type":"array","items":{"type":"object","properties":{"orgId":{"type":"string"},"orgSlug":{"type":"string"},"orgName":{"type":"string"},"level":{"type":"string"},"grantedLevel":{"type":"string"},"grantedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expired":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"grantedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"acknowledgedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresInSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["orgId","orgSlug","orgName","level","grantedLevel","grantedAt","expiresAt","expired","reason","breakGlass","grantedByPrincipalId","acknowledgedAt","expiresInSeconds"],"additionalProperties":false}},"openCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openBreakGlassCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"breakGlass":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"takenAt":{"type":"string"},"operator":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorPrincipalId":{"type":"string"},"operatorOrgSlug":{"type":"string"},"targetOrgId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetOrgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"result":{"type":"string"},"ipAddress":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","takenAt","operator","operatorPrincipalId","operatorOrgSlug","targetOrgId","targetOrgSlug","targetType","targetId","reason","result","ipAddress"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextCursor"],"additionalProperties":false}},"required":["generatedAt","open","openCount","openBreakGlassCount","breakGlass"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/security/audit":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"orgSlug","required":false},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"actorPrincipalId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"action","required":false},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"targetType","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"targetId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":50},"in":"query","name":"result","required":false},{"schema":{},"in":"query","name":"since","required":false},{"schema":{},"in":"query","name":"until","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"filters":{"type":"object","properties":{"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgResolved":{"type":"boolean"},"actorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"result":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"since":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"until":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["orgSlug","orgResolved","actorPrincipalId","action","targetType","targetId","result","since","until"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"actor":{"type":"string"},"actorPrincipalId":{"type":"string"},"onBehalfOfPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"action":{"type":"string"},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"result":{"type":"string"},"ipAddress":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","orgId","orgSlug","actor","actorPrincipalId","onBehalfOfPrincipalId","action","targetType","targetId","result","ipAddress","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["generatedAt","filters","data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/security/tokens/{kind}/{id}/revoke":{"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"reason":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]}}}}}},"parameters":[{"schema":{"type":"string","enum":["pat","agent","delegation","scim"]},"in":"path","name":"kind","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["pat","agent","delegation","scim"]},"id":{"type":"string"},"name":{"type":"string"},"orgId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revokedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"revoked":{"type":"boolean"},"alreadyRevoked":{"type":"boolean"}},"required":["kind","id","name","orgId","orgSlug","revokedAt","expiresAt","lastUsedAt","revoked","alreadyRevoked"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/lifecycle/partitions":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":60,"type":"integer","minimum":1,"maximum":120},"in":"query","name":"limit","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"health":{"type":"object","properties":{"hotPartitions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archivedPartitions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"droppedPartitions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hotBoundary":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"defaultPartitionRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defaultPartitionAttached":{"type":"boolean"}},"required":["hotPartitions","archivedPartitions","droppedPartitions","hotBoundary","defaultPartitionRows","defaultPartitionAttached"],"additionalProperties":false},"lookahead":{"type":"object","properties":{"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missingDays":{"type":"array","items":{"type":"string"}},"complete":{"type":"boolean"},"tomorrow":{"type":"string"},"tomorrowProvisioned":{"type":"boolean"}},"required":["days","missingDays","complete","tomorrow","tomorrowProvisioned"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","enum":["critical","warning"]},"code":{"type":"string"},"message":{"type":"string"}},"required":["level","code","message"],"additionalProperties":false}},"partitions":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"table":{"type":"string"},"state":{"type":"string","enum":["HOT","ARCHIVED","DROPPED"]},"rowCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"archiveBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"archivedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"droppedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"attached":{"type":"boolean"}},"required":["day","table","state","rowCount","archiveBytes","archivedAt","droppedAt","attached"],"additionalProperties":false}}},"required":["generatedAt","health","lookahead","warnings","partitions"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/lifecycle/retention":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"hotWindow":{"type":"object","properties":{"effectiveDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cutoff":{"type":"string"},"projectsRequestingLess":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"type":"string"}},"required":["effectiveDays","cutoff","projectsRequestingLess","note"],"additionalProperties":false},"orgs":{"type":"array","items":{"type":"object","properties":{"orgId":{"type":"string"},"orgSlug":{"type":"string"},"plan":{"type":"string"},"planMaxDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyExists":{"type":"boolean"},"requested":{"type":"object","properties":{"auditLogDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"spanDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"logRecordDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"replayDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["auditLogDays","spanDays","logRecordDays","replayDays"],"additionalProperties":false},"effective":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"clamped":{"type":"array","items":{"type":"string"}},"lastEnforcedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"derivedStreams":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"type":"string"}},"required":["label","days","note"],"additionalProperties":false}},"projects":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectSlug":{"type":"string"},"requestedHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"explicit":{"type":"boolean"},"effectiveHotDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"honoured":{"type":"boolean"},"extraDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coldDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveEnabled":{"type":"boolean"}},"required":["projectId","projectSlug","requestedHotDays","explicit","effectiveHotDays","honoured","extraDays","coldDays","archiveEnabled"],"additionalProperties":false}},"projectsTruncated":{"type":"boolean"}},"required":["orgId","orgSlug","plan","planMaxDays","policyExists","requested","effective","clamped","lastEnforcedAt","derivedStreams","projects","projectsTruncated"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["generatedAt","hotWindow","orgs","nextCursor"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/lifecycle/storage":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"totals":{"type":"object","properties":{"archiveBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replaySegments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"artifactBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"artifacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["archiveBytes","archiveDays","replayBytes","replaySegments","artifactBytes","artifacts","totalBytes"],"additionalProperties":false},"expiredArchives":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","bytes"],"additionalProperties":false},"projects":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectSlug":{"type":"string"},"orgSlug":{"type":"string"},"archiveBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archiveDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replaySegments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"artifactBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"artifacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["projectId","projectSlug","orgSlug","archiveBytes","archiveDays","replayBytes","replaySegments","artifactBytes","artifacts","totalBytes"],"additionalProperties":false}},"truncated":{"type":"boolean"},"sources":{"type":"array","items":{"type":"string"}}},"required":["generatedAt","totals","expiredArchives","projects","truncated","sources"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/lifecycle/deliveries":{"get":{"tags":["admin"],"parameters":[{"schema":{"default":24,"type":"integer","minimum":1,"maximum":720},"in":"query","name":"windowHours","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"windowHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stuckAfterSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"outboxes":{"type":"array","items":{"type":"object","properties":{"outbox":{"type":"string","enum":["alert_events","status_subscriber_deliveries","audit_sinks","proof_ledger_witness_receipts","warehouse_export_runs","landing_connectors"]},"label":{"type":"string"},"unit":{"type":"string"},"pending":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"failing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dead":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"oldestPendingAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"oldestPendingAgeSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"topError":{"anyOf":[{"type":"object","properties":{"message":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["message","count"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"stuck":{"type":"boolean"},"note":{"type":"string"}},"required":["outbox","label","unit","pending","failing","dead","oldestPendingAt","oldestPendingAgeSeconds","topError","stuck","note"],"additionalProperties":false}},"stuckCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["generatedAt","windowHours","stuckAfterSeconds","outboxes","stuckCount"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/lifecycle/dsr":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"orgSlug","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":500},"in":"query","name":"cursor","required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"filters":{"type":"object","properties":{"status":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgResolved":{"type":"boolean"}},"required":["status","orgSlug","orgResolved"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"orgSlug":{"type":"string"},"kind":{"type":"string","enum":["EXPORT","ERASURE"]},"status":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"subjectEmail":{"type":"string"},"subjectUserId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"requestedBy":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"tableCounts":{"anyOf":[{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"nullable":true,"enum":[null]}]},"countsRecorded":{"type":"boolean"},"tablesWithRows":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"totalRows":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]},"emptyResult":{"type":"boolean"},"hasBundle":{"type":"boolean"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"},"completedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"durationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"nullable":true,"enum":[null]}]}},"required":["id","orgId","orgSlug","kind","status","subjectEmail","subjectUserId","requestedByPrincipalId","requestedBy","tableCounts","countsRecorded","tablesWithRows","totalRows","emptyResult","hasBundle","error","createdAt","completedAt","durationSeconds"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"summary":{"type":"object","properties":{"byStatus":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"byKind":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"emptyCompletedExports":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedWithoutCounts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scanned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scanTruncated":{"type":"boolean"}},"required":["byStatus","byKind","emptyCompletedExports","completedWithoutCounts","scanned","scanTruncated"],"additionalProperties":false}},"required":["generatedAt","filters","data","nextCursor","summary"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/lookup":{"get":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":320},"in":"query","name":"q","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["org","project","user","project_key","issue","ingest_job","audit"]},"label":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"href":{"type":"string"},"id":{"type":"string"}},"required":["kind","label","detail","href","id"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/ops-flags":{"get":{"tags":["admin"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{},"setByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"setAt":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["key","value","setByPrincipalId","setAt","expiresAt","note"],"additionalProperties":false}},"maxPauseHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["data","maxPauseHours"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["admin"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200},"value":{},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"string","maxLength":500},{"nullable":true,"enum":[null]}]}},"required":["key"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"value":{},"setByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"setAt":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"note":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["key","value","setByPrincipalId","setAt","expiresAt","note"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/admin/ops-flags/{key}":{"delete":{"tags":["admin"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"path","name":"key","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"cleared":{"type":"boolean"}},"required":["cleared"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/support-access":{"get":{"tags":["support-access"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedLevel":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expired":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"grantedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"acknowledgedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"type":"string"},"grantedByName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limits":{"type":"object","properties":{"defaultGrantDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxGrantDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"breakGlassMaxHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["defaultGrantDays","maxGrantDays","breakGlassMaxHours"],"additionalProperties":false},"levels":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"describes":{"type":"string"}},"required":["level","describes"],"additionalProperties":false}},"recentReads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string"},"at":{"type":"string"},"level":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","action","at","level","operatorPrincipalId","operatorName","targetType","targetId"],"additionalProperties":false}}},"required":["orgId","level","grantedLevel","grantedAt","expiresAt","expired","reason","breakGlass","grantedByPrincipalId","acknowledgedAt","orgSlug","grantedByName","limits","levels","recentReads"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["support-access"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"reason":{"type":"string","maxLength":500}},"required":["level"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedLevel":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expired":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"grantedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"acknowledgedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"type":"string"},"grantedByName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limits":{"type":"object","properties":{"defaultGrantDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxGrantDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"breakGlassMaxHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["defaultGrantDays","maxGrantDays","breakGlassMaxHours"],"additionalProperties":false},"levels":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"describes":{"type":"string"}},"required":["level","describes"],"additionalProperties":false}},"recentReads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string"},"at":{"type":"string"},"level":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","action","at","level","operatorPrincipalId","operatorName","targetType","targetId"],"additionalProperties":false}}},"required":["orgId","level","grantedLevel","grantedAt","expiresAt","expired","reason","breakGlass","grantedByPrincipalId","acknowledgedAt","orgSlug","grantedByName","limits","levels","recentReads"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/support-access/acknowledge":{"post":{"tags":["support-access"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedLevel":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"grantedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expiresAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"expired":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"breakGlass":{"type":"boolean"},"grantedByPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"acknowledgedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"orgSlug":{"type":"string"},"grantedByName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"limits":{"type":"object","properties":{"defaultGrantDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxGrantDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"breakGlassMaxHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["defaultGrantDays","maxGrantDays","breakGlassMaxHours"],"additionalProperties":false},"levels":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","enum":["METADATA","ISSUES","FULL"]},"describes":{"type":"string"}},"required":["level","describes"],"additionalProperties":false}},"recentReads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string"},"at":{"type":"string"},"level":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorPrincipalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"operatorName":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetType":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"targetId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["id","action","at","level","operatorPrincipalId","operatorName","targetType","targetId"],"additionalProperties":false}}},"required":["orgId","level","grantedLevel","grantedAt","expiresAt","expired","reason","breakGlass","grantedByPrincipalId","acknowledgedAt","orgSlug","grantedByName","limits","levels","recentReads"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/evidence-pricing/tiers":{"get":{"tags":["evidence-pricing"],"description":"Reachable without a Bucker session token. Static tier ladder; the same bytes for everyone.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"pricingBasis":{"type":"string"},"disclosure":{"type":"string"},"tiers":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"claim":{"type":"string"},"doesNotProve":{"type":"string"},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"},"measuredFrom":{"type":"string"}},"required":["id","description","measuredFrom"],"additionalProperties":false}}},"required":["tier","rank","priceCents","pricingBasis","claim","doesNotProve","requirements"],"additionalProperties":false}}},"required":["pricingBasis","disclosure","tiers"],"additionalProperties":false}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/evidence-pricing/quotes":{"post":{"tags":["evidence-pricing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"projectId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string","minLength":1},{"nullable":true,"enum":[null]}]}},"required":["tier"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedTier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"breakdown":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"claim":{"type":"string"},"doesNotProve":{"type":"string"},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"},"measuredFrom":{"type":"string"}},"required":["id","description","measuredFrom"],"additionalProperties":false}}},"required":["tier","rank","priceCents","pricingBasis","claim","doesNotProve","requirements"],"additionalProperties":false}},"requestedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"disclosure":{"type":"string"}},"required":["id","orgId","projectId","issueId","requestedTier","priceCents","pricingBasis","breakdown","requestedByPrincipalId","createdAt","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["evidence-pricing"],"parameters":[{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"quotes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"issueId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedTier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"breakdown":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"claim":{"type":"string"},"doesNotProve":{"type":"string"},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"},"measuredFrom":{"type":"string"}},"required":["id","description","measuredFrom"],"additionalProperties":false}}},"required":["tier","rank","priceCents","pricingBasis","claim","doesNotProve","requirements"],"additionalProperties":false}},"requestedByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"disclosure":{"type":"string"}},"required":["id","orgId","projectId","issueId","requestedTier","priceCents","pricingBasis","breakdown","requestedByPrincipalId","createdAt","disclosure"],"additionalProperties":false}},"disclosure":{"type":"string"}},"required":["quotes","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/evidence-pricing/tier-mix":{"get":{"tags":["evidence-pricing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false},"quoted":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"byTier":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"share":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["tier","count","share"],"additionalProperties":false}}},"required":["total","byTier"],"additionalProperties":false},"graded":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"byTier":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"share":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]}},"required":["tier","count","share"],"additionalProperties":false}},"revenueCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","byTier","revenueCents"],"additionalProperties":false},"meanQuotedRank":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"meanGradedRank":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"note":{"type":"string"},"disclosure":{"type":"string"}},"required":["period","quoted","graded","meanQuotedRank","meanGradedRank","note","disclosure"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/evidence-pricing/proposals/{proposalId}/grade":{"get":{"tags":["evidence-pricing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"proposalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"proposalId":{"type":"string"},"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"tierRank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"facts":{"type":"object","properties":{"verificationTier":{"type":"string"},"reproQualified":{"type":"boolean"},"pinMeasured":{"type":"boolean"},"pinScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pinThreshold":{"type":"number"},"flakeVerdict":{"type":"string"},"noiseBandKnown":{"type":"boolean"},"transitionInsideNoiseBand":{"type":"boolean"},"searchSeeds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"behavioralDiffReplayed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"behavioralDiffCoverage":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"behavioralDiffUnintended":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"divergenceLocalized":{"type":"boolean"},"durabilityWatchDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proofLedgerCommitted":{"type":"boolean"}},"required":["verificationTier","reproQualified","pinMeasured","pinScore","pinThreshold","flakeVerdict","noiseBandKnown","transitionInsideNoiseBand","searchSeeds","behavioralDiffReplayed","behavioralDiffCoverage","behavioralDiffUnintended","divergenceLocalized","durabilityWatchDays","proofLedgerCommitted"],"additionalProperties":false},"shortfalls":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"requirementId":{"type":"string"},"description":{"type":"string"},"measuredFrom":{"type":"string"}},"required":["tier","requirementId","description","measuredFrom"],"additionalProperties":false}},"claim":{"type":"string"},"doesNotProve":{"type":"string"},"disclosure":{"type":"string"},"gradedAt":{"type":"string"}},"required":["proposalId","tier","tierRank","priceCents","pricingBasis","facts","shortfalls","claim","doesNotProve","disclosure","gradedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["evidence-pricing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"proposalId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"proposalId":{"type":"string"},"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"tierRank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricingBasis":{"type":"string"},"facts":{"type":"object","properties":{"verificationTier":{"type":"string"},"reproQualified":{"type":"boolean"},"pinMeasured":{"type":"boolean"},"pinScore":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"pinThreshold":{"type":"number"},"flakeVerdict":{"type":"string"},"noiseBandKnown":{"type":"boolean"},"transitionInsideNoiseBand":{"type":"boolean"},"searchSeeds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"behavioralDiffReplayed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"behavioralDiffCoverage":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"behavioralDiffUnintended":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"divergenceLocalized":{"type":"boolean"},"durabilityWatchDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proofLedgerCommitted":{"type":"boolean"}},"required":["verificationTier","reproQualified","pinMeasured","pinScore","pinThreshold","flakeVerdict","noiseBandKnown","transitionInsideNoiseBand","searchSeeds","behavioralDiffReplayed","behavioralDiffCoverage","behavioralDiffUnintended","divergenceLocalized","durabilityWatchDays","proofLedgerCommitted"],"additionalProperties":false},"shortfalls":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["NONE","BASELINE","CORROBORATED","ADJUDICATED"]},"requirementId":{"type":"string"},"description":{"type":"string"},"measuredFrom":{"type":"string"}},"required":["tier","requirementId","description","measuredFrom"],"additionalProperties":false}},"claim":{"type":"string"},"doesNotProve":{"type":"string"},"disclosure":{"type":"string"},"gradedAt":{"type":"string"}},"required":["proposalId","tier","tierRank","priceCents","pricingBasis","facts","shortfalls","claim","doesNotProve","disclosure","gradedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/escrow":{"get":{"tags":["escrow"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"counts":{"type":"object","properties":{"HELD":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"RELEASED":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"CREDITED":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"VOID":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["HELD","RELEASED","CREDITED","VOID"],"additionalProperties":false},"heldCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"releasedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditNoteCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postReleaseRegressions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclaimer":{"type":"string"}},"required":["orgId","counts","heldCents","releasedCents","refundedCents","creditNoteCents","postReleaseRegressions","disclaimer"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/escrow/holds":{"get":{"tags":["escrow"],"parameters":[{"schema":{"type":"string","enum":["HELD","RELEASED","CREDITED","VOID"]},"in":"query","name":"status","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"holds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"proposalId":{"type":"string"},"windowId":{"type":"string"},"invoiceLineId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string","enum":["HELD","RELEASED","CREDITED","VOID"]},"heldCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"string"},"multiplierBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heldAt":{"type":"string"},"releaseDueAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releasedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditNoteCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postReleaseRegressionAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclaimer":{"type":"string"}},"required":["id","orgId","projectId","proposalId","windowId","invoiceLineId","status","heldCents","coverage","multiplierBps","heldAt","releaseDueAt","settledAt","releasedCents","refundedCents","creditNoteCents","postReleaseRegressionAt","disclaimer"],"additionalProperties":false}},"disclaimer":{"type":"string"}},"required":["holds","disclaimer"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["escrow"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"proposalId":{"type":"string","minLength":1},"multiplierBps":{"type":"integer","minimum":10000,"maximum":50000}},"required":["proposalId"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"hold":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"proposalId":{"type":"string"},"windowId":{"type":"string"},"invoiceLineId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string","enum":["HELD","RELEASED","CREDITED","VOID"]},"heldCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"string"},"multiplierBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heldAt":{"type":"string"},"releaseDueAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releasedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditNoteCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postReleaseRegressionAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclaimer":{"type":"string"}},"required":["id","orgId","projectId","proposalId","windowId","invoiceLineId","status","heldCents","coverage","multiplierBps","heldAt","releaseDueAt","settledAt","releasedCents","refundedCents","creditNoteCents","postReleaseRegressionAt","disclaimer"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"opened":{"type":"boolean"},"refusedBecause":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"reason":{"type":"string"},"disclaimer":{"type":"string"}},"required":["hold","opened","refusedBecause","reason","disclaimer"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/escrow/holds/{holdId}":{"get":{"tags":["escrow"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"holdId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"proposalId":{"type":"string"},"windowId":{"type":"string"},"invoiceLineId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"status":{"type":"string","enum":["HELD","RELEASED","CREDITED","VOID"]},"heldCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverage":{"type":"string"},"multiplierBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heldAt":{"type":"string"},"releaseDueAt":{"type":"string"},"settledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"releasedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditNoteCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postReleaseRegressionAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"disclaimer":{"type":"string"},"window":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openedAt":{"type":"string"},"closesAt":{"type":"string"},"closedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"outcomeReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"verificationTier":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"detectedAt":{"type":"string"},"evidence":{}},"required":["kind","detectedAt","evidence"],"additionalProperties":false}}},"required":["id","status","windowDays","openedAt","closesAt","closedAt","outcomeReason","verificationTier","events"],"additionalProperties":false},{"nullable":true,"enum":[null]}]},"entries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["HOLD","RELEASE","CREDIT","VOID","POST_RELEASE_REGRESSION"]},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"balanceAfterCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":"string"},"evidence":{},"dedupeKey":{"type":"string"},"at":{"type":"string"}},"required":["id","kind","amountCents","balanceAfterCents","reason","evidence","dedupeKey","at"],"additionalProperties":false}},"balanceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","orgId","projectId","proposalId","windowId","invoiceLineId","status","heldCents","coverage","multiplierBps","heldAt","releaseDueAt","settledAt","releasedCents","refundedCents","creditNoteCents","postReleaseRegressionAt","disclaimer","window","entries","balanceCents"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/escrow/sweep":{"post":{"tags":["escrow"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":500}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"examined":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opened":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"released":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credited":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"voided":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"waiting":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postReleaseRegressions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"disclaimer":{"type":"string"}},"required":["examined","opened","released","credited","voided","waiting","postReleaseRegressions","errors","disclaimer"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/landing/providers":{"get":{"tags":["landing"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"displayName":{"type":"string"},"transport":{"type":"string"},"crossOriginDedup":{"type":"string"},"maxPageSize":{"type":"number"},"credentialFields":{"type":"array","items":{"type":"string"}}},"required":["provider","displayName","transport","crossOriginDedup","maxPageSize","credentialFields"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/connectors":{"get":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"credentialFields":{"type":"array","items":{"type":"string"}},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rateLimitRemaining":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitLimit":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"consecutiveErrors":{"type":"number"},"nextPollAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPolledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSuccessAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recordsLanded":{"type":"number"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","status","enabled","config","hasCredentials","credentialFields","cursorAt","rateLimitRemaining","rateLimitLimit","rateLimitResetAt","consecutiveErrors","nextPollAt","lastPolledAt","lastSuccessAt","lastError","recordsLanded","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["landing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":32},"name":{"type":"string","minLength":1,"maxLength":120},"config":{"default":{},"type":"object","additionalProperties":{}},"credentials":{"default":{},"type":"object","additionalProperties":{}}},"required":["provider","name"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"credentialFields":{"type":"array","items":{"type":"string"}},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rateLimitRemaining":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitLimit":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"consecutiveErrors":{"type":"number"},"nextPollAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPolledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSuccessAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recordsLanded":{"type":"number"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","status","enabled","config","hasCredentials","credentialFields","cursorAt","rateLimitRemaining","rateLimitLimit","rateLimitResetAt","consecutiveErrors","nextPollAt","lastPolledAt","lastSuccessAt","lastError","recordsLanded","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/connectors/{connectorId}":{"get":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"credentialFields":{"type":"array","items":{"type":"string"}},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rateLimitRemaining":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitLimit":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"consecutiveErrors":{"type":"number"},"nextPollAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPolledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSuccessAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recordsLanded":{"type":"number"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","status","enabled","config","hasCredentials","credentialFields","cursorAt","rateLimitRemaining","rateLimitLimit","rateLimitResetAt","consecutiveErrors","nextPollAt","lastPolledAt","lastSuccessAt","lastError","recordsLanded","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"tags":["landing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"config":{"type":"object","additionalProperties":{}},"credentials":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"projectId":{"type":"string"},"provider":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":{}},"hasCredentials":{"type":"boolean"},"credentialFields":{"type":"array","items":{"type":"string"}},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"rateLimitRemaining":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitLimit":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"consecutiveErrors":{"type":"number"},"nextPollAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastPolledAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastSuccessAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"recordsLanded":{"type":"number"},"createdByPrincipalId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","orgId","projectId","provider","name","status","enabled","config","hasCredentials","credentialFields","cursorAt","rateLimitRemaining","rateLimitLimit","rateLimitResetAt","consecutiveErrors","nextPollAt","lastPolledAt","lastSuccessAt","lastError","recordsLanded","createdByPrincipalId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/connectors/{connectorId}/verify":{"post":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["ok","reason"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/connectors/{connectorId}/poll":{"post":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"connectorId":{"type":"string"},"skipped":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"pagesFetched":{"type":"number"},"recordsSeen":{"type":"number"},"landed":{"type":"number"},"reconciled":{"type":"number"},"alreadyLanded":{"type":"number"},"failed":{"type":"number"},"issueIds":{"type":"array","items":{"type":"string"}},"yieldedForRateLimit":{"type":"boolean"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["connectorId","skipped","pagesFetched","recordsSeen","landed","reconciled","alreadyLanded","failed","issueIds","yieldedForRateLimit","error"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/connectors/{connectorId}/backfills":{"get":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"connectorId":{"type":"string"},"status":{"type":"string"},"windowStart":{"type":"string"},"windowEnd":{"type":"string"},"maxRecords":{"type":"number"},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resumable":{"type":"boolean"},"recordsSeen":{"type":"number"},"recordsLanded":{"type":"number"},"recordsDeduplicated":{"type":"number"},"recordsFailed":{"type":"number"},"pagesFetched":{"type":"number"},"yields":{"type":"number"},"estimatedTotal":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"progress":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"pausedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"finishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","connectorId","status","windowStart","windowEnd","maxRecords","cursorAt","resumable","recordsSeen","recordsLanded","recordsDeduplicated","recordsFailed","pagesFetched","yields","estimatedTotal","progress","lastError","pausedReason","requestedByPrincipalId","startedAt","finishedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["landing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"windowStart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"windowEnd":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"maxRecords":{"default":1000,"type":"integer","minimum":1,"maximum":50000}},"required":["windowStart","windowEnd"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"connectorId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"connectorId":{"type":"string"},"status":{"type":"string"},"windowStart":{"type":"string"},"windowEnd":{"type":"string"},"maxRecords":{"type":"number"},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resumable":{"type":"boolean"},"recordsSeen":{"type":"number"},"recordsLanded":{"type":"number"},"recordsDeduplicated":{"type":"number"},"recordsFailed":{"type":"number"},"pagesFetched":{"type":"number"},"yields":{"type":"number"},"estimatedTotal":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"progress":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"pausedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"finishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","connectorId","status","windowStart","windowEnd","maxRecords","cursorAt","resumable","recordsSeen","recordsLanded","recordsDeduplicated","recordsFailed","pagesFetched","yields","estimatedTotal","progress","lastError","pausedReason","requestedByPrincipalId","startedAt","finishedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/backfills/{backfillId}/run":{"post":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"backfillId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"backfillId":{"type":"string"},"outcome":{"type":"string"},"pagesFetched":{"type":"number"},"recordsSeen":{"type":"number"},"recordsLanded":{"type":"number"},"recordsDeduplicated":{"type":"number"},"recordsFailed":{"type":"number"},"issueIds":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"error":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["backfillId","outcome","pagesFetched","recordsSeen","recordsLanded","recordsDeduplicated","recordsFailed","issueIds","status","error"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/landing/backfills/{backfillId}/cancel":{"post":{"tags":["landing"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"backfillId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"connectorId":{"type":"string"},"status":{"type":"string"},"windowStart":{"type":"string"},"windowEnd":{"type":"string"},"maxRecords":{"type":"number"},"cursorAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"resumable":{"type":"boolean"},"recordsSeen":{"type":"number"},"recordsLanded":{"type":"number"},"recordsDeduplicated":{"type":"number"},"recordsFailed":{"type":"number"},"pagesFetched":{"type":"number"},"yields":{"type":"number"},"estimatedTotal":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"progress":{"anyOf":[{"type":"number"},{"nullable":true,"enum":[null]}]},"lastError":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"pausedReason":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"requestedByPrincipalId":{"type":"string"},"startedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"finishedAt":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"createdAt":{"type":"string"}},"required":["id","connectorId","status","windowStart","windowEnd","maxRecords","cursorAt","resumable","recordsSeen","recordsLanded","recordsDeduplicated","recordsFailed","pagesFetched","yields","estimatedTotal","progress","lastError","pausedReason","requestedByPrincipalId","startedAt","finishedAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/orgs/{orgSlug}/projects/{projectSlug}/issues/{id}/landing-fidelity":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"projectSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"landed":{"type":"boolean"},"fidelity":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"string"},"issueId":{"type":"string"},"origin":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"connectorId":{"type":"string"},"provider":{"type":"string"},"connectorName":{"type":"string"},"externalId":{"type":"string"},"externalUrl":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"externalTitle":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"landedEventCount":{"type":"number"},"crossOriginDedup":{"type":"string"},"firstLandedAt":{"type":"string"},"lastLandedAt":{"type":"string"}},"required":["connectorId","provider","connectorName","externalId","externalUrl","externalTitle","landedEventCount","crossOriginDedup","firstLandedAt","lastLandedAt"],"additionalProperties":false}},"gaps":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["no_repro_capsule","no_stack_frames","no_in_app_frames","no_symbolication","no_source_context","no_local_variables","no_breadcrumbs","no_user_identity","no_release","no_trace_linkage","summary_only","no_suite_config"]},"statement":{"type":"string"}},"required":["code","statement"],"additionalProperties":false}},"verificationCeiling":{"type":"string"},"ceilingReasons":{"type":"array","items":{"type":"string"}},"notProven":{"type":"array","items":{"type":"string"}},"generatedAt":{"type":"string"}},"required":["schemaVersion","issueId","origin","sources","gaps","verificationCeiling","ceilingReasons","notProven","generatedAt"],"additionalProperties":false},{"nullable":true,"enum":[null]}]}},"required":["landed","fidelity"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/landing/{projectId}/push":{"post":{"tags":["landing"],"description":"Reachable without a Bucker session token. Agentless landing-lane push intake — DSN public key.","parameters":[{"schema":{"type":"string","maxLength":120},"in":"query","name":"connector","required":false},{"schema":{"type":"string","maxLength":128},"in":"query","name":"sentry_key","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"projectId","required":true}],"security":[{"dsnPublicKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"landed":{"type":"number"},"reconciled":{"type":"number"},"alreadyLanded":{"type":"number"},"refused":{"type":"number"},"infrastructureFailed":{"type":"number"},"refusals":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"reason":{"type":"string"}},"required":["index","reason"],"additionalProperties":false}},"issueIds":{"type":"array","items":{"type":"string"}}},"required":["landed","reconciled","alreadyLanded","refused","infrastructureFailed","refusals","issueIds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"landed":{"type":"number"},"reconciled":{"type":"number"},"alreadyLanded":{"type":"number"},"refused":{"type":"number"},"infrastructureFailed":{"type":"number"},"refusals":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"reason":{"type":"string"}},"required":["index","reason"],"additionalProperties":false}},"issueIds":{"type":"array","items":{"type":"string"}}},"required":["landed","reconciled","alreadyLanded","refused","infrastructureFailed","refusals","issueIds"],"additionalProperties":false}}}}}}},"/orgs/{orgSlug}/issues/{issueId}/timeline":{"get":{"tags":["issues"],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$"},"in":"query","name":"after","required":false},{"schema":{"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string","minLength":1},"in":"path","name":"issueId","required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"runId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"kind":{"type":"string"},"principalId":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]},"payload":{},"seq":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","issueId","runId","kind","principalId","payload","seq","createdAt"],"additionalProperties":false}},"nextAfter":{"anyOf":[{"type":"string"},{"nullable":true,"enum":[null]}]}},"required":["data","nextAfter"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"`not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/digest/unsubscribe":{"get":{"tags":["digest"],"description":"Reachable without a Bucker session token. Signed token in the email footer; an unsubscribe link that asks for a login is a spam complaint.","parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"optedOut":{"type":"boolean","enum":[true]},"message":{"type":"string"},"resubscribeUrl":{"type":"string"},"resubscribeExpiresInSeconds":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0}},"required":["optedOut","message","resubscribeUrl","resubscribeExpiresInSeconds"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}}}}},"/digest/resubscribe":{"get":{"tags":["digest"],"description":"Reachable without a Bucker session token. The undo for the line above, authenticated by a signed token of its OWN purpose that this server minted minutes earlier and never put in an email; the durable way back in is the authenticated PUT /me/digest.","parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"optedOut":{"type":"boolean","enum":[false]},"message":{"type":"string"}},"required":["optedOut","message"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}}}}},"/me/digest":{"get":{"tags":["me"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"optedOut":{"type":"boolean"},"quietHoursStart":{"anyOf":[{"type":"integer","minimum":0,"maximum":23},{"nullable":true,"enum":[null]}]},"quietHoursEnd":{"anyOf":[{"type":"integer","minimum":0,"maximum":23},{"nullable":true,"enum":[null]}]},"timezone":{"anyOf":[{"type":"string","minLength":1,"maxLength":64},{"nullable":true,"enum":[null]}]}},"required":["optedOut"],"additionalProperties":false}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"put":{"tags":["me"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"optedOut":{"type":"boolean"},"quietHoursStart":{"anyOf":[{"type":"integer","minimum":0,"maximum":23},{"nullable":true,"enum":[null]}]},"quietHoursEnd":{"anyOf":[{"type":"integer","minimum":0,"maximum":23},{"nullable":true,"enum":[null]}]},"timezone":{"anyOf":[{"type":"string","minLength":1,"maxLength":64},{"nullable":true,"enum":[null]}]}},"required":["optedOut"]}}}},"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"optedOut":{"type":"boolean"},"quietHoursStart":{"anyOf":[{"type":"integer","minimum":0,"maximum":23},{"nullable":true,"enum":[null]}]},"quietHoursEnd":{"anyOf":[{"type":"integer","minimum":0,"maximum":23},{"nullable":true,"enum":[null]}]},"timezone":{"anyOf":[{"type":"string","minLength":1,"maxLength":64},{"nullable":true,"enum":[null]}]}},"required":["optedOut"],"additionalProperties":false}}}},"400":{"description":"`bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"`unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"`forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"`rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"`internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"501":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}}}}}},"tags":[{"name":".well-known","description":".well-known routes."},{"name":"accountability","description":"accountability routes."},{"name":"admin","description":"The deployment-operator console."},{"name":"agent","description":"agent routes."},{"name":"agents","description":"Autonomous agents: delegation, budgets and the trust ladder."},{"name":"alert-events","description":"alert-events routes."},{"name":"alert-rules","description":"alert-rules routes."},{"name":"anomaly","description":"anomaly routes."},{"name":"api","description":"api routes."},{"name":"approval-policies","description":"approval-policies routes."},{"name":"approval-requests","description":"approval-requests routes."},{"name":"approvals","description":"approvals routes."},{"name":"artifacts","description":"artifacts routes."},{"name":"auth","description":"Authentication, sessions, MFA and account recovery."},{"name":"autofix","description":"autofix routes."},{"name":"behavioral-fingerprint","description":"behavioral-fingerprint routes."},{"name":"billing","description":"Plans, usage and subscription billing."},{"name":"code-mappings","description":"code-mappings routes."},{"name":"codebase","description":"codebase routes."},{"name":"compliance","description":"Data-subject rights, retention, residency and audit export."},{"name":"dashboards","description":"dashboards routes."},{"name":"dependency-commons","description":"dependency-commons routes."},{"name":"digest","description":"digest routes."},{"name":"durability","description":"durability routes."},{"name":"escrow","description":"escrow routes."},{"name":"evidence-pricing","description":"evidence-pricing routes."},{"name":"explore","description":"explore routes."},{"name":"feedback","description":"feedback routes."},{"name":"flag-events","description":"flag-events routes."},{"name":"grouping","description":"grouping routes."},{"name":"grouping-precision","description":"grouping-precision routes."},{"name":"grouping-suggestions","description":"grouping-suggestions routes."},{"name":"hotfix-providers","description":"hotfix-providers routes."},{"name":"hotfixes","description":"hotfixes routes."},{"name":"incident-close","description":"incident-close routes."},{"name":"integrations","description":"integrations routes."},{"name":"invites","description":"invites routes."},{"name":"issue-embeddings","description":"issue-embeddings routes."},{"name":"issues","description":"Error groups: triage, timeline and remediation."},{"name":"keys","description":"keys routes."},{"name":"landing","description":"landing routes."},{"name":"logs","description":"logs routes."},{"name":"me","description":"The signed-in principal's own tokens, devices and digest preferences."},{"name":"members","description":"members routes."},{"name":"merges","description":"merges routes."},{"name":"meta","description":"Liveness, readiness, metrics and edition metadata."},{"name":"mitigation-actions","description":"mitigation-actions routes."},{"name":"mitigation-documents","description":"mitigation-documents routes."},{"name":"mitigation-providers","description":"mitigation-providers routes."},{"name":"mitigations","description":"mitigations routes."},{"name":"monitors","description":"monitors routes."},{"name":"neutral-verification","description":"neutral-verification routes."},{"name":"notification-channels","description":"notification-channels routes."},{"name":"oauth","description":"oauth routes."},{"name":"onboarding","description":"onboarding routes."},{"name":"orgs","description":"Organization creation, membership and settings."},{"name":"probes","description":"probes routes."},{"name":"projects","description":"Project creation and settings."},{"name":"proof-ledger","description":"An organization's tamper-evident proof ledger."},{"name":"proposals","description":"proposals routes."},{"name":"public","description":"Unauthenticated routes served to end users and integrations."},{"name":"release-health","description":"release-health routes."},{"name":"releases","description":"releases routes."},{"name":"replay","description":"replay routes."},{"name":"repos","description":"repos routes."},{"name":"retention","description":"retention routes."},{"name":"reversal-debt","description":"reversal-debt routes."},{"name":"rollouts","description":"Feature-flag rollout evaluation and bisection."},{"name":"scim","description":"SCIM provisioning for users, groups and agents."},{"name":"scm","description":"Source-control provider connections."},{"name":"scoreboard","description":"Autonomy scoreboard attempts, replays and pins."},{"name":"security-lane","description":"security-lane routes."},{"name":"security-policy","description":"security-policy routes."},{"name":"sso","description":"SAML and OIDC single sign-on connections."},{"name":"state-probes","description":"state-probes routes."},{"name":"stats","description":"stats routes."},{"name":"status","description":"Public status-page summaries."},{"name":"status-pages","description":"status-pages routes."},{"name":"suite-config","description":"suite-config routes."},{"name":"support-access","description":"support-access routes."},{"name":"teams","description":"teams routes."},{"name":"traces","description":"traces routes."},{"name":"transparency","description":"The public transparency register and its Merkle proofs."},{"name":"uptime-monitors","description":"uptime-monitors routes."},{"name":"v1","description":"v1 routes."},{"name":"views","description":"views routes."},{"name":"warehouse","description":"warehouse routes."},{"name":"webhooks","description":"Inbound webhooks from source control, Stripe and integrations."},{"name":"widget-preview","description":"widget-preview routes."}]}