{"openapi":"3.1.2","info":{"title":"Git.cafe API","version":"0.0.0","description":"HTTP API reference generated from the application in this release. Use an OAuth token, personal access token, or your browser session. Access depends on the endpoint, credential scopes, and resource permissions. Device authorization is documented under /api/device. OAuth automation must use authorization code with S256 PKCE and request this origin's exact /api resource; /mcp is a separate protected resource. Git transport, LFS, and live connections are served separately and are not included here. Rate limits, their headers and 429 handling are described at /docs/reference/rate-limits."},"servers":[{"url":"/"}],"x-gc2-ratelimit-policies":{"api":[{"name":"api","callers":"authenticated","limit":1000,"windowSeconds":60,"planScaled":true},{"name":"api-anon","callers":"anonymous","limit":30,"windowSeconds":60,"planScaled":false}],"api-heavy":[{"name":"api-heavy","callers":"authenticated","limit":120,"windowSeconds":60,"planScaled":true},{"name":"api-heavy","callers":"anonymous","limit":10,"windowSeconds":60,"planScaled":false}]},"components":{"schemas":{"IssueCreatedWebhook":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"type":{"type":"string","const":"issue.created"},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["id","version","createdAt","repository","type","issue"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"IssueClosedWebhook":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"type":{"type":"string","const":"issue.closed"},"issue":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"assigneeIds":{"maxItems":20,"type":"array","items":{"type":"string"}},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"state":{"type":"string","enum":["completed","canceled"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"milestoneId":{"type":["string","null"]},"locked":{"type":"boolean"},"pinned":{"type":"boolean"},"closedReason":{"type":["string","null"],"maxLength":1024},"lockReason":{"type":["string","null"],"maxLength":1024}},"required":["id","number","title","state"],"additionalProperties":false}},"required":["id","version","createdAt","repository","type","issue"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"IssueMutationWebhook":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["issue.reopened","issue.locked","issue.unlocked","issue.pinned","issue.unpinned"]},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","issue"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"issue.updated"},"changes":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]}},"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","issue"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"issue.assignees_updated"},"assigneeIds":{"maxItems":20,"type":"array","items":{"type":"string"}},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","issue"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"issue.labels_updated"},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"labels":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","maxLength":100}},"required":["id","name"],"additionalProperties":false}},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","issue"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"issue.milestone_updated"},"milestoneId":{"type":["string","null"]},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","maxLength":255}},"required":["id","number","title"],"additionalProperties":false},{"type":"null"}]},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","issue"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["issue.linked","issue.unlinked"]},"link":{"type":"object","properties":{"pullRequestId":{"type":"string"},"linkType":{"type":"string","enum":["closes","references"]}},"required":["pullRequestId","linkType"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","issue"],"additionalProperties":false}],"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"IssueCommentWebhook":{"type":"object","properties":{"type":{"type":"string","enum":["issue.comment_created","issue.comment_updated","issue.comment_deleted"]},"commentId":{"type":"string"},"comment":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string","maxLength":65536},"authorActorId":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","body","authorActorId","version","createdAt","updatedAt"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","commentId","id","version","createdAt","repository","issue"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"IssueReactionWebhook":{"type":"object","properties":{"type":{"type":"string","enum":["issue.reaction_added","issue.reaction_removed"]},"reaction":{"type":"object","properties":{"id":{"type":"string"},"actorId":{"type":"string"},"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"type":"string","minLength":1,"maxLength":64}},"required":["subject","emoji"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/IssueWebhookSnapshot"}},"required":["type","reaction","id","version","createdAt","repository","issue"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullMutationWebhook":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["pull.created","pull.closed","pull.reopened","pull.drafted","pull.ready","pull.locked","pull.unlocked"]},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","pull"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"pull.updated"},"changes":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":1000},"description":{"type":["string","null"],"maxLength":65536}},"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","pull"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pull.reviewers_updated","pull.assignees_updated"]},"actorIds":{"maxItems":20,"type":"array","items":{"type":"string"}},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","pull"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"pull.labels_updated"},"labels":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","maxLength":100}},"required":["id","name"],"additionalProperties":false}},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","pull"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"pull.milestone_updated"},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","maxLength":255}},"required":["id","number","title"],"additionalProperties":false},{"type":"null"}]},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","id","version","createdAt","repository","pull"],"additionalProperties":false}],"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullLinkWebhook":{"type":"object","properties":{"type":{"type":"string","enum":["pull.linked","pull.unlinked"]},"issueId":{"type":"string"},"linkType":{"type":"string","enum":["closes","references"]},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","issueId","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullCommentWebhook":{"type":"object","properties":{"type":{"type":"string","enum":["pull.comment_created","pull.comment_updated","pull.comment_deleted","pull.comment_hidden","pull.comment_unhidden","pull.comment_resolved","pull.comment_unresolved"]},"commentId":{"type":"string"},"comment":{"$ref":"#/components/schemas/PullWebhookCommentSnapshot"},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","commentId","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullReactionWebhook":{"type":"object","properties":{"type":{"type":"string","enum":["pull.reaction_added","pull.reaction_removed"]},"reaction":{"type":"object","properties":{"id":{"type":"string"},"actorId":{"type":"string"},"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"type":"string","minLength":1,"maxLength":64}},"required":["subject","emoji"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","reaction","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullReviewSubmittedWebhook":{"type":"object","properties":{"type":{"type":"string","const":"pull.review_submitted"},"review":{"type":"object","properties":{"authorActorId":{"type":"string"},"body":{"type":["string","null"],"maxLength":65536},"bodyTruncated":{"type":"boolean"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"dismissedReason":{"type":["string","null"],"maxLength":65536},"id":{"type":"string"},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["id","verdict","commitOid"],"additionalProperties":false},"inlineCommentCount":{"type":"integer","minimum":0,"maximum":100},"inlineCommentIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"inlineComments":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PullWebhookCommentSnapshot"}},"inlineCommentsTruncated":{"type":"boolean"},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","review","inlineCommentCount","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullReviewDismissedWebhook":{"type":"object","properties":{"type":{"type":"string","const":"pull.review_dismissed"},"review":{"type":"object","properties":{"authorActorId":{"type":"string"},"body":{"type":["string","null"],"maxLength":65536},"bodyTruncated":{"type":"boolean"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"dismissedReason":{"type":["string","null"],"maxLength":65536},"id":{"type":"string"},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["id","verdict","commitOid"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","review","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullMergedWebhook":{"type":"object","properties":{"type":{"type":"string","const":"pull.merged"},"merge":{"type":"object","properties":{"strategy":{"type":"string","enum":["fast-forward","merge","squash","rebase"]},"sourceOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"targetOidBefore":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"resultOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"}},"required":["strategy","sourceOid","targetOidBefore","resultOid"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","merge","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullSynchronizedWebhook":{"type":"object","properties":{"type":{"type":"string","const":"pull.synchronized"},"synchronization":{"type":"object","properties":{"beforeOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"afterOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"observedOrdinal":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"source":{"type":"string","enum":["push","observation"]}},"required":["beforeOid","afterOid","observedOrdinal","source"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/PullWebhookSnapshot"}},"required":["type","synchronization","id","version","createdAt","repository","pull"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"RepositoryLifecycleWebhook":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["label.created","label.updated","label.deleted"]},"label":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096},"version":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["id","name","color","description","version"],"additionalProperties":false},"previous":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096},"version":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["id","name","color","description","version"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false}},"required":["type","label","id","version","createdAt","repository"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["milestone.created","milestone.updated","milestone.deleted"]},"milestone":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"state":{"type":"string","enum":["open","closed"]},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"version":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["id","number","title","description","state","dueDate","version"],"additionalProperties":false},"previous":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"state":{"type":"string","enum":["open","closed"]},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"version":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["id","number","title","description","state","dueDate","version"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false}},"required":["type","milestone","id","version","createdAt","repository"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"repo.default_branch_changed"},"defaultBranch":{"type":"string","minLength":1,"maxLength":1024},"previousDefaultBranch":{"type":["string","null"],"maxLength":1024},"configGeneration":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false}},"required":["type","defaultBranch","previousDefaultBranch","configGeneration","id","version","createdAt","repository"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"ci.run_updated"},"run":{"type":"object","properties":{"id":{"type":"string"},"checkRunId":{"type":"string"},"provider":{"type":"string","const":"buildkite"},"context":{"type":"string","maxLength":255},"commitOid":{"type":"string","pattern":"^[a-f0-9]{40}$"},"ref":{"type":"string","maxLength":1024},"state":{"type":"string","enum":["queued","running","blocked","passed","failed","canceled","errored"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"externalUrl":{"type":"string","maxLength":4096,"format":"uri"},"startedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"finishedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","checkRunId","provider","context","commitOid","ref","state","version","externalUrl","startedAt","finishedAt"],"additionalProperties":false},"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false}},"required":["type","run","id","version","createdAt","repository"],"additionalProperties":false}],"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"GitPushWebhook":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"type":{"type":"string","const":"git.push"},"git":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":256},"source":{"type":"string","enum":["push","merge","merge_cleanup","mirror","github_sync","restack"]},"authorityOrdinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"refUpdates":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":6,"maxLength":1024,"pattern":"^refs\\/.*"},"beforeOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"afterOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"created":{"type":"boolean"},"deleted":{"type":"boolean"},"forced":{"type":"boolean"}},"required":["ref","beforeOid","afterOid","created","deleted"],"additionalProperties":false}},"refUpdatesCount":{"type":"integer","minimum":1,"maximum":4194304},"refUpdatesTruncated":{"type":"boolean"}},"required":["operationId","source","authorityOrdinal","refUpdates","refUpdatesCount","refUpdatesTruncated"],"additionalProperties":false}},"required":["id","version","createdAt","repository","type","git"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"GitRefCreatedWebhook":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"type":{"type":"string","const":"git.ref_created"},"git":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":256},"source":{"type":"string","enum":["push","merge","merge_cleanup","mirror","github_sync","restack"]},"authorityOrdinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"refUpdates":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":6,"maxLength":1024,"pattern":"^refs\\/.*"},"beforeOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"afterOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"created":{"type":"boolean"},"deleted":{"type":"boolean"},"forced":{"type":"boolean"}},"required":["ref","beforeOid","afterOid","created","deleted"],"additionalProperties":false}},"refUpdatesCount":{"type":"integer","minimum":1,"maximum":4194304},"refUpdatesTruncated":{"type":"boolean"}},"required":["operationId","source","authorityOrdinal","refUpdates","refUpdatesCount","refUpdatesTruncated"],"additionalProperties":false}},"required":["id","version","createdAt","repository","type","git"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"GitRefDeletedWebhook":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"repository":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"}},"required":["id","orgId"],"additionalProperties":false},"type":{"type":"string","const":"git.ref_deleted"},"git":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":256},"source":{"type":"string","enum":["push","merge","merge_cleanup","mirror","github_sync","restack"]},"authorityOrdinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"refUpdates":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":6,"maxLength":1024,"pattern":"^refs\\/.*"},"beforeOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"afterOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"created":{"type":"boolean"},"deleted":{"type":"boolean"},"forced":{"type":"boolean"}},"required":["ref","beforeOid","afterOid","created","deleted"],"additionalProperties":false}},"refUpdatesCount":{"type":"integer","minimum":1,"maximum":4194304},"refUpdatesTruncated":{"type":"boolean"}},"required":["operationId","source","authorityOrdinal","refUpdates","refUpdatesCount","refUpdatesTruncated"],"additionalProperties":false}},"required":["id","version","createdAt","repository","type","git"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookPingPayload":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string","const":"1"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"actor":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"type":{"type":"string","const":"webhook.ping"},"endpoint":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"owner":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"repo"},"repoId":{"type":"string"},"orgId":{"type":"string"}},"required":["kind","repoId","orgId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"org"},"orgId":{"type":"string"}},"required":["kind","orgId"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["id","version","createdAt","type","endpoint","owner"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookEventType":{"type":"string","enum":["issue.created","issue.closed","issue.updated","issue.reopened","issue.locked","issue.unlocked","issue.pinned","issue.unpinned","issue.assignees_updated","issue.labels_updated","issue.milestone_updated","issue.linked","issue.unlinked","issue.comment_created","issue.comment_updated","issue.comment_deleted","issue.reaction_added","issue.reaction_removed","pull.created","pull.updated","pull.closed","pull.reopened","pull.drafted","pull.ready","pull.locked","pull.unlocked","pull.reviewers_updated","pull.assignees_updated","pull.labels_updated","pull.milestone_updated","pull.linked","pull.unlinked","pull.comment_created","pull.comment_updated","pull.comment_deleted","pull.comment_hidden","pull.comment_unhidden","pull.comment_resolved","pull.comment_unresolved","pull.reaction_added","pull.reaction_removed","pull.review_submitted","pull.review_dismissed","pull.merged","pull.synchronized","label.created","label.updated","label.deleted","milestone.created","milestone.updated","milestone.deleted","repo.default_branch_changed","ci.run_updated","git.push","git.ref_created","git.ref_deleted","webhook.ping"],"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"IssueWebhookSnapshot":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"assigneeIds":{"maxItems":20,"type":"array","items":{"type":"string"}},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"state":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"milestoneId":{"type":["string","null"]},"locked":{"type":"boolean"},"pinned":{"type":"boolean"},"closedReason":{"type":["string","null"],"maxLength":1024},"lockReason":{"type":["string","null"],"maxLength":1024}},"required":["id","number","title"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullWebhookSnapshot":{"type":"object","properties":{"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"description":{"type":["string","null"],"maxLength":65536},"descriptionTruncated":{"type":"boolean"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"authorActorId":{"type":"string"},"sourceRepoId":{"type":["string","null"]},"sourceBranch":{"type":"string","maxLength":1024},"targetBranch":{"type":"string","maxLength":1024},"headOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"observedBaseOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"lockReason":{"type":["string","null"],"maxLength":100},"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","number","title"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"PullWebhookCommentSnapshot":{"type":"object","properties":{"id":{"type":"string"},"threadId":{"type":"string"},"body":{"type":"string","maxLength":65536},"bodyTruncated":{"type":"boolean"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"authorActorId":{"type":"string"},"reviewId":{"type":["string","null"]},"path":{"type":["string","null"],"maxLength":4096},"line":{"type":["integer","null"],"minimum":-9007199254740991,"maximum":9007199254740991},"side":{"type":["string","null"],"enum":["left","right",null]},"startLine":{"type":["integer","null"],"minimum":-9007199254740991,"maximum":9007199254740991},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"hidden":{"type":"boolean"},"deleted":{"type":"boolean"},"resolved":{"type":"boolean"}},"required":["id","threadId","body","version","authorActorId","reviewId","path","line","side","startLine","startSide","commitOid","hidden","deleted","resolved"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookRead":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"active":{"type":"boolean"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"signingKeyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pinnedApiVersion":{"type":["string","null"]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastFailureAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"disabledAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"disableReason":{"type":["string","null"]},"orgId":{"type":"string"},"repoId":{"type":"null"}},"required":["id","url","events","active","version","signingKeyVersion","pinnedApiVersion","consecutiveFailures","lastFailureAt","createdAt","updatedAt","disabledAt","disableReason","orgId","repoId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"active":{"type":"boolean"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"signingKeyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pinnedApiVersion":{"type":["string","null"]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastFailureAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"disabledAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"disableReason":{"type":["string","null"]},"orgId":{"type":"null"},"repoId":{"type":"string"}},"required":["id","url","events","active","version","signingKeyVersion","pinnedApiVersion","consecutiveFailures","lastFailureAt","createdAt","updatedAt","disabledAt","disableReason","orgId","repoId"],"additionalProperties":false}],"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookList":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WebhookRead"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookCreated":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/WebhookRead"},"secret":{"type":"string"}},"required":["endpoint","secret"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookRotated":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/WebhookRead"},"secret":{"type":"string"},"previousExpiresAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["endpoint","secret","previousExpiresAt"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookRecoveryReceipt":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"deliveryId":{"type":"string"},"eventId":{"type":"string"},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","deliveryId","eventId","eventCreatedAt"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookCapabilities":{"type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"supportedEvents":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEventType"}},"encryptionConfigured":{"type":"boolean"},"execution":{"type":"string","enum":["disabled","invalid","configured"]}},"required":["apiVersion","supportedEvents","encryptionConfigured","execution"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookReadiness":{"type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"supportedEvents":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEventType"}},"encryptionConfigured":{"type":"boolean"},"execution":{"type":"string","enum":["disabled","invalid","configured"]},"active":{"type":"boolean"},"destinationAllowed":{"type":"boolean"},"apiVersionSupported":{"type":"boolean"},"unsupportedSubscriptions":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":100}},"ready":{"type":"boolean"}},"required":["apiVersion","supportedEvents","encryptionConfigured","execution","active","destinationAllowed","apiVersionSupported","unsupportedSubscriptions","ready"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookDeliveryRead":{"type":"object","properties":{"id":{"type":"string"},"endpointId":{"type":"string"},"eventId":{"type":"string"},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"eventType":{"$ref":"#/components/schemas/WebhookEventType"},"deliveryOrdinal":{"type":"integer","minimum":0,"maximum":2},"state":{"type":"string","enum":["queued","running","succeeded","failed","dead_lettered","cancelled"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextAttemptAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"lastHttpStatus":{"type":["integer","null"],"minimum":100,"maximum":599},"deliveredAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"lastErrorCategory":{"type":["string","null"],"maxLength":64},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","endpointId","eventId","eventCreatedAt","eventType","deliveryOrdinal","state","attempts","nextAttemptAt","lastHttpStatus","deliveredAt","lastErrorCategory","createdAt","updatedAt"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookDeliveryList":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryRead"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookPayloadInspection":{"type":"object","properties":{"body":{"type":"string","maxLength":2097152}},"required":["body"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookRefUpdates":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":6,"maxLength":1024,"pattern":"^refs\\/.*"},"beforeOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"afterOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"created":{"type":"boolean"},"deleted":{"type":"boolean"},"forced":{"type":"boolean"}},"required":["ref","beforeOid","afterOid","created","deleted","forced"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookAttemptRead":{"type":"object","properties":{"id":{"type":"string"},"deliveryId":{"type":"string"},"attempt":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"httpStatus":{"type":["integer","null"],"minimum":100,"maximum":599},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"outcome":{"type":"string","enum":["started","succeeded","retryable","terminal"]},"errorCategory":{"type":["string","null"],"maxLength":64},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","deliveryId","attempt","httpStatus","durationMs","outcome","errorCategory","createdAt"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"WebhookAttemptList":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/WebhookAttemptRead"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false,"x-beta":true,"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits."},"ActorId":{"type":"string"},"RepoId":{"type":"string"},"OrgId":{"type":"string"},"TeamId":{"type":"string"},"PullId":{"type":"string"},"IssueId":{"type":"string"},"CommentId":{"type":"string"},"CredentialSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"owner":{"$ref":"#/components/schemas/ActorId"},"recipient":{"$ref":"#/components/schemas/ActorId"}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"RepoSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"$ref":"#/components/schemas/RepoId"},"org":{"$ref":"#/components/schemas/OrgId"},"name":{"type":"string","pattern":"^[a-z0-9._-]{1,100}$"}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"OrgSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"$ref":"#/components/schemas/OrgId"}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"PullSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"$ref":"#/components/schemas/PullId"},"repo":{"$ref":"#/components/schemas/RepoId"},"org":{"$ref":"#/components/schemas/OrgId"},"source":{"type":"object","properties":{"repo":{"$ref":"#/components/schemas/RepoId"},"ref":{"type":"string","maxLength":255}},"additionalProperties":false},"target":{"type":"string","maxLength":255}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"IssueSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"$ref":"#/components/schemas/IssueId"},"repo":{"$ref":"#/components/schemas/RepoId"},"org":{"$ref":"#/components/schemas/OrgId"}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"CommentSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"anyOf":[{"$ref":"#/components/schemas/CommentId"},{"type":"string"}]},"repo":{"$ref":"#/components/schemas/RepoId"},"org":{"$ref":"#/components/schemas/OrgId"},"parent":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"pr"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"commentKind":{"type":"string","enum":["conversation","inline","review"]}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"TeamSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"$ref":"#/components/schemas/TeamId"},"org":{"$ref":"#/components/schemas/OrgId"},"ancestors":{"minItems":1,"maxItems":16,"type":"array","items":{"$ref":"#/components/schemas/TeamId"}}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"BranchSelector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"repo":{"$ref":"#/components/schemas/RepoId"},"org":{"$ref":"#/components/schemas/OrgId"},"ref":{"type":"string","maxLength":255}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}},"ScopeStatement":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"profile"},"family":{"type":"string","enum":["metadata","pins"]},"level":{"type":"string","enum":["read","write"]},"selector":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"all"}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","const":"where"},"id":{"$ref":"#/components/schemas/ActorId"}},"required":["mode"],"additionalProperties":false}],"discriminator":{"propertyName":"mode"}}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"family":{"type":"string","const":"contents"},"level":{"type":"string","enum":["read","write","admin"]},"selector":{"$ref":"#/components/schemas/IssueSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"credential"},"family":{"type":"string","enum":["independent","delegate"]},"level":{"type":"string","const":"write"},"selector":{"$ref":"#/components/schemas/CredentialSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"repo"},"family":{"type":"string","enum":["contents","metadata","administration","rulesets","webhooks","attachments"]},"level":{"type":"string","enum":["read","write","admin"]},"selector":{"$ref":"#/components/schemas/RepoSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"org"},"family":{"type":"string","enum":["metadata","membership","administration","webhooks"]},"level":{"type":"string","enum":["read","write","admin"]},"selector":{"$ref":"#/components/schemas/OrgSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pr"},"family":{"type":"string","const":"contents"},"level":{"type":"string","enum":["read","write","admin"]},"selector":{"$ref":"#/components/schemas/PullSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pr"},"family":{"type":"string","const":"merge"},"level":{"type":"string","const":"write"},"selector":{"$ref":"#/components/schemas/PullSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pr"},"family":{"type":"string","const":"review"},"level":{"type":"string","enum":["read","write"]},"selector":{"$ref":"#/components/schemas/PullSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"comment"},"family":{"type":"string","enum":["contents","moderation"]},"level":{"type":"string","enum":["read","write"]},"selector":{"$ref":"#/components/schemas/CommentSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"team"},"family":{"type":"string","enum":["metadata","membership","repositories"]},"level":{"type":"string","enum":["read","write","admin"]},"selector":{"$ref":"#/components/schemas/TeamSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"branch"},"family":{"type":"string","enum":["contents","rulesets"]},"level":{"type":"string","enum":["read","write","admin"]},"selector":{"$ref":"#/components/schemas/BranchSelector"}},"required":["kind","family","level","selector"],"additionalProperties":false}]},"ScopeSet":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/ScopeStatement"}},"Author":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"local"},"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string","minLength":1,"maxLength":100},"displayName":{"type":["string","null"],"maxLength":255},"avatarUrl":{"type":["string","null"]}},"required":["kind","actorId","handle","displayName","avatarUrl"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"github"},"actorId":{"$ref":"#/components/schemas/ActorId"},"authority":{"type":"string","const":"https://github.com"},"providerId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255},"accountType":{"type":"string","enum":["user","organization","bot"]},"avatarUrl":{"type":["string","null"]},"linkedProfile":{"anyOf":[{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string","minLength":1,"maxLength":100},"displayName":{"type":["string","null"],"maxLength":255},"avatarUrl":{"type":["string","null"]}},"required":["handle","displayName","avatarUrl"],"additionalProperties":false},{"type":"null"}]}},"required":["kind","actorId","authority","providerId","login","accountType","avatarUrl"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"unavailable"},"actorId":{"$ref":"#/components/schemas/ActorId"}},"required":["kind","actorId"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"AssignmentActor":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ActorId"},"actor":{"$ref":"#/components/schemas/Author"},"handle":{"type":["string","null"]},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]}},"required":["id","actor","handle","displayName","avatarUrl"],"additionalProperties":false},"AssigneePage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"GrantSource":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"pat"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"agent_delegated"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"agent_autonomous"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"installation"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"device"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"oauth"},"authorizationId":{"type":"string","minLength":1,"maxLength":64},"clientId":{"type":"string","minLength":1,"maxLength":2048},"resource":{"type":"string","maxLength":2048,"format":"uri"}},"required":["kind","authorizationId","clientId","resource"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"internal-copy"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"oidc"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"deploy_key"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"ssh_default"}},"required":["kind"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"IssuedBoundRef":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"repo"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pr"},"repo":{"type":"string"},"id":{"type":"string"}},"required":["kind","repo","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"org"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"team"},"org":{"type":"string"},"id":{"type":"string"}},"required":["kind","org","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"IssuedBinding":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unbounded"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"single"},"boundRef":{"$ref":"#/components/schemas/IssuedBoundRef"}},"required":["kind","boundRef"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"CredentialIdentity":{"type":"object","properties":{"principalActorId":{"type":"string"},"actingActorId":{"type":"string"},"delegatorActorId":{"type":["string","null"]},"credentialKind":{"type":"string","enum":["session","grant"]},"assurance":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"recent-human-session"},"validUntil":{"type":"string","format":"date-time"},"authGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","validUntil","authGeneration"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"possession"}},"required":["kind"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["principalActorId","actingActorId","delegatorActorId","credentialKind","assurance"],"additionalProperties":false},"CredentialIssued":{"type":"object","properties":{"id":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"identity":{"$ref":"#/components/schemas/CredentialIdentity"},"secret":{"type":"string","pattern":"^gct_[a-f0-9]{64}$"}},"required":["id","expiresAt","identity","secret"],"additionalProperties":false},"CredentialSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"tokenLastEight":{"type":["string","null"]},"actorId":{"type":"string"},"delegatorActorId":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":["string","null"],"format":"date-time"},"revokedAt":{"type":["string","null"],"format":"date-time"},"scopes":{"$ref":"#/components/schemas/ScopeSet"}},"required":["id","name","tokenLastEight","actorId","delegatorActorId","createdAt","expiresAt","revokedAt","scopes"],"additionalProperties":false},"CredentialPage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/CredentialSummary"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"BillingSubscription":{"type":"object","properties":{"status":{"type":"string"},"seats":{"type":"integer","minimum":0,"maximum":2147483647},"maxSeats":{"type":["integer","null"],"minimum":0,"maximum":2147483647},"overageEnabled":{"type":"boolean"},"overageSpendCapCents":{"type":["integer","null"],"minimum":0,"maximum":2147483647},"cancelAtPeriodEnd":{"type":"boolean"},"currentPeriodEnd":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["status","seats","maxSeats","overageEnabled","overageSpendCapCents","cancelAtPeriodEnd","currentPeriodEnd"],"additionalProperties":false},"BillingRead":{"type":"object","properties":{"configured":{"type":"boolean"},"personal":{"type":"boolean"},"canManage":{"type":"boolean"},"plan":{"type":"string","enum":["free","personal","team","premium","enterprise"]},"subscription":{"anyOf":[{"$ref":"#/components/schemas/BillingSubscription"},{"type":"null"}]},"memberCount":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["configured","personal","canManage","plan","subscription","memberCount"],"additionalProperties":false},"BillingSession":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"],"additionalProperties":false},"Label":{"type":"object","properties":{"id":{"type":"string"},"repoId":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"},"description":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","repoId","name","color","description","version","createdAt","updatedAt"],"additionalProperties":false},"LabelPage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/Label"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"Milestone":{"type":"object","properties":{"id":{"type":"string"},"repoId":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"description":{"type":["string","null"]},"state":{"type":"string","enum":["open","closed"]},"dueDate":{"type":["string","null"],"format":"date-time"},"createdByActorId":{"type":"string"},"closedAt":{"type":["string","null"],"format":"date-time"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","repoId","number","title","description","state","dueDate","createdByActorId","closedAt","version","createdAt","updatedAt"],"additionalProperties":false},"MilestoneListItem":{"type":"object","properties":{"id":{"type":"string"},"repoId":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"description":{"type":["string","null"]},"state":{"type":"string","enum":["open","closed"]},"dueDate":{"type":["string","null"],"format":"date-time"},"createdByActorId":{"type":"string"},"closedAt":{"type":["string","null"],"format":"date-time"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"progress":{"type":"object","properties":{"openCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"closedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"completion":{"type":"integer","minimum":0,"maximum":100}},"required":["openCount","closedCount","total","completion"],"additionalProperties":false}},"required":["id","repoId","number","title","description","state","dueDate","createdByActorId","closedAt","version","createdAt","updatedAt","progress"],"additionalProperties":false},"MilestonePage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/MilestoneListItem"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"CommentDetail":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CommentId"},"threadId":{"$ref":"#/components/schemas/CommentId"},"reviewId":{"type":["string","null"]},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"author":{"$ref":"#/components/schemas/Author"},"body":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"path":{"type":["string","null"]},"line":{"type":["integer","null"],"minimum":-9007199254740991,"maximum":9007199254740991},"side":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":["string","null"]},"startLine":{"type":["integer","null"],"minimum":-9007199254740991,"maximum":9007199254740991},"startSide":{"type":["string","null"],"enum":["left","right",null]},"providerAnchor":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"github"},"subjectType":{"type":"string","enum":["line","file"]},"originalCommitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"originalLine":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"line":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"originalStartLine":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"startLine":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"side":{"type":["string","null"],"enum":["left","right",null]},"startSide":{"type":["string","null"],"enum":["left","right",null]},"diffHunk":{"type":"string","maxLength":1048576}},"required":["provider","subjectType","originalCommitOid","commitOid","originalLine","line","originalStartLine","startLine","side","startSide","diffHunk"],"additionalProperties":false},{"type":"null"}]},"resolvedAt":{"type":["string","null"],"format":"date-time"},"hiddenAt":{"type":["string","null"],"format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","threadId","reviewId","authorActorId","author","body","version","createdAt","updatedAt","path","line","side","commitOid","resolvedAt","hiddenAt","deletedAt"],"additionalProperties":false},"CommentRead":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CommentId"},"threadId":{"$ref":"#/components/schemas/CommentId"},"reviewId":{"type":["string","null"]},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"author":{"$ref":"#/components/schemas/Author"},"body":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"path":{"type":["string","null"]},"line":{"type":["integer","null"],"minimum":-9007199254740991,"maximum":9007199254740991},"side":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":["string","null"]},"startLine":{"type":["integer","null"],"minimum":-9007199254740991,"maximum":9007199254740991},"startSide":{"type":["string","null"],"enum":["left","right",null]},"providerAnchor":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"github"},"subjectType":{"type":"string","enum":["line","file"]},"originalCommitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"originalLine":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"line":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"originalStartLine":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"startLine":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"side":{"type":["string","null"],"enum":["left","right",null]},"startSide":{"type":["string","null"],"enum":["left","right",null]},"diffHunk":{"type":"string","maxLength":1048576}},"required":["provider","subjectType","originalCommitOid","commitOid","originalLine","line","originalStartLine","startLine","side","startSide","diffHunk"],"additionalProperties":false},{"type":"null"}]},"resolvedAt":{"type":["string","null"],"format":"date-time"},"hiddenAt":{"type":["string","null"],"format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"resolvedBy":{"default":null,"anyOf":[{"$ref":"#/components/schemas/Author"},{"type":"null"}]},"capabilities":{"type":"object","properties":{"edit":{"type":"boolean"},"hide":{"type":"boolean"},"unhide":{"type":"boolean"},"delete":{"type":"boolean"},"resolve":{"type":"boolean"},"unresolve":{"type":"boolean"}},"required":["edit","hide","unhide","delete","resolve","unresolve"],"additionalProperties":false}},"required":["id","threadId","reviewId","authorActorId","author","body","version","createdAt","updatedAt","path","line","side","commitOid","resolvedAt","hiddenAt","deletedAt","resolvedBy","capabilities"],"additionalProperties":false},"CommentPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommentRead"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"Issue":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Author"},"id":{"$ref":"#/components/schemas/IssueId"},"repoId":{"$ref":"#/components/schemas/RepoId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"description":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"stateType":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]},"priority":{"type":"integer","minimum":0,"maximum":4},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"authorDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"authorViaInstallationId":{"type":["string","null"]},"dueDate":{"type":["string","null"],"format":"date-time"},"closedAt":{"type":["string","null"],"format":"date-time"},"closedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByViaInstallationId":{"type":["string","null"]},"closedReason":{"type":["string","null"]},"milestoneId":{"type":["string","null"]},"lockedAt":{"type":["string","null"],"format":"date-time"},"lockedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"lockReason":{"type":["string","null"]},"pinnedAt":{"type":["string","null"],"format":"date-time"},"pinnedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"pinSlot":{"type":["integer","null"],"minimum":0,"maximum":32767},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["author","id","repoId","number","title","description","version","stateType","priority","authorActorId","authorDelegatorActorId","authorViaInstallationId","dueDate","closedAt","closedByActorId","closedByDelegatorActorId","closedByViaInstallationId","closedReason","milestoneId","lockedAt","lockedByActorId","lockReason","pinnedAt","pinnedByActorId","pinSlot","createdAt","updatedAt"],"additionalProperties":false},"IssueDetail":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Author"},"id":{"$ref":"#/components/schemas/IssueId"},"repoId":{"$ref":"#/components/schemas/RepoId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"description":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"stateType":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]},"priority":{"type":"integer","minimum":0,"maximum":4},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"authorDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"authorViaInstallationId":{"type":["string","null"]},"dueDate":{"type":["string","null"],"format":"date-time"},"closedAt":{"type":["string","null"],"format":"date-time"},"closedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByViaInstallationId":{"type":["string","null"]},"closedReason":{"type":["string","null"]},"milestoneId":{"type":["string","null"]},"lockedAt":{"type":["string","null"],"format":"date-time"},"lockedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"lockReason":{"type":["string","null"]},"pinnedAt":{"type":["string","null"],"format":"date-time"},"pinnedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"pinSlot":{"type":["integer","null"],"minimum":0,"maximum":32767},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"labels":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"assignees":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false},{"type":"null"}]},"capabilities":{"type":"object","properties":{"edit":{"type":"boolean"},"comment":{"type":"boolean"},"close":{"type":"boolean"},"reopen":{"type":"boolean"},"manageAssignees":{"type":"boolean"},"manageLabels":{"type":"boolean"},"manageMilestone":{"type":"boolean"},"manageLinks":{"type":"boolean"},"lock":{"type":"boolean"},"pin":{"type":"boolean"}},"required":["edit","comment","close","reopen","manageAssignees","manageLabels","manageMilestone","manageLinks","lock","pin"],"additionalProperties":false}},"required":["author","id","repoId","number","title","description","version","stateType","priority","authorActorId","authorDelegatorActorId","authorViaInstallationId","dueDate","closedAt","closedByActorId","closedByDelegatorActorId","closedByViaInstallationId","closedReason","milestoneId","lockedAt","lockedByActorId","lockReason","pinnedAt","pinnedByActorId","pinSlot","createdAt","updatedAt","labels","assignees","milestone","capabilities"],"additionalProperties":false},"IssuePage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Author"},"id":{"$ref":"#/components/schemas/IssueId"},"repoId":{"$ref":"#/components/schemas/RepoId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"description":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"stateType":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]},"priority":{"type":"integer","minimum":0,"maximum":4},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"authorDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"authorViaInstallationId":{"type":["string","null"]},"dueDate":{"type":["string","null"],"format":"date-time"},"closedAt":{"type":["string","null"],"format":"date-time"},"closedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByViaInstallationId":{"type":["string","null"]},"closedReason":{"type":["string","null"]},"milestoneId":{"type":["string","null"]},"lockedAt":{"type":["string","null"],"format":"date-time"},"lockedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"lockReason":{"type":["string","null"]},"pinnedAt":{"type":["string","null"],"format":"date-time"},"pinnedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"pinSlot":{"type":["integer","null"],"minimum":0,"maximum":32767},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"labels":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"assignees":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false},{"type":"null"}]}},"required":["author","id","repoId","number","title","description","version","stateType","priority","authorActorId","authorDelegatorActorId","authorViaInstallationId","dueDate","closedAt","closedByActorId","closedByDelegatorActorId","closedByViaInstallationId","closedReason","milestoneId","lockedAt","lockedByActorId","lockReason","pinnedAt","pinnedByActorId","pinSlot","createdAt","updatedAt","labels","assignees","milestone"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","next","total"],"additionalProperties":false},"IssueCommentRead":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Author"},"id":{"type":"string"},"issueId":{"$ref":"#/components/schemas/IssueId"},"repoId":{"$ref":"#/components/schemas/RepoId"},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"authorDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"authorViaInstallationId":{"type":["string","null"]},"body":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"capabilities":{"type":"object","properties":{"edit":{"type":"boolean"},"delete":{"type":"boolean"}},"required":["edit","delete"],"additionalProperties":false}},"required":["author","id","issueId","repoId","authorActorId","authorDelegatorActorId","authorViaInstallationId","body","version","createdAt","updatedAt","capabilities"],"additionalProperties":false},"Invitation":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"$ref":"#/components/schemas/OrgId"},"actorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"email":{"type":["string","null"],"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"acceptedAt":{"type":["string","null"],"format":"date-time"},"revokedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","orgId","actorId","email","role","createdAt","expiresAt","acceptedAt","revokedAt"],"additionalProperties":false},"Organization":{"type":"object","properties":{"id":{"type":"string"},"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"personal":{"type":"boolean"},"avatarUrl":{"type":["string","null"]}},"required":["id","actorId","handle","personal","avatarUrl"],"additionalProperties":false},"OrganizationDetail":{"type":"object","properties":{"id":{"type":"string"},"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"personal":{"type":"boolean"},"avatarUrl":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"basePermission":{"type":"string","enum":["none","read","write"]},"allowForking":{"type":"boolean"},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"location":{"type":["string","null"]},"company":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]}},"required":["id","actorId","handle","personal","avatarUrl","version","basePermission","allowForking","displayName","bio","location","company","websiteUrl"],"additionalProperties":false},"OrganizationSettings":{"type":"object","properties":{"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bio":{"type":["string","null"]},"location":{"type":["string","null"]},"company":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"basePermission":{"type":"string","enum":["none","read","write"]},"allowForking":{"type":"boolean"}},"required":["displayName","avatarUrl","bio","location","company","websiteUrl","id","version","basePermission","allowForking"],"additionalProperties":false},"OrganizationPage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"ProviderMerge":{"type":"object","properties":{"authority":{"type":"string","const":"https://github.com"},"providerRepositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"providerNodeId":{"type":"string","minLength":1,"maxLength":256},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"mergedAt":{"type":"string","format":"date-time"},"mergeCommitOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"}},"required":["authority","providerRepositoryId","providerNodeId","number","mergedAt"],"additionalProperties":false},"MergeOutcome":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"string","pattern":"^ghd_[0-9a-f]{64}$"}]},"state":{"type":"string","enum":["accepted","completed","failed"]},"resultOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"reason":{"type":"string","enum":["rejected","merge-precondition-changed","native-conflict","native-failure","native-cancelled","reconciliation-required","already-up-to-date"]},"waiting":{"type":"object","properties":{"reason":{"type":"string","enum":["provider-admission-required","provider-authority-required"]},"jobKind":{"type":["string","null"],"minLength":1,"maxLength":64},"jobId":{"type":["string","null"],"minLength":1,"maxLength":80}},"required":["reason","jobKind","jobId"],"additionalProperties":false},"failure":{"type":"string","enum":["conflict","precondition-changed","too-large","lfs-unsupported","remote-rejected","cancelled","retry-later","internal"]}},"required":["id","state"],"additionalProperties":false},"Reaction":{"type":"object","properties":{"id":{"type":"string"},"repoId":{"$ref":"#/components/schemas/RepoId"},"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"actorId":{"$ref":"#/components/schemas/ActorId"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","repoId","subject","emoji","actorId","createdAt"],"additionalProperties":false},"ReactionList":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"count":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"viewerReactionId":{"type":["string","null"]},"reactors":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/Author"}}},"required":["subject","emoji","count","viewerReactionId","reactors"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"PullSummary":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"author":{"$ref":"#/components/schemas/Author"},"sourceBranch":{"type":"string"},"targetBranch":{"type":"string"},"headOid":{"type":["string","null"]},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"updatedAt":{"type":"string","format":"date-time"},"version":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["id","number","title","state","draft","createdAt","author","sourceBranch","targetBranch","headOid","authorActorId","updatedAt","version"],"additionalProperties":false},"PullDetail":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"author":{"$ref":"#/components/schemas/Author"},"sourceBranch":{"type":"string"},"targetBranch":{"type":"string"},"headOid":{"type":["string","null"]},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"updatedAt":{"type":"string","format":"date-time"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"description":{"type":["string","null"]},"repoId":{"$ref":"#/components/schemas/RepoId"},"sourceRepoId":{"anyOf":[{"$ref":"#/components/schemas/RepoId"},{"type":"null"}]},"sourceRepo":{"anyOf":[{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string"}},"required":["owner","name"],"additionalProperties":false},{"type":"null"}]},"isCrossFork":{"type":"boolean"},"observedBaseOid":{"type":["string","null"]},"mergeSourceOid":{"type":["string","null"]},"mergeTargetOidBefore":{"type":["string","null"]},"mergeResultOid":{"type":["string","null"]},"providerMerge":{"anyOf":[{"$ref":"#/components/schemas/ProviderMerge"},{"type":"null"}]},"authorDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"authorViaInstallationId":{"type":["string","null"]},"closedByViaInstallationId":{"type":["string","null"]},"mergedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"mergedByViaInstallationId":{"type":["string","null"]},"lockedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"milestoneId":{"type":["string","null"]},"closedAt":{"type":["string","null"],"format":"date-time"},"mergedAt":{"type":["string","null"],"format":"date-time"},"lockedAt":{"type":["string","null"],"format":"date-time"},"lockReason":{"type":["string","null"],"enum":["off_topic","too_heated","resolved","spam",null]},"closedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"mergedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]}},"required":["id","number","title","state","draft","createdAt","author","sourceBranch","targetBranch","headOid","authorActorId","updatedAt","version","description","repoId","sourceRepoId","sourceRepo","isCrossFork","observedBaseOid","mergeSourceOid","mergeTargetOidBefore","mergeResultOid","authorDelegatorActorId","authorViaInstallationId","closedByViaInstallationId","mergedByDelegatorActorId","mergedByViaInstallationId","lockedByActorId","milestoneId","closedAt","mergedAt","lockedAt","lockReason","closedByActorId","closedByDelegatorActorId","mergedByActorId"],"additionalProperties":false},"PullRead":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"author":{"$ref":"#/components/schemas/Author"},"sourceBranch":{"type":"string"},"targetBranch":{"type":"string"},"headOid":{"type":["string","null"]},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"updatedAt":{"type":"string","format":"date-time"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"description":{"type":["string","null"]},"repoId":{"$ref":"#/components/schemas/RepoId"},"sourceRepoId":{"anyOf":[{"$ref":"#/components/schemas/RepoId"},{"type":"null"}]},"sourceRepo":{"anyOf":[{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string"}},"required":["owner","name"],"additionalProperties":false},{"type":"null"}]},"isCrossFork":{"type":"boolean"},"observedBaseOid":{"type":["string","null"]},"mergeSourceOid":{"type":["string","null"]},"mergeTargetOidBefore":{"type":["string","null"]},"mergeResultOid":{"type":["string","null"]},"providerMerge":{"anyOf":[{"$ref":"#/components/schemas/ProviderMerge"},{"type":"null"}]},"authorDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"authorViaInstallationId":{"type":["string","null"]},"closedByViaInstallationId":{"type":["string","null"]},"mergedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"mergedByViaInstallationId":{"type":["string","null"]},"lockedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"milestoneId":{"type":["string","null"]},"closedAt":{"type":["string","null"],"format":"date-time"},"mergedAt":{"type":["string","null"],"format":"date-time"},"lockedAt":{"type":["string","null"],"format":"date-time"},"lockReason":{"type":["string","null"],"enum":["off_topic","too_heated","resolved","spam",null]},"closedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"closedByDelegatorActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"mergedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"github":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"state":{"type":"string","enum":["active","paused","needs-attention"]},"outboundEnabled":{"type":"boolean"},"lastImportedAt":{"type":"string","format":"date-time"}},"required":["url","state","outboundEnabled","lastImportedAt"],"additionalProperties":false},{"type":"null"}]},"capabilities":{"type":"object","properties":{"edit":{"type":"boolean"},"moderate":{"type":"boolean"},"review":{"type":"boolean"},"merge":{"type":"boolean"},"comment":{"type":"boolean"}},"required":["edit","moderate","review","merge","comment"],"additionalProperties":false},"mergeRoute":{"type":"string","enum":["native","provider","unsupported"]},"viewerActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]}},"required":["id","number","title","state","draft","createdAt","author","sourceBranch","targetBranch","headOid","authorActorId","updatedAt","version","description","repoId","sourceRepoId","sourceRepo","isCrossFork","observedBaseOid","mergeSourceOid","mergeTargetOidBefore","mergeResultOid","authorDelegatorActorId","authorViaInstallationId","closedByViaInstallationId","mergedByDelegatorActorId","mergedByViaInstallationId","lockedByActorId","milestoneId","closedAt","mergedAt","lockedAt","lockReason","closedByActorId","closedByDelegatorActorId","mergedByActorId","capabilities","mergeRoute","viewerActorId"],"additionalProperties":false},"PullListItem":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"author":{"$ref":"#/components/schemas/Author"},"sourceBranch":{"type":"string"},"targetBranch":{"type":"string"},"headOid":{"type":["string","null"]},"authorActorId":{"$ref":"#/components/schemas/ActorId"},"updatedAt":{"type":"string","format":"date-time"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"labels":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"assignees":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}},"reviewers":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false},{"type":"null"}]}},"required":["id","number","title","state","draft","createdAt","author","sourceBranch","targetBranch","headOid","authorActorId","updatedAt","version","labels","assignees","reviewers","milestone"],"additionalProperties":false},"PullPage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PullListItem"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"RepoParent":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"repo":{"type":"string"},"defaultBranch":{"type":"string"}},"required":["owner","repo","defaultBranch"],"additionalProperties":false},"RepoSummary":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","private"]}},"required":["id","name","visibility"],"additionalProperties":false},"RepoDetail":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","private"]},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"canReadSettings":{"type":"boolean"},"description":{"type":["string","null"]},"homepage":{"type":["string","null"]},"topics":{"type":"array","items":{"type":"string"}},"defaultBranch":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"archivedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RepoParent"},{"type":"null"}]}},"required":["id","name","visibility","owner","canReadSettings","description","homepage","topics","defaultBranch","version","archivedAt","createdAt","updatedAt","parent"],"additionalProperties":false},"RepoMetadata":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"description":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","description","version","updatedAt"],"additionalProperties":false},"RepoCollectionPage":{"type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string"},"description":{"type":["string","null"]},"homepage":{"type":["string","null"]},"topics":{"type":"array","items":{"type":"string"}},"visibility":{"type":"string","enum":["public","private"]},"defaultBranch":{"type":"string"},"archivedAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","owner","name","description","homepage","topics","visibility","defaultBranch","archivedAt","updatedAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"Ruleset":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"scope":{"type":"string","enum":["repo","org","team"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["name","target","enforcement","patterns","rules","bypassActors","id","version","scope","createdAt","updatedAt"],"additionalProperties":false},"RulesetRule":{"oneOf":[{"type":"object","properties":{"ruleType":{"type":"string","const":"require_pull_request"},"parameters":{"type":"object","properties":{"min_approvals":{"type":"integer","minimum":1,"maximum":10},"dismiss_stale_reviews":{"type":"boolean"},"require_code_owner_review":{"type":"boolean"}},"required":["min_approvals","dismiss_stale_reviews","require_code_owner_review"],"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"require_status_checks"},"parameters":{"type":"object","properties":{"contexts":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}},"strict":{"type":"boolean"}},"required":["contexts","strict"],"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"require_signatures"},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"require_linear_history"},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"restrict_pushes"},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"restrict_deletions"},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"restrict_force_pushes"},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"restrict_creations"},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"require_deployments"},"parameters":{"type":"object","properties":{"environments":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}}},"required":["environments"],"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false},{"type":"object","properties":{"ruleType":{"type":"string","const":"restrict_file_paths"},"parameters":{"type":"object","properties":{"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"action":{"type":"string","enum":["restrict","require_pr"]}},"required":["paths","action"],"additionalProperties":false}},"required":["ruleType","parameters"],"additionalProperties":false}],"discriminator":{"propertyName":"ruleType"}},"RulesetBypass":{"oneOf":[{"type":"object","properties":{"actorType":{"type":"string","const":"actor"},"actorId":{"type":"string"},"bypassMode":{"type":"string","enum":["always","pull_request"]}},"required":["actorType","actorId","bypassMode"],"additionalProperties":false},{"type":"object","properties":{"actorType":{"type":"string","const":"org_role"},"orgRole":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"bypassMode":{"type":"string","enum":["always","pull_request"]}},"required":["actorType","orgRole","bypassMode"],"additionalProperties":false}],"discriminator":{"propertyName":"actorType"}},"RulesetList":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/Ruleset"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"config":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","next","config"],"additionalProperties":false},"RulesetRead":{"type":"object","properties":{"ruleset":{"$ref":"#/components/schemas/Ruleset"},"config":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ruleset","config"],"additionalProperties":false},"RulesetMutation":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"config":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","version","config"],"additionalProperties":false},"CiIntegrationRead":{"type":"object","properties":{"id":{"type":"string"},"orgId":{"type":"string"},"type":{"type":"string","const":"buildkite"},"name":{"type":"string"},"orgSlug":{"type":"string"},"enabled":{"type":"boolean"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"webhookUrl":{"type":"string"},"tokenConfigured":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","orgId","type","name","orgSlug","enabled","version","webhookUrl","tokenConfigured","createdAt","updatedAt"],"additionalProperties":false},"CiBindingRead":{"type":"object","properties":{"id":{"type":"string"},"integrationId":{"type":"string"},"repoId":{"type":"string"},"pipeline":{"type":"string"},"context":{"type":"string"},"enabled":{"type":"boolean"},"publishToGithub":{"type":"boolean"},"exposeLogs":{"type":"boolean"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"repoGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","integrationId","repoId","pipeline","context","enabled","publishToGithub","exposeLogs","version","repoGeneration","createdAt","updatedAt"],"additionalProperties":false},"SourceCommit":{"type":"object","properties":{"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"tree":{"type":"string","pattern":"^[0-9a-f]{40}$"},"parents":{"maxItems":256,"type":"array","items":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"parentCount":{"type":"integer","minimum":0,"maximum":256},"message":{"type":"string","maxLength":65536},"summary":{"type":"string","maxLength":16384},"time":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"object","properties":{"name":{"type":"string","maxLength":4096},"email":{"type":"string","maxLength":4096},"timestamp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timezoneOffsetMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","email","timestamp","timezoneOffsetMinutes"],"additionalProperties":false},"committer":{"type":"object","properties":{"name":{"type":"string","maxLength":4096},"email":{"type":"string","maxLength":4096},"timestamp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timezoneOffsetMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","email","timestamp","timezoneOffsetMinutes"],"additionalProperties":false},"verification":{"default":null,"anyOf":[{"type":"object","properties":{"verified":{"type":"boolean"},"reason":{"type":"string","enum":["valid","unsigned","unverified_key","bad_signature","unsupported_algorithm","unknown_error"]},"signer":{"anyOf":[{"type":"object","properties":{"handle":{"type":"string","maxLength":100},"keyId":{"type":"string","maxLength":64}},"required":["handle","keyId"],"additionalProperties":false},{"type":"null"}]}},"required":["verified","reason","signer"],"additionalProperties":false},{"type":"null"}]}},"required":["oid","tree","parents","parentCount","message","summary","time","author","committer","verification"],"additionalProperties":false},"GitPushStatus":{"type":"object","properties":{"id":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"},"repoId":{"$ref":"#/components/schemas/RepoId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"state":{"type":"string","enum":["admitted","receiving","unknown","succeeded","failed","cancelled","superseded"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"effectPermitted":{"type":"boolean"},"cancellationRequested":{"type":"boolean"},"accounted":{"type":"boolean"},"deletion":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"expectedOid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["ref","expectedOid"],"additionalProperties":false},"restoration":{"type":"object","properties":{"id":{"type":"string"},"ref":{"type":"string","minLength":1,"maxLength":255},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["id","ref","oid"],"additionalProperties":false},"creation":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ref":{"type":"string","minLength":1,"maxLength":255},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["requestKey","ref","oid"],"additionalProperties":false},"native":{"anyOf":[{"$ref":"#/components/schemas/GitPushNativeSummary"},{"type":"null"}]},"receipt":{"anyOf":[{"$ref":"#/components/schemas/GitPushReceipt"},{"type":"null"}]}},"required":["id","repoId","actorId","state","version","effectPermitted","cancellationRequested","accounted","native","receipt"],"additionalProperties":false},"GitPushNativeSummary":{"type":"object","properties":{"state":{"type":"string","enum":["pending","running","committed","conflict","definitely_not_committed","cancelled","outcome_unknown"]},"phase":{"type":"string","enum":["receiving","uploading","adopted","dispatched","closed-before-upload"]},"failure":{"type":"object","properties":{"code":{"type":"string","maxLength":64},"limitBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["code"],"additionalProperties":false},"message":{"type":"string","maxLength":400}},"required":["state"],"additionalProperties":false},"GitPushReceipt":{"type":"object","properties":{"version":{"type":"integer","const":1},"pushId":{"type":"string","minLength":1,"maxLength":69},"actor":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"user"},"id":{"$ref":"#/components/schemas/ActorId"},"username":{"type":"string","minLength":1,"maxLength":100}},"required":["type","id","username"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"service"},"id":{"$ref":"#/components/schemas/ActorId"}},"required":["type","id"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}},"refUpdatesCount":{"type":"integer","minimum":1,"maximum":4194304},"refUpdates":{"maxItems":4194304,"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","minLength":6,"maxLength":1024,"pattern":"^refs\\/.*"},"beforeOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"afterOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"created":{"type":"boolean"},"deleted":{"type":"boolean"},"forced":{"type":"boolean"}},"required":["ref","beforeOid","afterOid","created","deleted","forced"],"additionalProperties":false}},"refUpdatesTruncated":{"type":"boolean"},"nextCursor":{"type":"string","minLength":1,"maxLength":4096}},"required":["version","pushId","actor","refUpdatesCount","refUpdates","refUpdatesTruncated"],"additionalProperties":false},"MaintenanceStatus":{"type":"object","properties":{"id":{"type":"string","pattern":"^maint_[0-9a-f]{64}$"},"repoId":{"$ref":"#/components/schemas/RepoId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"state":{"type":"string","enum":["queued","running","blocked","succeeded","failed","cancelled"]},"effectPermitted":{"type":"boolean"},"cancellationRequested":{"type":"boolean"},"native":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["pending","running","committed","conflict","definitely_not_committed","cancelled","outcome_unknown"]},"strategy":{"type":"string","enum":["accelerators","geometric"]},"before":{"type":"object","properties":{"version":{"type":"integer","const":2},"packCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"packBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"looseObjectCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"looseObjectBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"estimatedFullRewriteBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"recommendedStrategy":{"type":"string","enum":["accelerators","geometric"]}},"required":["version","packCount","packBytes","looseObjectCount","looseObjectBytes","estimatedFullRewriteBytes"],"additionalProperties":false},"after":{"type":"object","properties":{"version":{"type":"integer","const":2},"packCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"packBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"looseObjectCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"looseObjectBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"estimatedFullRewriteBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"recommendedStrategy":{"type":"string","enum":["accelerators","geometric"]}},"required":["version","packCount","packBytes","looseObjectCount","looseObjectBytes","estimatedFullRewriteBytes"],"additionalProperties":false}},"required":["state"],"additionalProperties":false},{"type":"null"}]},"reason":{"type":["string","null"],"enum":["authority_changed","native_unavailable","native_pending","invalid_evidence","configuration_changed",null]}},"required":["id","repoId","version","state","effectPermitted","cancellationRequested","native","reason"],"additionalProperties":false},"StackMember":{"type":"object","properties":{"membershipId":{"type":"string"},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"sourceBranch":{"type":"string"},"directBase":{"type":"string"},"position":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"lifecycle":{"type":"string","enum":["landed","active"]},"needsRestack":{"type":"boolean"},"mergeStrategy":{"type":["string","null"],"enum":["merge","squash","rebase",null]},"mergeCommitOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"landedAt":{"type":["string","null"],"format":"date-time"}},"required":["membershipId","pullRequestId","pullRequestNumber","title","state","draft","sourceBranch","directBase","position","lifecycle","needsRestack","mergeStrategy","mergeCommitOid","landedAt"],"additionalProperties":false},"StackRead":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"state":{"type":"string","enum":["active","completed","dissolved"]},"landingBase":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"landedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"members":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/StackMember"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"endedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","number","state","landingBase","revision","size","activeCount","landedCount","members","createdAt","updatedAt","endedAt"],"additionalProperties":false},"StackProblemCode":{"type":"string","enum":["PULL_REQUEST_IN_ACTIVE_STACK","PULL_REQUEST_ALREADY_STACKED","STACK_MEMBER_NEEDS_RESTACK","STACK_LAND_IDEMPOTENCY_KEY_REUSED","STACK_LAND_IN_PROGRESS","STACK_LAND_ACTOR_MISMATCH","STACK_MERGE_IN_PROGRESS","STACK_REVISION_MISMATCH","STACK_TERMINAL","STACK_RESTACK_IN_PROGRESS","STACK_RESTACK_IDEMPOTENCY_KEY_REUSED","STACK_RESTACK_STALE","DUPLICATE_PULL_REQUEST","NON_LINEAR_STACK","PULL_REQUEST_NOT_STACKED","PULL_REQUEST_TERMINAL","STACK_LAND_TERMINAL_MEMBER_NOT_ACTIVE","STACK_REQUIRES_TWO_MEMBERS","STACK_REPOSITORY_MISMATCH","STACK_STRATEGY_REQUIRES_RESTACK","STACK_STRATEGY_UNSUPPORTED","STACK_RESTACK_INCOMPLETE_PLAN","STACK_RESTACK_SERVER_LIMIT","STACK_RESTACK_SERVER_MODE_UNAVAILABLE","STACK_LAND_PROVIDER_UNSUPPORTED"]},"StackConflictProblem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"code":{"$ref":"#/components/schemas/StackProblemCode"},"status":{"type":"integer","const":409}},"required":["type","title","detail","code","status"],"additionalProperties":false},"StackStateProblem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"code":{"$ref":"#/components/schemas/StackProblemCode"},"status":{"type":"integer","const":422}},"required":["type","title","detail","code","status"],"additionalProperties":false},"LandOperation":{"anyOf":[{"$ref":"#/components/schemas/NativeLandOperation"},{"$ref":"#/components/schemas/ProviderLandOperation"}]},"NativeLandOperation":{"type":"object","properties":{"id":{"type":"string"},"stackNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"state":{"type":"string","enum":["pending","running","awaiting_credential","reconciliation_required","completed","stopped","failed"]},"strategy":{"type":"string","enum":["merge","squash","rebase"]},"landedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"stepCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"stopReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":512}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":512}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"steps":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"sourceBranch":{"type":"string"},"targetBranch":{"type":"string"},"mergeOperationId":{"type":["string","null"]},"mergeState":{"type":["string","null"],"enum":["preparing","prepared","ref_applied","completed","failed",null]},"resultOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"retargetedPullRequestNumber":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647}},"required":["sequence","pullRequestNumber","sourceBranch","targetBranch","mergeOperationId","mergeState","resultOid","retargetedPullRequestNumber"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","stackNumber","state","strategy","landedCount","stepCount","stopReason","error","steps","createdAt","finishedAt"],"additionalProperties":false},"ProviderLandOperation":{"type":"object","properties":{"id":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"stackNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"state":{"type":"string","enum":["pending","running","awaiting_credential","reconciliation_required","completed","stopped","failed"]},"strategy":{"type":"string","enum":["merge","squash","rebase"]},"landedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"stepCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"stopReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":512}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":512}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"steps":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"sourceBranch":{"type":"string"},"targetBranch":{"type":"string"},"mergeOperationId":{"type":["string","null"]},"mergeState":{"type":["string","null"],"enum":["preparing","prepared","ref_applied","completed","failed",null]},"resultOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"retargetedPullRequestNumber":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647}},"required":["sequence","pullRequestNumber","sourceBranch","targetBranch","mergeOperationId","mergeState","resultOid","retargetedPullRequestNumber"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"provider":{"type":"string","const":"github"}},"required":["id","stackNumber","state","strategy","landedCount","stepCount","stopReason","error","steps","createdAt","finishedAt","provider"],"additionalProperties":false},"RestackStep":{"type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"sourceBranch":{"type":"string"},"sourceOidBefore":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"oldBase":{"type":"string"},"newBase":{"type":"string"},"state":{"type":"string","enum":["pending","prepared","ref_applied","finalized","conflict","failed"]},"resultOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"conflicts":{"anyOf":[{"maxItems":100,"type":"array","items":{"type":"string"}},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":512}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["sequence","pullRequestNumber","sourceBranch","sourceOidBefore","oldBase","newBase","state","resultOid","conflicts","error"],"additionalProperties":false},"RestackOperation":{"type":"object","properties":{"id":{"type":"string"},"stackNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"state":{"type":"string","enum":["pending","running","awaiting_credential","paused_conflict","paused_policy","cancel_requested","cancelled","reconciliation_required","completed","failed"]},"stepCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completedStepCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"pauseReason":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":512}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"steps":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/RestackStep"}},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","stackNumber","state","stepCount","completedStepCount","pauseReason","steps","createdAt","finishedAt"],"additionalProperties":false},"GithubImportOperation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"repoId":{"anyOf":[{"$ref":"#/components/schemas/RepoId"},{"type":"null"}]},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","pattern":"^[a-z0-9._-]{1,100}$"},"sourceOwner":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"sourceName":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"syncMode":{"type":"string","enum":["read-only","bidirectional"]},"conflictWinner":{"type":["string","null"],"enum":["gitcafe","github",null]},"stage":{"type":"string","enum":["pending","provisioning","pulling","configuring","complete","blocked"]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":100},"message":{"type":"string","maxLength":500}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"recoveryStage":{"type":["string","null"],"enum":["pending","provisioning","pulling","configuring",null]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","requestId","repoId","owner","name","sourceOwner","sourceName","installationId","repositoryId","syncMode","conflictWinner","stage","error","recoveryStage","createdAt","completedAt"],"additionalProperties":false},"GithubPullSnapshot":{"type":"object","properties":{"stack":{"anyOf":[{"type":"object","properties":{"base":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"sha":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["ref","sha"],"additionalProperties":false},"size":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"position":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["base"],"additionalProperties":false},{"type":"null"}]},"reactions":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"total_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"+1":{"type":"integer","minimum":0,"maximum":9007199254740991},"-1":{"type":"integer","minimum":0,"maximum":9007199254740991},"laugh":{"type":"integer","minimum":0,"maximum":9007199254740991},"hooray":{"type":"integer","minimum":0,"maximum":9007199254740991},"confused":{"type":"integer","minimum":0,"maximum":9007199254740991},"heart":{"type":"integer","minimum":0,"maximum":9007199254740991},"rocket":{"type":"integer","minimum":0,"maximum":9007199254740991},"eyes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total_count"],"additionalProperties":false},"labels":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":1000}},"required":["id","node_id","name","color","description"],"additionalProperties":false}},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"state":{"type":"string","enum":["open","closed"]},"due_on":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"creator":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]}},"required":["id","node_id","number","title","description","state","due_on","created_at","updated_at"],"additionalProperties":false},{"type":"null"}]},"assignees":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false}},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"node_id":{"type":"string","minLength":1,"maxLength":256},"title":{"type":"string","minLength":1,"maxLength":1024},"body":{"type":["string","null"],"maxLength":1048576},"state":{"type":"string","enum":["open","closed"]},"draft":{"type":"boolean"},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"base":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"sha":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"repo":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},{"type":"null"}]}},"required":["ref","sha","repo"],"additionalProperties":false},"head":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"sha":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"repo":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},{"type":"null"}]}},"required":["ref","sha","repo"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"merged_at":{"type":["string","null"],"format":"date-time"},"requested_reviewers":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false}},"requested_teams":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*$"},"name":{"type":"string","maxLength":255}},"required":["id","slug"],"additionalProperties":false}},"locked":{"type":"boolean"},"active_lock_reason":{"type":["string","null"],"maxLength":255},"merged":{"type":"boolean"},"merge_commit_sha":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["number","node_id","title","body","state","draft","user","base","head","created_at","updated_at","merged_at"],"additionalProperties":false},"GithubMetadataSnapshot":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"review-comment"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"pullNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"comment":{"$ref":"#/components/schemas/GithubReviewComment"},"deleted":{"type":"boolean"}},"required":["kind","repository","pullNumber","comment","deleted"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue-comment"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/GithubIssueSnapshot"},"comment":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"body":{"type":"string","maxLength":1048576},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"reactions":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"total_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"+1":{"type":"integer","minimum":0,"maximum":9007199254740991},"-1":{"type":"integer","minimum":0,"maximum":9007199254740991},"laugh":{"type":"integer","minimum":0,"maximum":9007199254740991},"hooray":{"type":"integer","minimum":0,"maximum":9007199254740991},"confused":{"type":"integer","minimum":0,"maximum":9007199254740991},"heart":{"type":"integer","minimum":0,"maximum":9007199254740991},"rocket":{"type":"integer","minimum":0,"maximum":9007199254740991},"eyes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total_count"],"additionalProperties":false},"issue_url":{"type":"string","maxLength":2048}},"required":["id","node_id","body","user","created_at","updated_at","issue_url"],"additionalProperties":false},"deleted":{"type":"boolean"}},"required":["kind","repository","issue","comment","deleted"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"issue":{"$ref":"#/components/schemas/GithubIssueSnapshot"}},"required":["kind","repository","issue"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"review"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"pullNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"review":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"body":{"type":"string","maxLength":1048576},"state":{"type":"string","enum":["APPROVED","CHANGES_REQUESTED","COMMENTED","DISMISSED"]},"submitted_at":{"type":"string","format":"date-time"},"commit_id":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"pull_request_url":{"type":"string","maxLength":2048}},"required":["id","node_id","user","body","state","submitted_at","commit_id","pull_request_url"],"additionalProperties":false}},"required":["kind","repository","pullNumber","review"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"pull":{"$ref":"#/components/schemas/GithubPullSnapshot"}},"required":["kind","repository","pull"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"comment"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"pullNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"comment":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"body":{"type":"string","maxLength":1048576},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"reactions":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"total_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"+1":{"type":"integer","minimum":0,"maximum":9007199254740991},"-1":{"type":"integer","minimum":0,"maximum":9007199254740991},"laugh":{"type":"integer","minimum":0,"maximum":9007199254740991},"hooray":{"type":"integer","minimum":0,"maximum":9007199254740991},"confused":{"type":"integer","minimum":0,"maximum":9007199254740991},"heart":{"type":"integer","minimum":0,"maximum":9007199254740991},"rocket":{"type":"integer","minimum":0,"maximum":9007199254740991},"eyes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total_count"],"additionalProperties":false}},"required":["id","node_id","body","user","created_at","updated_at"],"additionalProperties":false},"deleted":{"type":"boolean"}},"required":["kind","repository","pullNumber","comment","deleted"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"check"},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"}},"required":["id","node_id","name","owner","private"],"additionalProperties":false},"check":{"$ref":"#/components/schemas/GithubCheckSnapshot"}},"required":["kind","repository","check"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"GithubProviderCommentList":{"type":"object","properties":{"items":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"pullNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"comment":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"body":{"type":"string","maxLength":1048576},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"reactions":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"total_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"+1":{"type":"integer","minimum":0,"maximum":9007199254740991},"-1":{"type":"integer","minimum":0,"maximum":9007199254740991},"laugh":{"type":"integer","minimum":0,"maximum":9007199254740991},"hooray":{"type":"integer","minimum":0,"maximum":9007199254740991},"confused":{"type":"integer","minimum":0,"maximum":9007199254740991},"heart":{"type":"integer","minimum":0,"maximum":9007199254740991},"rocket":{"type":"integer","minimum":0,"maximum":9007199254740991},"eyes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total_count"],"additionalProperties":false}},"required":["id","node_id","body","user","created_at","updated_at"],"additionalProperties":false}},"required":["pullNumber","comment"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"GithubProviderCheckList":{"type":"object","properties":{"items":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/GithubCheckSnapshot"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"GithubCheckSnapshot":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":255},"head_sha":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"status":{"type":"string","enum":["queued","in_progress","completed","waiting","requested","pending"]},"conclusion":{"type":["string","null"],"enum":["success","failure","neutral","cancelled","skipped","timed_out","action_required","stale","startup_failure",null]},"started_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"source":{"type":"string","const":"status"},"description":{"type":["string","null"],"maxLength":1024}},"required":["id","name","head_sha","status","conclusion","started_at","completed_at"],"additionalProperties":false},"GithubIssueSnapshot":{"type":"object","properties":{"labels":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":1000}},"required":["id","node_id","name","color","description"],"additionalProperties":false}},"milestone":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"state":{"type":"string","enum":["open","closed"]},"due_on":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"creator":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]}},"required":["id","node_id","number","title","description","state","due_on","created_at","updated_at"],"additionalProperties":false},{"type":"null"}]},"assignees":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false}},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":255},"body":{"type":["string","null"],"maxLength":65536},"state":{"type":"string","enum":["open","closed"]},"state_reason":{"type":["string","null"],"enum":["completed","not_planned","reopened","duplicate",null]},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"locked":{"type":"boolean"},"active_lock_reason":{"type":["string","null"],"maxLength":255},"pull_request":{"not":{}},"reactions":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"total_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"+1":{"type":"integer","minimum":0,"maximum":9007199254740991},"-1":{"type":"integer","minimum":0,"maximum":9007199254740991},"laugh":{"type":"integer","minimum":0,"maximum":9007199254740991},"hooray":{"type":"integer","minimum":0,"maximum":9007199254740991},"confused":{"type":"integer","minimum":0,"maximum":9007199254740991},"heart":{"type":"integer","minimum":0,"maximum":9007199254740991},"rocket":{"type":"integer","minimum":0,"maximum":9007199254740991},"eyes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total_count"],"additionalProperties":false}},"required":["id","node_id","number","title","body","state","state_reason","user","created_at","updated_at","closed_at"],"additionalProperties":false},"GithubReviewComment":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"pull_request_review_id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pull_request_url":{"type":"string","maxLength":2048},"user":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]*(?:\\[bot\\])?$"},"type":{"type":"string","enum":["User","Organization","Bot"]},"avatar_url":{"type":["string","null"],"maxLength":2048}},"required":["id","login"],"additionalProperties":false},{"type":"null"}]},"body":{"type":"string","maxLength":1048576},"path":{"type":"string","minLength":1,"maxLength":4096},"line":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"original_line":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"subject_type":{"default":"line","type":"string","enum":["line","file"]},"diff_hunk":{"default":"","type":"string","maxLength":1048576},"start_line":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"original_start_line":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"side":{"type":["string","null"],"enum":["LEFT","RIGHT",null]},"start_side":{"type":"string","enum":["LEFT","RIGHT"]},"commit_id":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"original_commit_id":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"in_reply_to_id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"reactions":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"total_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"+1":{"type":"integer","minimum":0,"maximum":9007199254740991},"-1":{"type":"integer","minimum":0,"maximum":9007199254740991},"laugh":{"type":"integer","minimum":0,"maximum":9007199254740991},"hooray":{"type":"integer","minimum":0,"maximum":9007199254740991},"confused":{"type":"integer","minimum":0,"maximum":9007199254740991},"heart":{"type":"integer","minimum":0,"maximum":9007199254740991},"rocket":{"type":"integer","minimum":0,"maximum":9007199254740991},"eyes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total_count"],"additionalProperties":false}},"required":["id","node_id","pull_request_review_id","pull_request_url","user","body","path","line","original_line","subject_type","diff_hunk","side","commit_id","original_commit_id","created_at","updated_at"],"additionalProperties":false},"Review":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Author"},"id":{"type":"string"},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"submittedPullVersion":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"authorActorId":{"type":"string"},"authorDelegatorActorId":{"type":["string","null"]},"authorViaInstallationId":{"type":["string","null"]},"body":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"dismissedAt":{"type":["string","null"],"format":"date-time"},"dismissedReason":{"type":["string","null"],"maxLength":65536},"dismissedByActorId":{"type":["string","null"]},"dismissedByDelegatorActorId":{"type":["string","null"]},"dismissedByViaInstallationId":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["author","id","commitOid","verdict","submittedPullVersion","authorActorId","authorDelegatorActorId","authorViaInstallationId","body","version","dismissedAt","dismissedReason","dismissedByActorId","dismissedByDelegatorActorId","dismissedByViaInstallationId","createdAt","updatedAt"],"additionalProperties":false},"ReviewPage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/Review"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"Team":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"orgId":{"$ref":"#/components/schemas/OrgId"},"handle":{"type":"string"},"path":{"type":"string"},"ancestors":{"type":"array","items":{"$ref":"#/components/schemas/TeamId"}}},"required":["id","actorId","orgId","handle","path"],"additionalProperties":false},"TeamDetail":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"orgId":{"$ref":"#/components/schemas/OrgId"},"handle":{"type":"string"},"path":{"type":"string"},"ancestors":{"type":"array","items":{"$ref":"#/components/schemas/TeamId"}},"displayName":{"type":"string"},"visibility":{"type":"string","enum":["visible","secret"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"parentTeamActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"capabilities":{"type":"object","properties":{"manageMembers":{"type":"boolean"},"manageMetadata":{"type":"boolean"},"manageRepositories":{"type":"boolean"},"manageRulesets":{"type":"boolean"}},"required":["manageMembers","manageMetadata","manageRepositories","manageRulesets"],"additionalProperties":false}},"required":["id","actorId","orgId","handle","path","displayName","visibility","version","parentTeamActorId","capabilities"],"additionalProperties":false},"TeamListItem":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":"string"},"visibility":{"type":"string","enum":["visible","secret"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"parentTeamActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"orgId":{"$ref":"#/components/schemas/OrgId"},"handle":{"type":"string"},"path":{"type":"string"}},"required":["id","actorId","displayName","visibility","version","parentTeamActorId","orgId","handle","path"],"additionalProperties":false},"TeamPage":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/TeamListItem"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"Profile":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"location":{"type":["string","null"]},"company":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]}},"required":["actorId","handle","version","displayName","bio","location","company","websiteUrl","avatarUrl"],"additionalProperties":false},"PublicProfile":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"location":{"type":["string","null"]},"company":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]}},"required":["actorId","handle","displayName","bio","location","company","websiteUrl","avatarUrl"],"additionalProperties":false},"PublicOwnerProfile":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"location":{"type":["string","null"]},"company":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"kind":{"type":"string","enum":["user","organization"]}},"required":["actorId","handle","displayName","bio","location","company","websiteUrl","avatarUrl","kind"],"additionalProperties":false},"PublicProfilePage":{"type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/PublicProfile"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false},"RateLimitProblem":{"type":"object","properties":{"type":{"type":"string","const":"https://cafe.sh/errors/rate-limit-exceeded"},"title":{"type":"string","const":"Rate limit exceeded"},"status":{"type":"integer","const":429},"detail":{"type":"string","minLength":1,"maxLength":1024},"policy":{"type":"string","enum":["api","api-heavy","api-anon"]},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"window_seconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"retry_after_seconds":{"type":"integer","minimum":1,"maximum":86400}},"required":["type","title","status","detail","policy","limit","window_seconds","retry_after_seconds"],"additionalProperties":false},"AccessProblem":{"oneOf":[{"$ref":"#/components/schemas/AuthenticationProblem"},{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/NotFoundProblem"}]},"AuthenticationProblem":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":401}},"required":["type","title","detail","status"],"additionalProperties":false},"ConflictProblem":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":409}},"required":["type","title","detail","status"],"additionalProperties":false},"ForbiddenProblem":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":403}},"required":["type","title","detail","status"],"additionalProperties":false},"NotFoundProblem":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":404}},"required":["type","title","detail","status"],"additionalProperties":false},"ServiceUnavailableProblem":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":503}},"required":["type","title","detail","status"],"additionalProperties":false},"ValidationProblem":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":400}},"required":["type","title","detail","status"],"additionalProperties":false}},"responses":{"ValidationProblem":{"description":"The request is invalid.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationProblem"}}}},"AuthenticationProblem":{"description":"Authentication is required, or the supplied credential is invalid.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AuthenticationProblem"}}}},"ForbiddenProblem":{"description":"The credential does not permit this operation.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ForbiddenProblem"}}}},"NotFoundProblem":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotFoundProblem"}}}},"ConflictProblem":{"description":"The request conflicts with the current state.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConflictProblem"}}}},"ServiceUnavailableProblem":{"description":"A required service is temporarily unavailable; retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableProblem"}}}},"RateLimitProblem":{"description":"A rate limit is exhausted. Wait Retry-After seconds; the value is a hint, so back off on a repeat 429.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"RateLimit":{"description":"The exhausted policy, for example \"api\";r=0;t=17.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Checked policies with quota and window, for example \"api\";q=2000;w=60 or \"api-anon\";q=30;w=60.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitProblem"}}}}},"headers":{"Link":{"description":"RFC 8288 link to the next page, as `<path?…&after=…>; rel=\"next\"`; absent on the last page. The body's `next` carries the same cursor.","schema":{"type":"string"}}},"securitySchemes":{"apiOAuth":{"type":"oauth2","description":"Public-client OAuth authorization-code flow for REST operations. Requires S256 PKCE and the exact absolute /api URL as the resource parameter in authorization and token requests. Register a public client using /api/oauth/register. Discover issuer metadata at /.well-known/oauth-authorization-server and protected-resource metadata at /.well-known/oauth-protected-resource/api. Consent restricts scopes to selected repositories; refresh cannot expand consent. Tokens are audience-bound: /api and /mcp are separate protected resources, and there is no /api/mcp compatibility resource. OpenAPI's OAuth fields cannot encode the required resource indicator, so automation must also follow x-gc2-resource and x-gc2-pkce.","x-gc2-resource":"/api","x-gc2-pkce":{"required":true,"codeChallengeMethods":["S256"]},"flows":{"authorizationCode":{"authorizationUrl":"/api/oauth/authorize","tokenUrl":"/api/oauth/token","refreshUrl":"/api/oauth/token","scopes":{"issue:contents:read":"Existing issue:contents:read permission, limited to repositories selected during consent and current domain policy.","issue:contents:write":"Existing issue:contents:write permission, limited to repositories selected during consent and current domain policy.","issue:contents:admin":"Existing issue:contents:admin permission, limited to repositories selected during consent and current domain policy.","repo:contents:read":"Existing repo:contents:read permission, limited to repositories selected during consent and current domain policy.","repo:contents:write":"Existing repo:contents:write permission, limited to repositories selected during consent and current domain policy.","repo:contents:admin":"Existing repo:contents:admin permission, limited to repositories selected during consent and current domain policy.","repo:metadata:read":"Existing repo:metadata:read permission, limited to repositories selected during consent and current domain policy.","repo:metadata:write":"Existing repo:metadata:write permission, limited to repositories selected during consent and current domain policy.","repo:metadata:admin":"Existing repo:metadata:admin permission, limited to repositories selected during consent and current domain policy.","repo:administration:read":"Existing repo:administration:read permission, limited to repositories selected during consent and current domain policy.","repo:administration:write":"Existing repo:administration:write permission, limited to repositories selected during consent and current domain policy.","repo:administration:admin":"Existing repo:administration:admin permission, limited to repositories selected during consent and current domain policy.","repo:rulesets:read":"Existing repo:rulesets:read permission, limited to repositories selected during consent and current domain policy.","repo:rulesets:write":"Existing repo:rulesets:write permission, limited to repositories selected during consent and current domain policy.","repo:rulesets:admin":"Existing repo:rulesets:admin permission, limited to repositories selected during consent and current domain policy.","repo:webhooks:read":"Existing repo:webhooks:read permission, limited to repositories selected during consent and current domain policy.","repo:webhooks:write":"Existing repo:webhooks:write permission, limited to repositories selected during consent and current domain policy.","repo:webhooks:admin":"Existing repo:webhooks:admin permission, limited to repositories selected during consent and current domain policy.","repo:attachments:read":"Existing repo:attachments:read permission, limited to repositories selected during consent and current domain policy.","repo:attachments:write":"Existing repo:attachments:write permission, limited to repositories selected during consent and current domain policy.","repo:attachments:admin":"Existing repo:attachments:admin permission, limited to repositories selected during consent and current domain policy.","pr:contents:read":"Existing pr:contents:read permission, limited to repositories selected during consent and current domain policy.","pr:contents:write":"Existing pr:contents:write permission, limited to repositories selected during consent and current domain policy.","pr:contents:admin":"Existing pr:contents:admin permission, limited to repositories selected during consent and current domain policy.","pr:merge:write":"Existing pr:merge:write permission, limited to repositories selected during consent and current domain policy.","pr:review:read":"Existing pr:review:read permission, limited to repositories selected during consent and current domain policy.","pr:review:write":"Existing pr:review:write permission, limited to repositories selected during consent and current domain policy.","comment:contents:read":"Existing comment:contents:read permission, limited to repositories selected during consent and current domain policy.","comment:contents:write":"Existing comment:contents:write permission, limited to repositories selected during consent and current domain policy.","comment:moderation:read":"Existing comment:moderation:read permission, limited to repositories selected during consent and current domain policy.","comment:moderation:write":"Existing comment:moderation:write permission, limited to repositories selected during consent and current domain policy.","branch:contents:read":"Existing branch:contents:read permission, limited to repositories selected during consent and current domain policy.","branch:contents:write":"Existing branch:contents:write permission, limited to repositories selected during consent and current domain policy.","branch:contents:admin":"Existing branch:contents:admin permission, limited to repositories selected during consent and current domain policy.","branch:rulesets:read":"Existing branch:rulesets:read permission, limited to repositories selected during consent and current domain policy.","branch:rulesets:write":"Existing branch:rulesets:write permission, limited to repositories selected during consent and current domain policy.","branch:rulesets:admin":"Existing branch:rulesets:admin permission, limited to repositories selected during consent and current domain policy."}}}},"session":{"type":"apiKey","in":"cookie","name":"gc-session","description":"HttpOnly browser session; sign in to use it on the same origin."},"bearer":{"type":"http","scheme":"bearer","description":"Personal access token or token issued through a device authorization grant. Resource and scope checks still apply."},"basic":{"type":"http","scheme":"basic","description":"Email/password, or a grant token as the password. Grant scopes still apply. Does not establish a browser session or recent-human assurance. Do not combine with a session cookie."},"token":{"type":"http","scheme":"Token","description":"Compatibility alternative to Bearer: Authorization: Token <grant token>. Use only one Authorization scheme and do not combine with a session cookie."},"stripeSignature":{"type":"apiKey","in":"header","name":"Stripe-Signature","description":"Stripe's computed signature over the unchanged raw request body, not a reusable API key."},"buildkiteSignature":{"type":"apiKey","in":"header","name":"X-Buildkite-Signature","description":"Buildkite's timestamped HMAC over the raw request body, not a reusable API key."},"githubSignupBinding":{"type":"apiKey","in":"cookie","name":"gc-github-signup","description":"Browser binding for a pending GitHub signup. The callback additionally validates state and the provider authorization code; this is not an API access token."}}},"paths":{"/.well-known/webauthn":{"get":{"tags":["Authentication"],"summary":"Discover WebAuthn origins","description":"Returns the configured canonical origin for WebAuthn relying-party discovery.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The returned origin is instance configuration, not caller-controlled input."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"origins":{"minItems":1,"type":"array","items":{"type":"string","format":"uri"}}},"required":["origins"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"get.well-knownWebauthn","x-gc2-ratelimit":{"policies":["api"]}},"head":{"responses":{"200":{"description":"Discovery is available; the response has no body.","headers":{"Content-Type":{"schema":{"type":"string","enum":["application/json"]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"tags":["Authentication"],"summary":"Check WebAuthn discovery","description":"Checks that the WebAuthn discovery document is available without returning its body.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The returned origin is instance configuration, not caller-controlled input."]},"operationId":"head.well-knownWebauthn","x-gc2-ratelimit":{"policies":["api"]}}},"/auth.md":{"get":{"tags":["OAuth"],"summary":"Discover auth.md agent authentication","description":"Describes the configured user-claimed registration flow, scopes, lifetimes and recovery. Returns 404 while disabled.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"200":{"description":"Response for status 200","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"getAuth.md","x-gc2-ratelimit":{"policies":["api"]}}},"/.well-known/oauth-authorization-server":{"get":{"tags":["OAuth"],"summary":"Discover the OAuth authorization server","description":"Returns configured OAuth issuer, endpoints, grants, PKCE support and the exact supported scope tokens.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","format":"uri"},"authorization_endpoint":{"type":"string","format":"uri"},"token_endpoint":{"type":"string","format":"uri"},"registration_endpoint":{"type":"string","format":"uri"},"revocation_endpoint":{"type":"string","format":"uri"},"response_types_supported":{"type":"array","items":{"type":"string","const":"code"}},"grant_types_supported":{"type":"array","items":{"type":"string","enum":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:jwt-bearer","urn:workos:agent-auth:grant-type:claim"]}},"resource":{"type":"string","format":"uri"},"authorization_servers":{"type":"array","items":{"type":"string","format":"uri"}},"bearer_methods_supported":{"type":"array","items":{"type":"string","const":"header"}},"agent_auth":{"type":"object","properties":{"skill":{"type":"string","format":"uri"},"identity_endpoint":{"type":"string","format":"uri"},"claim_endpoint":{"type":"string","format":"uri"},"identity_types_supported":{"type":"array","prefixItems":[{"type":"string","const":"service_auth"}],"items":false,"minItems":1,"maxItems":1}},"required":["skill","identity_endpoint","claim_endpoint","identity_types_supported"],"additionalProperties":false},"code_challenge_methods_supported":{"type":"array","items":{"type":"string","const":"S256"}},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string","const":"none"}},"revocation_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string","const":"none"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"resource_indicators_supported":{"type":"boolean","const":true},"authorization_response_iss_parameter_supported":{"type":"boolean","const":true},"client_id_metadata_document_supported":{"type":"boolean"}},"required":["issuer","authorization_endpoint","token_endpoint","registration_endpoint","revocation_endpoint","response_types_supported","grant_types_supported","code_challenge_methods_supported","token_endpoint_auth_methods_supported","revocation_endpoint_auth_methods_supported","scopes_supported","resource_indicators_supported","authorization_response_iss_parameter_supported","client_id_metadata_document_supported"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"get.well-knownOauth-authorization-server","x-gc2-ratelimit":{"policies":["api"]}}},"/.well-known/oauth-protected-resource/api":{"get":{"tags":["OAuth"],"summary":"Discover API OAuth protection","description":"Returns the canonical API resource, its authorization server and the exact supported scope tokens.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"resource":{"type":"string","format":"uri"},"resource_name":{"type":"string"},"resource_logo_uri":{"type":"string","format":"uri"},"authorization_servers":{"type":"array","items":{"type":"string","format":"uri"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"bearer_methods_supported":{"type":"array","items":{"type":"string","const":"header"}}},"required":["resource","resource_name","resource_logo_uri","authorization_servers","scopes_supported","bearer_methods_supported"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"get.well-knownOauth-protected-resourceApi","x-gc2-ratelimit":{"policies":["api"]}}},"/.well-known/oauth-protected-resource/mcp":{"get":{"tags":["OAuth"],"summary":"Discover MCP OAuth protection","description":"Returns the canonical MCP resource, its authorization server and the exact supported scope tokens.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"resource":{"type":"string","format":"uri"},"resource_name":{"type":"string"},"resource_logo_uri":{"type":"string","format":"uri"},"authorization_servers":{"type":"array","items":{"type":"string","format":"uri"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"bearer_methods_supported":{"type":"array","items":{"type":"string","const":"header"}}},"required":["resource","resource_name","resource_logo_uri","authorization_servers","scopes_supported","bearer_methods_supported"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"get.well-knownOauth-protected-resourceMcp","x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/repos":{"post":{"summary":"Create a repository","description":"Admits a repository in the organization and returns its durable admission status: 201 when admission completed, otherwise 202 with a Location to poll. Reusing requestKey returns the same admission. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the prospective repository name in the organization identified by slug"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Basic authentication is token only; email/password is not accepted."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":104},"description":{"type":"string","maxLength":2000},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"visibility":{"default":"private","type":"string","enum":["public","private"]},"defaultBranch":{"default":"main","type":"string","maxLength":255},"requestKey":{"type":"string","minLength":1,"maxLength":255}},"required":["name","requestKey"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":104},"description":{"type":"string","maxLength":2000},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"visibility":{"default":"private","type":"string","enum":["public","private"]},"defaultBranch":{"default":"main","type":"string","maxLength":255},"requestKey":{"type":"string","minLength":1,"maxLength":255}},"required":["name","requestKey"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":104},"description":{"type":"string","maxLength":2000},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"visibility":{"default":"private","type":"string","enum":["public","private"]},"defaultBranch":{"default":"main","type":"string","maxLength":255},"requestKey":{"type":"string","minLength":1,"maxLength":255}},"required":["name","requestKey"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["pending","running","outcome_unknown","complete","blocked"]},"owner":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","private"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["repoId","state","owner","name","visibility","createdAt","completedAt"],"additionalProperties":false}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["pending","running","outcome_unknown","complete","blocked"]},"owner":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","private"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["repoId","state","owner","name","visibility","createdAt","completedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugRepos","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/admissions/{repoId}":{"get":{"summary":"Get repository admission status","description":"Returns the durable admission status for repoId in the organization identified by slug. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository admission identified by organization slug and repoId"}],"conditions":["The actor must be allowed to inspect the destination organization admission.","Basic authentication is token only; email/password is not accepted."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repoId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/RepoId"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["pending","running","outcome_unknown","complete","blocked"]},"owner":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","private"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["repoId","state","owner","name","visibility","createdAt","completedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugAdmissionsByRepoId","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/repo-retirements/{repoId}":{"get":{"summary":"Get repository retirement status","description":"Returns the retirement record for repoId in the organization identified by slug, including whether native data is retained or absent. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by organization slug and repoId"}],"conditions":["The actor must own the repository namespace."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repoId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/RepoId"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["retained","absent"]},"reason":{"type":"string","enum":["owner-delete","collaborator-revoked","org-member-revoked","org-member-role-changed","team-member-revoked"]},"failureCode":{"type":["string","null"],"enum":["native-retirement-unavailable",null]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["repoId","state","reason","failureCode","createdAt","completedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugRepo-retirementsByRepoId","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/rulesets/":{"get":{"summary":"List organization rulesets","description":"Lists rulesets owned by an organization. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required. This applies even to ruleset reads."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugRulesets","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create an organization ruleset","description":"Creates a ruleset owned by an organization. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required. This applies even to ruleset reads.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugRulesets","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/rulesets/{ruleset}":{"get":{"summary":"Get an organization ruleset","description":"Returns one organization-owned ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required. This applies even to ruleset reads."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugRulesetsByRuleset","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Update an organization ruleset","description":"Updates an organization-owned ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required. This applies even to ruleset reads.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiOrgsBySlugRulesetsByRuleset","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete an organization ruleset","description":"Deletes an organization-owned ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required. This applies even to ruleset reads.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetMutation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugRulesetsByRuleset","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/capabilities":{"get":{"tags":["Webhooks"],"summary":"Inspect webhook capabilities","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns supported events and redacted instance configuration facts; configuration does not prove delivery. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCapabilities"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugWebhooksCapabilities","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/readiness":{"get":{"tags":["Webhooks"],"summary":"Inspect webhook readiness","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns endpoint activation, destination admission and signing configuration; no network request is made. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookReadiness"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugWebhooksByWebhookIdReadiness","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/":{"get":{"tags":["Webhooks"],"summary":"List organization webhooks","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Lists webhook endpoints configured for an organization. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugWebhooks","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Webhooks"],"summary":"Create an organization webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Creates an organization webhook and returns its signing secret once. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"default":true,"type":"boolean"},"secret":{"type":"string","minLength":16,"maxLength":128}},"required":["url","events"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"default":true,"type":"boolean"},"secret":{"type":"string","minLength":16,"maxLength":128}},"required":["url","events"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"default":true,"type":"boolean"},"secret":{"type":"string","minLength":16,"maxLength":128}},"required":["url","events"],"additionalProperties":false}}}},"responses":{"201":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreated"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugWebhooks","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}":{"get":{"tags":["Webhooks"],"summary":"Get an organization webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns one organization webhook endpoint without its signing secret. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugWebhooksByWebhookId","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["Webhooks"],"summary":"Update an organization webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Updates an organization webhook using optimistic concurrency. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlugWebhooksByWebhookId","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["Webhooks"],"summary":"Delete an organization webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Deletes an organization webhook. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugWebhooksByWebhookId","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/deliveries":{"get":{"operationId":"org.webhooks.deliveries.list","tags":["Webhooks"],"summary":"List organization webhook deliveries","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns bounded delivery status without payloads, credentials or receiver bodies. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["queued","running","succeeded","failed","dead_lettered","cancelled"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/deliveries/{deliveryId}/ref-updates":{"get":{"operationId":"org.webhooks.ref_updates.list","tags":["Webhooks"],"summary":"Page webhook push ref updates","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns retained public ref updates only for native push deliveries. Empty creation/deletion pages may have a public ref continuation; other Git sources are unsupported. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eventCreatedAt","in":"query","required":true,"schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRefUpdates"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/deliveries/{deliveryId}/payload":{"get":{"operationId":"org.webhooks.payload.get","tags":["Webhooks"],"summary":"Inspect an organization webhook payload","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns original retained event JSON to webhook administrators, including content later deleted or moderated. Signing headers and receiver bodies are excluded. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eventCreatedAt","in":"query","required":true,"schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayloadInspection"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/deliveries/{deliveryId}/attempts":{"get":{"operationId":"org.webhooks.attempts.list","tags":["Webhooks"],"summary":"List organization webhook delivery attempts","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns bounded delivery status without payloads, credentials or receiver bodies. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eventCreatedAt","in":"query","required":true,"schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookAttemptList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/ping":{"post":{"operationId":"org.webhooks.ping","tags":["Webhooks"],"summary":"Ping an organization webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Queues durable webhook delivery work; acceptance does not establish receiver success. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["requestId","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["requestId","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["requestId","expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRecoveryReceipt"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/deliveries/{deliveryId}/redeliver":{"post":{"operationId":"org.webhooks.redeliver","tags":["Webhooks"],"summary":"Redeliver an organization webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Queues durable webhook delivery work; acceptance does not establish receiver success. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedVersion","eventCreatedAt"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedVersion","eventCreatedAt"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedVersion","eventCreatedAt"],"additionalProperties":false}}}},"responses":{"202":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRecoveryReceipt"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/webhooks/{webhookId}/rotate-secret":{"post":{"tags":["Webhooks"],"summary":"Rotate an organization webhook secret","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Rotates a webhook signing secret and returns the replacement once. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"webhooks","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRotated"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugWebhooksByWebhookIdRotate-secret","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/integrations/":{"get":{"tags":["CI"],"summary":"List CI integrations","description":"Lists CI integrations configured for the organization without disclosing stored secrets. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"administration","level":"admin"},"target":"the organization named by the route slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","Basic email/password credentials cannot carry grant scope, while Basic with a token can."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CiIntegrationRead"}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugIntegrations","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["CI"],"summary":"Create a CI integration","description":"Creates a versioned CI integration and seals any supplied provider credential. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"administration","level":"admin"},"target":"the organization named by the route slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","Basic email/password credentials cannot carry grant scope, while Basic with a token can.","CI encryption and public webhook configuration must be available."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"buildkite"},"name":{"type":"string","minLength":1,"maxLength":100},"orgSlug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$"},"webhookSecret":{"type":"string","minLength":16,"maxLength":256},"apiToken":{"type":"string","minLength":16,"maxLength":512}},"required":["type","name","orgSlug","webhookSecret"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"buildkite"},"name":{"type":"string","minLength":1,"maxLength":100},"orgSlug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$"},"webhookSecret":{"type":"string","minLength":16,"maxLength":256},"apiToken":{"type":"string","minLength":16,"maxLength":512}},"required":["type","name","orgSlug","webhookSecret"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"buildkite"},"name":{"type":"string","minLength":1,"maxLength":100},"orgSlug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$"},"webhookSecret":{"type":"string","minLength":16,"maxLength":256},"apiToken":{"type":"string","minLength":16,"maxLength":512}},"required":["type","name","orgSlug","webhookSecret"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiIntegrationRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugIntegrations","x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/integrations/{integrationId}":{"get":{"tags":["CI"],"summary":"Get a CI integration","description":"Returns one organization CI integration without disclosing stored secrets. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"administration","level":"admin"},"target":"the organization named by the route slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","Basic email/password credentials cannot carry grant scope, while Basic with a token can.","The integration must belong to the organization in the route."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"integrationId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiIntegrationRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugIntegrationsByIntegrationId","x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["CI"],"summary":"Update a CI integration","description":"Updates one integration. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"administration","level":"admin"},"target":"the organization named by the route slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Basic email/password credentials cannot carry grant scope, while Basic with a token can.","The integration must belong to the organization and its expected version must match."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"integrationId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"name":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"webhookSecret":{"type":"string","minLength":16,"maxLength":256},"apiToken":{"type":["string","null"],"minLength":16,"maxLength":512}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"name":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"webhookSecret":{"type":"string","minLength":16,"maxLength":256},"apiToken":{"type":["string","null"],"minLength":16,"maxLength":512}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"name":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"webhookSecret":{"type":"string","minLength":16,"maxLength":256},"apiToken":{"type":["string","null"],"minLength":16,"maxLength":512}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiIntegrationRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlugIntegrationsByIntegrationId","x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["CI"],"summary":"Delete a CI integration","description":"Deletes one integration. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"administration","level":"admin"},"target":"the organization named by the route slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Basic email/password credentials cannot carry grant scope, while Basic with a token can.","The integration must belong to the organization and its expected version must match."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"integrationId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugIntegrationsByIntegrationId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/billing":{"get":{"tags":["Billing"],"summary":"Get organization billing","description":"Returns the organization's billing status and seat settings. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The authenticated principal must be a live organization member. Organization membership is a separate policy condition, not a grant capability.","Basic token credentials follow the grant branch, but email/password Basic credentials follow direct membership and cannot substitute for an owner."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugBilling","x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["Billing"],"summary":"Update billing settings","description":"Updates versioned organization billing and seat settings. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The authenticated principal must be a live organization owner. Organization membership is a separate policy condition, not a grant capability.","Basic token credentials follow the grant branch, but email/password Basic credentials follow direct membership and cannot substitute for an owner.","The expected billing version must match and configured billing limits still apply."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"maxSeats":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"overageEnabled":{"type":"boolean"},"overageSpendCapCents":{"type":["integer","null"],"minimum":0,"maximum":2147483647}},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"maxSeats":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"overageEnabled":{"type":"boolean"},"overageSpendCapCents":{"type":["integer","null"],"minimum":0,"maximum":2147483647}},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"maxSeats":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"overageEnabled":{"type":"boolean"},"overageSpendCapCents":{"type":["integer","null"],"minimum":0,"maximum":2147483647}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscription"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlugBilling","x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/billing/checkout":{"post":{"tags":["Billing"],"summary":"Start billing checkout","description":"Creates a Stripe Checkout session for the organization. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The authenticated principal must be a live organization owner. Organization membership is a separate policy condition, not a grant capability.","Basic token credentials follow the grant branch, but email/password Basic credentials follow direct membership and cannot substitute for an owner.","Stripe billing must be configured for the deployment."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["personal","team","premium"]},"successUrl":{"type":"string","format":"uri"},"cancelUrl":{"type":"string","format":"uri"}},"required":["plan"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["personal","team","premium"]},"successUrl":{"type":"string","format":"uri"},"cancelUrl":{"type":"string","format":"uri"}},"required":["plan"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["personal","team","premium"]},"successUrl":{"type":"string","format":"uri"},"cancelUrl":{"type":"string","format":"uri"}},"required":["plan"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSession"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugBillingCheckout","x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/billing/portal":{"post":{"tags":["Billing"],"summary":"Open the billing portal","description":"Creates a Stripe customer-portal session for the organization. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The authenticated principal must be a live organization owner. Organization membership is a separate policy condition, not a grant capability.","Basic token credentials follow the grant branch, but email/password Basic credentials follow direct membership and cannot substitute for an owner.","Stripe billing must be configured and the organization must already have a billing customer."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"returnUrl":{"type":"string","format":"uri"}},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"returnUrl":{"type":"string","format":"uri"}},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"returnUrl":{"type":"string","format":"uri"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSession"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugBillingPortal","x-gc2-ratelimit":{"policies":["api"]}}},"/api/webhooks/stripe":{"post":{"tags":["Billing"],"summary":"Receive a Stripe webhook","description":"Accepts a bounded Stripe event only when Stripe's raw-body signature verifies. The Stripe-Signature value is a computed signature over the unchanged request bytes, not an API key or GitCafe credential. Requires authenticated authority and enforces current resource policy.","security":[{"stripeSignature":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The deployment must have Stripe webhook verification configured, the raw body must be at most 1 MiB, and Stripe's signature must verify before the event is ingested idempotently."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"received":{"type":"boolean","const":true},"duplicate":{"type":"boolean"},"skipped":{"type":"boolean"},"reason":{"type":"string"}},"required":["received"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiWebhooksStripe"}},"/api/webhooks/buildkite/{integrationId}":{"post":{"tags":["CI"],"summary":"Receive a Buildkite webhook","description":"Accepts a bounded Buildkite event for one configured integration. X-Buildkite-Signature is a timestamped HMAC computed over the exact raw body, not an API key or GitCafe credential. Requires authenticated authority and enforces current resource policy.","security":[{"buildkiteSignature":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The integration must be active, the raw body must be at most 1 MiB, the timestamped signature must verify within its replay window, and the payload identity must match the configured integration."]},"parameters":[{"name":"integrationId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"skipped":{"type":"boolean"}},"required":["ok","skipped"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiWebhooksBuildkiteByIntegrationId"}},"/api/orgs/{slug}/teams/":{"get":{"summary":"List organization teams","description":"Lists teams visible to an organization member. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"read"},"target":"teams in the organization identified by slug"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugTeams","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a team","description":"Creates a team in an organization managed by the caller. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"prospective team in the organization identified by slug"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255},"visibility":{"default":"visible","type":"string","enum":["visible","secret"]},"parentTeam":{"$ref":"#/components/schemas/TeamId"}},"required":["handle","displayName"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255},"visibility":{"default":"visible","type":"string","enum":["visible","secret"]},"parentTeam":{"$ref":"#/components/schemas/TeamId"}},"required":["handle","displayName"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255},"visibility":{"default":"visible","type":"string","enum":["visible","secret"]},"parentTeam":{"$ref":"#/components/schemas/TeamId"}},"required":["handle","displayName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"orgId":{"$ref":"#/components/schemas/OrgId"},"handle":{"type":"string"},"displayName":{"type":"string"},"visibility":{"type":"string","enum":["visible","secret"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"parentTeamActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]}},"required":["id","actorId","orgId","handle","displayName","visibility","version","parentTeamActorId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugTeams","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/reparent":{"post":{"summary":"Reparent a team","description":"Moves a team within its organization's team hierarchy. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"parentTeam":{"anyOf":[{"$ref":"#/components/schemas/TeamId"},{"type":"null"}]}},"required":["expectedVersion","parentTeam"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"parentTeam":{"anyOf":[{"$ref":"#/components/schemas/TeamId"},{"type":"null"}]}},"required":["expectedVersion","parentTeam"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"parentTeam":{"anyOf":[{"$ref":"#/components/schemas/TeamId"},{"type":"null"}]}},"required":["expectedVersion","parentTeam"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":"string"},"visibility":{"type":"string","enum":["visible","secret"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"parentTeamActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]}},"required":["id","actorId","displayName","visibility","version","parentTeamActorId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugTeamsByTeamSlugReparent","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}":{"patch":{"summary":"Update a team","description":"Updates team metadata using optimistic concurrency. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"displayName":{"type":"string","minLength":1,"maxLength":255},"visibility":{"type":"string","enum":["visible","secret"]}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"displayName":{"type":"string","minLength":1,"maxLength":255},"visibility":{"type":"string","enum":["visible","secret"]}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"displayName":{"type":"string","minLength":1,"maxLength":255},"visibility":{"type":"string","enum":["visible","secret"]}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":"string"},"visibility":{"type":"string","enum":["visible","secret"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"parentTeamActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]}},"required":["id","actorId","displayName","visibility","version","parentTeamActorId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlugTeamsByTeamSlug","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete a team","description":"Deletes a team after checking its current hierarchy and assignments. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TeamId"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugTeamsByTeamSlug","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"get":{"summary":"Get a team","description":"Returns team metadata and the caller's available management actions. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"read"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugTeamsByTeamSlug","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/members":{"get":{"summary":"List team members","description":"Lists direct members of a team. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"membership","level":"read"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"}},"required":["actorId","handle","displayName","avatarUrl","role","version","createdAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugTeamsByTeamSlugMembers","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update a team member role","description":"Changes a direct team member's role. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"membership","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["actorId","role","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["actorId","role","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["actorId","role","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"}},"required":["actorId","role","version","createdAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlugTeamsByTeamSlugMembers","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/members/{actorId}":{"post":{"summary":"Add a team member","description":"Adds an organization member to a team with the requested role. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"membership","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"actorId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]}},"required":["role"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]}},"required":["role"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"}},"required":["actorId","role","version","createdAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugTeamsByTeamSlugMembersByActorId","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Remove a team member","description":"Removes a direct member from a team. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"membership","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization role, team membership or visibility, delegated parent authority, credential binding and resource state are enforced by team policy.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"actorId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["team-reader","team-triager","team-writer","team-maintainer"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"}},"required":["actorId","role","version","createdAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugTeamsByTeamSlugMembersByActorId","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/repos":{"get":{"summary":"List repositories assigned to a team","description":"Lists the repository roles assigned directly to the team. The caller must be able to read the team and its repository assignments. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"repositories","level":"read"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Current organization membership and team visibility or membership must permit the read; delegated grants retain their parent-authority ceiling."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"$ref":"#/components/schemas/TeamId"},"teamVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","private"]},"ledgerId":{"type":"string"},"role":{"type":"string","enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin"]}},"required":["repoId","name","visibility","ledgerId","role"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["teamId","teamVersion","items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugTeamsByTeamSlugRepos","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/repos/{repoId}":{"put":{"summary":"Set a team's repository role","description":"Assigns or changes the team's role on a repository. Team repository management and repository administration are both required on their distinct targets. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"repositories","level":"write"},"target":"the existing team identified by organization and team slugs"},{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the existing repository identified by the repoId path parameter"}],"conditions":["The caller and any delegator must still have management authority for the team and administrator rank on the unarchived repository; expected versions and ledger identity are fenced at the write."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"repoId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/RepoId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedTeamVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLedgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["expectedTeamVersion","expectedLedgerId","role"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedTeamVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLedgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["expectedTeamVersion","expectedLedgerId","role"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedTeamVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLedgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["expectedTeamVersion","expectedLedgerId","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"$ref":"#/components/schemas/TeamId"},"teamVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"repoId":{"$ref":"#/components/schemas/RepoId"},"ledgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["teamId","teamVersion","repoId","ledgerId","role"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiOrgsBySlugTeamsByTeamSlugReposByRepoId","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Remove a repository assignment from a team","description":"Removes the team's direct role on a repository. Team repository management and repository administration are both required on their distinct targets. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"repositories","level":"write"},"target":"the existing team identified by organization and team slugs"},{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the existing repository identified by the repoId path parameter"}],"conditions":["The caller and any delegator must still have management authority for the team and administrator rank on the unarchived repository; expected versions, ledger identity and fork-access safety are checked at the write."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"repoId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/RepoId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedTeamVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLedgerId":{"type":["string","null"]}},"required":["expectedTeamVersion","expectedLedgerId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedTeamVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLedgerId":{"type":["string","null"]}},"required":["expectedTeamVersion","expectedLedgerId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedTeamVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLedgerId":{"type":["string","null"]}},"required":["expectedTeamVersion","expectedLedgerId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"$ref":"#/components/schemas/TeamId"},"teamVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"repoId":{"$ref":"#/components/schemas/RepoId"},"ledgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["teamId","teamVersion","repoId","ledgerId","role"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugTeamsByTeamSlugReposByRepoId","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/rulesets":{"get":{"summary":"List team rulesets","description":"Lists rulesets owned by a team. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"read"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Team rulesets use team metadata policy: current organization and team management ceilings, delegated parent authority and resource state still apply."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugTeamsByTeamSlugRulesets","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a team ruleset","description":"Creates a ruleset owned by a team. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Team rulesets use team metadata policy: current organization and team management ceilings, delegated parent authority and resource state still apply.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugTeamsByTeamSlugRulesets","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/teams/{teamSlug}/rulesets/{ruleset}":{"get":{"summary":"Get a team ruleset","description":"Returns one team-owned ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"read"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Team rulesets use team metadata policy: current organization and team management ceilings, delegated parent authority and resource state still apply."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugTeamsByTeamSlugRulesetsByRuleset","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Update a team ruleset","description":"Updates a team-owned ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Team rulesets use team metadata policy: current organization and team management ceilings, delegated parent authority and resource state still apply.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiOrgsBySlugTeamsByTeamSlugRulesetsByRuleset","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete a team ruleset","description":"Deletes a team-owned ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"team","family":"metadata","level":"write"},"target":"the existing team identified by organization and team slugs"}],"conditions":["Team rulesets use team metadata policy: current organization and team management ceilings, delegated parent authority and resource state still apply.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"teamSlug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":319}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetMutation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugTeamsByTeamSlugRulesetsByRuleset","tags":["Teams"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/":{"get":{"summary":"List organizations","description":"Lists organizations available to the signed-in caller. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"read"},"target":"organizations in which the caller has current membership"}],"conditions":["Current organization role, delegated parent authority, credential binding and organization state are enforced."]},"parameters":[{"name":"purpose","in":"query","required":false,"schema":{"type":"string","const":"create-repository"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgs","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create an organization","description":"Creates an organization for a verified human. A grant must be independent, unbounded and admit prospective organization administration. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"administration","level":"admin"},"target":"prospective organization supplied in the request body"}],"conditions":["The actor must be a verified human; grants must be live, independent and unbounded."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255}},"required":["handle","displayName"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255}},"required":["handle","displayName"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255}},"required":["handle","displayName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgs","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}":{"get":{"summary":"Get an organization","description":"Returns organization details to a current member. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Current organization role, delegated parent authority, credential binding and organization state are enforced."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlug","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update an organization","description":"Updates organization settings using optimistic concurrency. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Current organization role, delegated parent authority, credential binding and organization state are enforced.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"basePermission":{"type":"string","enum":["none","read","write"]},"allowForking":{"type":"boolean"},"displayName":{"type":"string","minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"basePermission":{"type":"string","enum":["none","read","write"]},"allowForking":{"type":"boolean"},"displayName":{"type":"string","minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"basePermission":{"type":"string","enum":["none","read","write"]},"allowForking":{"type":"boolean"},"displayName":{"type":"string","minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSettings"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlug","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/settings":{"get":{"summary":"Get organization settings","description":"Returns organization settings to an administrator or owner. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Current organization role, delegated parent authority, credential binding and organization state are enforced."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSettings"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugSettings","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/avatar":{"put":{"summary":"Upload an organization avatar","description":"Stores a bounded raster avatar for an organization. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Current organization role, delegated parent authority, credential binding and organization state are enforced."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"expectedVersion","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSettings"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiOrgsBySlugAvatar","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/members/":{"get":{"summary":"List organization members","description":"Lists current organization members. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"read"},"target":"the existing organization identified by slug"}],"conditions":["Current membership role and delegated parent role are checked; writes also fence organization generation and owner/delegation safety."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"}},"required":["actorId","handle","displayName","avatarUrl","role","version","createdAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugMembers","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/members/{actorId}":{"delete":{"summary":"Remove an organization member","description":"Removes a member while preserving owner and delegation invariants. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Current membership role and delegated parent role are checked; writes also fence organization generation and owner/delegation safety."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"actorId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"removed":{"type":"boolean","const":true},"retiredRepositories":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["actorId","removed","retiredRepositories"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugMembersByActorId","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update an organization member","description":"Changes a member's organization role. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Current membership role and delegated parent role are checked; writes also fence organization generation and owner/delegation safety."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"actorId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["role","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["role","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["role","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]},"version":{"type":"integer","minimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time"}},"required":["actorId","role","version","createdAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiOrgsBySlugMembersByActorId","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/invitations/":{"get":{"summary":"List organization invitations","description":"Lists pending invitations for an organization administrator. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/Invitation"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugInvitations","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create an organization invitation","description":"Creates an invitation and schedules its email delivery. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"actor"},"actorId":{"$ref":"#/components/schemas/ActorId"}},"required":["kind","actorId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"email"},"email":{"type":"string"}},"required":["kind","email"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"role":{"default":"org-member-read","type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]}},"required":["target"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"actor"},"actorId":{"$ref":"#/components/schemas/ActorId"}},"required":["kind","actorId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"email"},"email":{"type":"string"}},"required":["kind","email"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"role":{"default":"org-member-read","type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]}},"required":["target"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"actor"},"actorId":{"$ref":"#/components/schemas/ActorId"}},"required":["kind","actorId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"email"},"email":{"type":"string"}},"required":["kind","email"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"role":{"default":"org-member-read","type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]}},"required":["target"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invitation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugInvitations","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/invitations/{invitation}":{"delete":{"summary":"Revoke an organization invitation","description":"Revokes a pending organization invitation. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"org","family":"membership","level":"write"},"target":"the existing organization identified by slug"}],"conditions":["Organization administrator or owner role, delegated parent authority, credential binding and current organization state are required."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"invitation","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invitation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOrgsBySlugInvitationsByInvitation","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/invitations/accept":{"post":{"summary":"Accept an organization invitation","description":"Accepts an invitation for the authenticated human represented by the supplied token. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The credential must represent a live human; a grant must be a human bearer grant. The invitation token, intended recipient, organization state and seat availability are validated."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["token"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["token"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"$ref":"#/components/schemas/OrgId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"role":{"type":"string","enum":["org-owner","org-admin","org-member-read","org-member-write","org-member-none","org-outside-collaborator"]}},"required":["orgId","actorId","role"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugInvitationsAccept","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/orgs/{slug}/closure":{"get":{"summary":"Get organization closure status","description":"Returns blockers that prevent an organization owner from closing the organization.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The session actor must be a current organization owner."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"blockers":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["personal-repositories","retained-repository-storage","organization-memberships","sole-owner-organizations","repositories","pending-repository-work","paid-subscription","personal-namespace"]},"count":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"href":{"type":"string","pattern":"^\\/.*"},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["kind","count","href","message"],"additionalProperties":false}}},"required":["handle","version","blockers"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOrgsBySlugClosure","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Close an organization","description":"Closes an eligible organization after a recent human confirmation and exact-generation checks.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The session actor must be a current organization owner.","Closure additionally requires no reported blockers and fences organization generation and owner authority."]},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","maxLength":39}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96},"confirmation":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","confirmation","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96},"confirmation":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","confirmation","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96},"confirmation":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","confirmation","expectedVersion"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOrgsBySlugClosure","tags":["Organizations"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/setup":{"get":{"tags":["GitHub"],"summary":"Get GitHub App setup","description":"Returns instance-configured GitHub App installation setup for the signed-in user.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","GitHub App installation must be configured."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"installUrl":{"type":"string","format":"uri","pattern":"^https:\\/\\/github\\.com\\/apps\\/.*"},"manageUrl":{"type":"string","const":"https://github.com/settings/installations"}},"required":["installUrl","manageUrl"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubSetup","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/installations":{"get":{"tags":["GitHub"],"summary":"List GitHub installations","description":"Lists GitHub App installations visible to the linked GitHub identity.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","GitHub account linking must be configured and the provider authorization must remain current."]},"parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"account":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255},"type":{"type":"string","enum":["User","Organization"]}},"required":["id","login","type"],"additionalProperties":false},"repositorySelection":{"type":"string","enum":["all","selected"]},"permissions":{"type":"object","propertyNames":{"type":"string","maxLength":100},"additionalProperties":{"type":"string","enum":["read","write","admin"]}},"suspendedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","account","repositorySelection","permissions","suspendedAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubInstallations","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/installations/{installationId}/repositories":{"get":{"tags":["GitHub"],"summary":"List installation repositories","description":"Lists repositories visible through one linked GitHub App installation.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The installation must be visible to the linked identity."]},"parameters":[{"name":"installationId","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":255},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":255}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"},"archived":{"type":"boolean"},"fork":{"type":"boolean"},"defaultBranch":{"type":"string","minLength":1,"maxLength":255},"size":{"type":"integer","minimum":0,"maximum":8796093022207},"permissions":{"type":"object","properties":{"pull":{"type":"boolean"},"push":{"type":"boolean"},"admin":{"type":"boolean"},"maintain":{"type":"boolean"},"triage":{"type":"boolean"}},"required":["pull","push","admin"],"additionalProperties":false}},"required":["id","name","owner","private","archived","fork","defaultBranch","permissions"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubInstallationsByInstallationIdRepositories","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/status":{"get":{"tags":["GitHub"],"summary":"Get GitHub connection status","description":"Returns the signed-in user's GitHub connection status without provider secrets.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Provider configuration may be absent, which is reported as status rather than authority."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"anyOf":[{"type":"object","properties":{"providerId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":["string","null"],"minLength":1,"maxLength":255},"state":{"type":"string","enum":["linked","expired","revoked","unavailable"]}},"required":["providerId","login","state"],"additionalProperties":false},{"type":"null"}]}},"required":["connection"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubStatus","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/connect":{"post":{"tags":["GitHub"],"summary":"Start GitHub account linking","description":"Creates a state-bound GitHub authorization URL for linking the current account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","GitHub account linking must be configured; any stale signup-binding cookie is cleared."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authorizationUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["authorizationUrl","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiGithubConnect","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/repositories/verify":{"post":{"tags":["GitHub"],"summary":"Verify GitHub repository access","description":"Checks that the linked identity and selected installation grant access to one GitHub repository.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The repository and installation identities must match live provider data and required provider permissions."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["installationId","repositoryId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["installationId","repositoryId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["installationId","repositoryId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"githubUserId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"installationPermissions":{"type":"object","propertyNames":{"type":"string","maxLength":100},"additionalProperties":{"type":"string","enum":["read","write","admin"]}},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repository":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"node_id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"},"owner":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9_.-]+$"}},"required":["login"],"additionalProperties":false},"private":{"type":"boolean"},"archived":{"type":"boolean"},"fork":{"type":"boolean"},"default_branch":{"type":"string","minLength":1,"maxLength":255},"size":{"type":"integer","minimum":0,"maximum":8796093022207},"permissions":{"type":"object","properties":{"pull":{"type":"boolean"},"push":{"type":"boolean"},"admin":{"type":"boolean"},"maintain":{"type":"boolean"},"triage":{"type":"boolean"}},"required":["pull","push","admin"],"additionalProperties":false}},"required":["id","node_id","name","owner","private","archived","fork","default_branch","permissions"],"additionalProperties":false},"permission":{"type":"string","enum":["read","write","admin"]},"importAdmission":{"oneOf":[{"type":"object","properties":{"admitted":{"type":"boolean","const":true},"sizeBytes":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"importMaxBytes":{"type":"integer","minimum":67108864,"maximum":26843545600}},"required":["admitted","sizeBytes","importMaxBytes"],"additionalProperties":false},{"type":"object","properties":{"admitted":{"type":"boolean","const":false},"reason":{"type":"string","enum":["size-unsupported","size-exceeds-ceiling"]},"sizeBytes":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"ceilingBytes":{"type":"integer","const":26843545600}},"required":["admitted","reason","sizeBytes","ceilingBytes"],"additionalProperties":false}]}},"required":["githubUserId","installationPermissions","installationId","repository","permission","importAdmission"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiGithubRepositoriesVerify","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/callback":{"get":{"tags":["GitHub"],"summary":"Complete a GitHub authorization callback","description":"Completes either signup migration using the gc-github-signup binding cookie or account relinking using a current browser session. GitCafe does not treat the GitHub callback as OAuth authentication to the API. Requires authenticated authority and enforces current resource policy.","security":[{"githubSignupBinding":[]},{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The callback state and provider authorization must match. The signup-cookie and relink-session branches are alternatives, not cumulative requirements; HTML relink callbacks with a lost session redirect without linking."]},"parameters":[{"name":"state","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},{"name":"code","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024}},{"name":"iss","in":"query","required":false,"schema":{"type":"string","const":"https://github.com/login/oauth"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"connected":{"type":"boolean","const":true},"providerId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255},"renewals":{"default":[],"maxItems":25,"type":"array","items":{"oneOf":[{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","const":"renewed"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["repoId","state","version"],"additionalProperties":false},{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","const":"blocked"},"code":{"type":"string","minLength":1,"maxLength":64}},"required":["repoId","state","code"],"additionalProperties":false}],"discriminator":{"propertyName":"state"}}}},"required":["connected","providerId","login","renewals"],"additionalProperties":false},{"type":"object","properties":{"ready":{"type":"boolean","const":true}},"required":["ready"],"additionalProperties":false}]}}}},"303":{"description":"Response for status 303","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"ready":{"type":"boolean","const":false}},"required":["ready"],"additionalProperties":false},{"type":"object","properties":{"connected":{"type":"boolean","const":true},"providerId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"login":{"type":"string","minLength":1,"maxLength":255},"renewals":{"default":[],"maxItems":25,"type":"array","items":{"oneOf":[{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","const":"renewed"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["repoId","state","version"],"additionalProperties":false},{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","const":"blocked"},"code":{"type":"string","minLength":1,"maxLength":64}},"required":["repoId","state","code"],"additionalProperties":false}],"discriminator":{"propertyName":"state"}}}},"required":["connected","providerId","login","renewals"],"additionalProperties":false},{"type":"object","properties":{"ready":{"type":"boolean","const":true}},"required":["ready"],"additionalProperties":false}]}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubCallback","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/imports":{"post":{"tags":["GitHub"],"summary":"Start a GitHub repository import","description":"Admits durable import work from a verified GitHub App installation into a new or exact existing repository.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Linked GitHub provider authority is required.","Destination creation or maintenance authority, provider repository permission, size limits, sync direction, request idempotency, and any retained native authority are checked."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","maxLength":104},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"syncMode":{"type":"string","enum":["read-only","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"existingRepoId":{"$ref":"#/components/schemas/RepoId"}},"required":["requestId","owner","name","installationId","repositoryId","syncMode"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","maxLength":104},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"syncMode":{"type":"string","enum":["read-only","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"existingRepoId":{"$ref":"#/components/schemas/RepoId"}},"required":["requestId","owner","name","installationId","repositoryId","syncMode"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","maxLength":104},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"syncMode":{"type":"string","enum":["read-only","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"existingRepoId":{"$ref":"#/components/schemas/RepoId"}},"required":["requestId","owner","name","installationId","repositoryId","syncMode"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubImportOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiGithubImports","x-gc2-ratelimit":{"policies":["api"]}},"get":{"tags":["GitHub"],"summary":"List GitHub imports","description":"Lists imports owned by the signed-in account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Linked GitHub provider authority is required.","Only imports associated with the current session's account are returned."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GithubImportOperation"}}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubImports","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/imports/{id}":{"get":{"tags":["GitHub"],"summary":"Get a GitHub import","description":"Returns one import operation owned by the signed-in account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Linked GitHub provider authority is required.","The import request identity and owner must match."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubImportOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubImportsById","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/imports/{id}/resume":{"post":{"tags":["GitHub"],"summary":"Resume a GitHub import","description":"Resumes recoverable durable import work without changing its retained intent.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Linked GitHub provider authority is required.","The import must belong to the account and be in a resumable state; retained repository and provider authority are revalidated."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubImportOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiGithubImportsByIdResume","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/signup/start":{"post":{"tags":["GitHub"],"summary":"Start GitHub signup migration","description":"Creates a state-bound GitHub authorization URL and the short-lived gc-github-signup binding cookie.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["This starts an anonymous migration intent; GitHub linking must be configured and any supplied GitCafe credential does not authorize the new account."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authorizationUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["authorizationUrl","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"type":"object","properties":{"type":{"type":"string","const":"https://cafe.sh/errors/github-signup-account-conflict"},"title":{"type":"string","const":"GitHub account already linked"},"status":{"type":"integer","const":409},"detail":{"type":"string","const":"This GitHub account is already linked to a GitCafe account. Sign in to your existing account, then reconnect GitHub."}},"required":["type","title","status","detail"],"additionalProperties":false}]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiGithubSignupStart","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/signup/check":{"get":{"tags":["GitHub"],"summary":"Check GitHub signup binding","description":"Checks that the browser's signup-binding cookie still refers to a pending migration. Requires authenticated authority and enforces current resource policy.","security":[{"githubSignupBinding":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The gc-github-signup cookie must identify a live pending intent; it is a flow binding, not a GitCafe login."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"type":"boolean","const":true}},"required":["pending"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"type":"object","properties":{"type":{"type":"string","const":"https://cafe.sh/errors/github-signup-account-conflict"},"title":{"type":"string","const":"GitHub account already linked"},"status":{"type":"integer","const":409},"detail":{"type":"string","const":"This GitHub account is already linked to a GitCafe account. Sign in to your existing account, then reconnect GitHub."}},"required":["type","title","status","detail"],"additionalProperties":false}]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubSignupCheck","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/signup":{"get":{"tags":["GitHub"],"summary":"Get GitHub signup status","description":"Returns migration readiness after the callback has bound provider identity to the pending flow. Requires authenticated authority and enforces current resource policy.","security":[{"githubSignupBinding":[]},{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A valid signup binding identifies the flow; any current session is evaluated to prevent creating a second account for an existing identity."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"profile":{"type":"object","properties":{"login":{"type":"string","minLength":1,"maxLength":255},"handle":{"type":"string","maxLength":39},"email":{"type":["string","null"],"minLength":1,"maxLength":320},"displayName":{"type":"string","minLength":1,"maxLength":255},"emailVerified":{"type":"boolean"},"avatarUrl":{"type":["string","null"],"pattern":"^\\/avatars\\/(?:v1\\/)?[a-f0-9]{64}$"}},"required":["login","handle","email","displayName","emailVerified","avatarUrl"],"additionalProperties":false},"expiresAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["profile","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"type":"object","properties":{"type":{"type":"string","const":"https://cafe.sh/errors/github-signup-account-conflict"},"title":{"type":"string","const":"GitHub account already linked"},"status":{"type":"integer","const":409},"detail":{"type":"string","const":"This GitHub account is already linked to a GitCafe account. Sign in to your existing account, then reconnect GitHub."}},"required":["type","title","status","detail"],"additionalProperties":false}]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiGithubSignup","x-gc2-ratelimit":{"policies":["api"]}}},"/api/github/signup/complete":{"post":{"tags":["GitHub"],"summary":"Complete GitHub signup migration","description":"Creates the migrated account, issues a browser session, and clears the gc-github-signup cookie. Requires authenticated authority and enforces current resource policy.","security":[{"githubSignupBinding":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The signup binding, callback result, selected account data, and provider authority must match; an already authenticated identity cannot create another account."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":12,"maxLength":1024},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255},"avatar":{"default":"github","type":"string","enum":["github","none"]}},"required":["email","password","handle","displayName"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":12,"maxLength":1024},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255},"avatar":{"default":"github","type":"string","enum":["github","none"]}},"required":["email","password","handle","displayName"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":12,"maxLength":1024},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255},"avatar":{"default":"github","type":"string","enum":["github","none"]}},"required":["email","password","handle","displayName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authenticated":{"type":"boolean","const":true},"expiresAt":{"type":"string","format":"date-time"}},"required":["authenticated","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"type":"object","properties":{"type":{"type":"string","const":"https://cafe.sh/errors/github-signup-account-conflict"},"title":{"type":"string","const":"GitHub account already linked"},"status":{"type":"integer","const":409},"detail":{"type":"string","const":"This GitHub account is already linked to a GitCafe account. Sign in to your existing account, then reconnect GitHub."}},"required":["type","title","status","detail"],"additionalProperties":false}]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiGithubSignupComplete","x-gc2-ratelimit":{"policies":["api"]}}},"/api/users/{handle}/starred":{"get":{"tags":["Repositories"],"summary":"List a user’s starred repositories","description":"Returns repositories starred by the named user that are visible to the authenticated actor, with at most 50 per page. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A verified actor is required."]},"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,99}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoCollectionPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiUsersByHandleStarred","x-gc2-ratelimit":{"policies":["api"]}}},"/api/explore/owners/{handle}":{"get":{"tags":["Users","Organizations"],"summary":"Get a public owner profile","description":"Returns the named user or organization’s publicly visible profile using anonymous authority.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Uses anonymous authority regardless of supplied credentials."]},"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,99}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOwnerProfile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiExploreOwnersByHandle","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos":{"get":{"summary":"List accessible repositories","description":"Returns repositories visible to the authenticated actor, optionally filtered by owner or search text, with at most 50 per page. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A verified actor is required."]},"parameters":[{"name":"affiliation","in":"query","required":false,"schema":{"type":"string","const":"member"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":100}},{"name":"topic","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},{"name":"visibility","in":"query","required":false,"schema":{"type":"string","enum":["public","private"]}},{"name":"starredBy","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoCollectionPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiRepos","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/explore/repos":{"get":{"summary":"Explore public repositories","description":"Returns a paginated public repository listing. This endpoint uses anonymous authority even when credentials are supplied; signing in does not expand its results.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Only repositories admitted by public exploration policy are returned."]},"parameters":[{"name":"topic","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoCollectionPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiExploreRepos","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/device/code":{"post":{"tags":["Authentication"],"summary":"Request a device code","description":"Starts a public device-authorization request for a bounded set of requested capabilities.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Requested scopes and selectors must be valid; this step does not authenticate a user or issue a grant."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scopes":{"$ref":"#/components/schemas/ScopeSet"}},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"scopes":{"$ref":"#/components/schemas/ScopeSet"}},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"scopes":{"$ref":"#/components/schemas/ScopeSet"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"device_code":{"type":"string","pattern":"^[0-9a-f]{64}$"},"user_code":{"type":"string"},"verification_uri":{"type":"string","format":"uri"},"verification_uri_complete":{"type":"string","format":"uri"},"expires_in":{"type":"integer","const":600},"interval":{"type":"integer","const":5}},"required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiDeviceCode","x-gc2-ratelimit":{"policies":["api"]}}},"/api/device/consent":{"get":{"summary":"Preview requested device permissions","description":"Shows the pending device request without approving it. Requires a live browser session with recent identity confirmation and any required MFA. Bearer tokens and Basic credentials cannot satisfy this requirement; confirm your identity in the browser before retrying.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The device code must identify an unexpired pending request. Preview does not grant consent."]},"parameters":[{"name":"user_code","in":"query","required":true,"schema":{"type":"string","maxLength":12}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"user_code":{"type":"string"},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"expires_at":{"type":"string","format":"date-time"}},"required":["user_code","scopes","expires_at"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiDeviceConsent","tags":["Authentication"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/device/authorize":{"post":{"tags":["Authentication"],"summary":"Approve or deny a device request","description":"Records consent for a pending device request after recent browser identity confirmation; it does not accept grant credentials.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The device code must identify an unexpired pending request, and approved scopes remain bounded by the displayed request."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_code":{"type":"string","maxLength":12},"decision":{"type":"string","enum":["approve","deny"]},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"credentialManagement":{"type":"boolean"},"profileManagement":{"type":"boolean"}},"required":["user_code","decision"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"user_code":{"type":"string","maxLength":12},"decision":{"type":"string","enum":["approve","deny"]},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"credentialManagement":{"type":"boolean"},"profileManagement":{"type":"boolean"}},"required":["user_code","decision"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"user_code":{"type":"string","maxLength":12},"decision":{"type":"string","enum":["approve","deny"]},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"credentialManagement":{"type":"boolean"},"profileManagement":{"type":"boolean"}},"required":["user_code","decision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["approved","denied"]}},"required":["status"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiDeviceAuthorize","x-gc2-ratelimit":{"policies":["api"]}}},"/api/device/token":{"post":{"tags":["Authentication"],"summary":"Poll for a device grant","description":"Exchanges a completed device authorization for a token; pending, denied, expired, and replayed requests remain errors.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The device code and verifier must match an approved, unexpired request. No existing GitCafe credential authorizes this exchange."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"device_code":{"type":"string","pattern":"^[0-9a-f]{64}$"},"grant_type":{"type":"string","const":"urn:ietf:params:oauth:grant-type:device_code"}},"required":["device_code"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"device_code":{"type":"string","pattern":"^[0-9a-f]{64}$"},"grant_type":{"type":"string","const":"urn:ietf:params:oauth:grant-type:device_code"}},"required":["device_code"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"device_code":{"type":"string","pattern":"^[0-9a-f]{64}$"},"grant_type":{"type":"string","const":"urn:ietf:params:oauth:grant-type:device_code"}},"required":["device_code"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string","pattern":"^gct_[a-f0-9]{64}$"},"token_type":{"type":"string","const":"Bearer"},"expires_in":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scope":{"$ref":"#/components/schemas/ScopeSet"}},"required":["access_token","token_type","expires_in","scope"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"error":{"type":"string","enum":["authorization_pending","slow_down","access_denied","expired_token","invalid_grant"]},"interval":{"type":"integer","minimum":5,"maximum":600}},"required":["error"],"additionalProperties":false},{"$ref":"#/components/schemas/ValidationProblem"}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"410":{"description":"Response for status 410","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":410}},"required":["type","title","detail","status"],"additionalProperties":false}}}},"428":{"description":"Response for status 428","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","pattern":"^(https:\\/\\/cafe\\.sh\\/errors\\/)[\\s\\S]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":128},"detail":{"type":"string","minLength":1,"maxLength":1024},"status":{"type":"integer","const":428}},"required":["type","title","detail","status"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiDeviceToken","x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/authorize":{"get":{"tags":["OAuth"],"summary":"Start OAuth authorization","description":"Validates a registered client, exact redirect URI, resource indicator and PKCE request, then redirects to same-origin browser consent. Local failures never redirect to caller input.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"parameters":[{"name":"response_type","in":"query","required":true,"schema":{"type":"string","const":"code"}},{"name":"client_id","in":"query","required":true,"schema":{"anyOf":[{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"string","maxLength":2048,"format":"uri"}]}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","maxLength":2048,"format":"uri"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","maxLength":2048}},{"name":"state","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"code_challenge","in":"query","required":true,"schema":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"code_challenge_method","in":"query","required":true,"schema":{"type":"string","const":"S256"}},{"name":"resource","in":"query","required":true,"schema":{"type":"string","maxLength":2048,"format":"uri"}}],"responses":{"302":{"description":"Response for status 302","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_client","invalid_grant","invalid_target","invalid_scope","unsupported_grant_type"]},"error_description":{"type":"string"}},"required":["error"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"getApiOauthAuthorize","x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/register":{"post":{"tags":["OAuth"],"summary":"Register an OAuth client","description":"Registers a public OAuth client. Client metadata management is not advertised until it is configured.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"client_name":{"type":"string","minLength":1,"maxLength":100},"redirect_uris":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","maxLength":2048,"format":"uri"}},"application_type":{"default":"web","type":"string","enum":["web","native"]},"token_endpoint_auth_method":{"default":"none","type":"string","const":"none"},"grant_types":{"default":["authorization_code"],"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["authorization_code","refresh_token"]}},"response_types":{"default":["code"],"type":"array","prefixItems":[{"type":"string","const":"code"}],"items":false,"minItems":1,"maxItems":1},"client_id":{"anyOf":[{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"string","maxLength":2048,"format":"uri"}]},"client_id_issued_at":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["client_name","redirect_uris","application_type","token_endpoint_auth_method","grant_types","response_types","client_id","client_id_issued_at"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_client","invalid_grant","invalid_target","invalid_scope","unsupported_grant_type"]},"error_description":{"type":"string"}},"required":["error"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"postApiOauthRegister","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"client_name":{"type":"string","minLength":1,"maxLength":100},"redirect_uris":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","maxLength":2048,"format":"uri"}},"application_type":{"default":"web","type":"string","enum":["web","native"]},"token_endpoint_auth_method":{"default":"none","type":"string","const":"none"},"grant_types":{"default":["authorization_code"],"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["authorization_code","refresh_token"]}},"response_types":{"default":["code"],"type":"array","prefixItems":[{"type":"string","const":"code"}],"items":false,"minItems":1,"maxItems":1}},"required":["client_name","redirect_uris"]}}}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/token":{"post":{"tags":["OAuth"],"summary":"Exchange an OAuth grant","description":"Exchanges an authorization code with PKCE, or rotates a refresh token, for a bearer token bound to the requested API or MCP resource.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","const":"Bearer"},"expires_in":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"refresh_token":{"type":"string"},"scope":{"type":"string"},"resource":{"type":"string","maxLength":2048,"format":"uri"}},"required":["access_token","token_type","expires_in","refresh_token","scope","resource"],"additionalProperties":false},{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","const":"Bearer"},"expires_in":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scope":{"type":"string"},"resource":{"type":"string","format":"uri"},"identity_assertion":{"type":"string"},"assertion_expires":{"type":"string","format":"date-time"}},"required":["access_token","token_type","expires_in","scope","resource"],"additionalProperties":false}]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_client","invalid_grant","invalid_target","invalid_scope","unsupported_grant_type"]},"error_description":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_login_hint","issuer_not_enabled","invalid_claim_token","claimed_or_in_flight","claim_expired","rate_limited","invalid_grant","invalid_target","expired_token","authorization_pending","access_denied","slow_down","anonymous_not_enabled"]}},"required":["error"],"additionalProperties":false}]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"postApiOauthToken","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"anyOf":[{"type":"object","properties":{"grant_type":{"type":"string","const":"authorization_code"},"code":{"type":"string","minLength":1},"client_id":{"type":"string","minLength":1},"redirect_uri":{"type":"string","minLength":1},"code_verifier":{"type":"string","pattern":"^[A-Za-z0-9._~-]{43,128}$"},"resource":{"type":"string"}},"required":["grant_type","code","client_id","redirect_uri","code_verifier","resource"]},{"type":"object","properties":{"grant_type":{"type":"string","const":"refresh_token"},"refresh_token":{"type":"string","minLength":1},"client_id":{"type":"string","minLength":1},"resource":{"type":"string"}},"required":["grant_type","refresh_token","client_id","resource"]},{"type":"object","properties":{"grant_type":{"type":"string","const":"urn:ietf:params:oauth:grant-type:jwt-bearer"},"assertion":{"type":"string","minLength":1},"resource":{"type":"string"}},"required":["grant_type","assertion"]},{"type":"object","properties":{"grant_type":{"type":"string","const":"urn:workos:agent-auth:grant-type:claim"},"claim_token":{"type":"string","pattern":"^clm_[A-Za-z0-9_-]{43}$"},"resource":{"type":"string"}},"required":["grant_type","claim_token"]}],"discriminator":{"propertyName":"grant_type"}}}}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/revoke":{"post":{"tags":["OAuth"],"summary":"Revoke an OAuth token","description":"Revokes the submitted access or refresh token without disclosing whether it was active.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Protocol inputs, registered redirect URIs, PKCE, exact issuer and resource indicators are validated before credentials are issued or revoked."]},"responses":{"200":{"description":"Response for status 200"},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_client","invalid_grant","invalid_target","invalid_scope","unsupported_grant_type"]},"error_description":{"type":"string"}},"required":["error"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"postApiOauthRevoke","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"token":{"type":"string"},"client_id":{"type":"string"}},"required":["token"]}}}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/consent":{"get":{"tags":["OAuth"],"summary":"Preview OAuth consent","description":"Returns the registered client and requested access for same-origin human review.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","A same-origin browser request, CSRF proof where applicable, and current recent-human session authority are required."]},"parameters":[{"name":"request_id","in":"query","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"client":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"string","maxLength":2048,"format":"uri"}]},"name":{"type":"string"},"redirectUri":{"type":"string","maxLength":2048,"format":"uri"}},"required":["id","name","redirectUri"],"additionalProperties":false},"resource":{"type":"string","maxLength":2048,"format":"uri"},"scopes":{"type":"array","items":{"type":"string","maxLength":64}},"expiresAt":{"type":"string","format":"date-time"},"connectionLifetimeSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"csrfToken":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["requestId","client","resource","scopes","expiresAt","connectionLifetimeSeconds","csrfToken"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOauthConsent","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["OAuth"],"summary":"Decide OAuth consent","description":"Approves or denies a pending authorization request using its CSRF proof and current human authority.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","A same-origin browser request, CSRF proof where applicable, and current recent-human session authority are required."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"decision":{"type":"string","enum":["approve","deny"]},"repositoryIds":{"maxItems":50,"type":"array","items":{"type":"string"}},"scopes":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":64}},"csrfToken":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["requestId","decision","repositoryIds","scopes","csrfToken"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"decision":{"type":"string","enum":["approve","deny"]},"repositoryIds":{"maxItems":50,"type":"array","items":{"type":"string"}},"scopes":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":64}},"csrfToken":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["requestId","decision","repositoryIds","scopes","csrfToken"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"decision":{"type":"string","enum":["approve","deny"]},"repositoryIds":{"maxItems":50,"type":"array","items":{"type":"string"}},"scopes":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":64}},"csrfToken":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["requestId","decision","repositoryIds","scopes","csrfToken"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"redirectUri":{"type":"string","maxLength":2048,"format":"uri"}},"required":["redirectUri"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiOauthConsent","x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/connections":{"get":{"tags":["OAuth"],"summary":"List authorized OAuth clients","description":"Lists the current user's active OAuth client authorizations.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","A same-origin browser request, CSRF proof where applicable, and current recent-human session authority are required."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"client":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"string","maxLength":2048,"format":"uri"}]},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"resource":{"type":"string","maxLength":2048,"format":"uri"},"scopes":{"type":"array","items":{"type":"string","maxLength":64}},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"name":{"type":"string"}},"required":["id","owner","name"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","client","resource","scopes","repositories","createdAt","expiresAt","lastUsedAt"],"additionalProperties":false}}},"required":["connections"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiOauthConnections","x-gc2-ratelimit":{"policies":["api"]}}},"/api/oauth/connections/{id}":{"delete":{"tags":["OAuth"],"summary":"Revoke an authorized OAuth client","description":"Revokes one current OAuth client authorization and its associated credentials.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","A same-origin browser request, CSRF proof where applicable, and current recent-human session authority are required."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiOauthConnectionsById","x-gc2-ratelimit":{"policies":["api"]}}},"/api/agent/identity":{"post":{"tags":["OAuth"],"summary":"Start user-claimed agent registration","description":"Accepts service_auth and a login_hint email; returns a claim ceremony without credentials. Anonymous and provider-attested registrations are disabled.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Bounded service_auth registration; no access before verified-user code confirmation and repository consent."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"registration_id":{"type":"string"},"registration_type":{"type":"string","const":"service_auth"},"claim_url":{"type":"string","format":"uri"},"claim_token":{"type":"string","minLength":32,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"claim_token_expires":{"type":"string","format":"date-time"},"post_claim_scopes":{"type":"array","items":{"type":"string","maxLength":64}},"claim":{"type":"object","properties":{"user_code":{"type":"string"},"expires_in":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"verification_uri":{"type":"string","format":"uri"},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["user_code","expires_in","verification_uri","interval"],"additionalProperties":false}},"required":["registration_id","registration_type","claim_url","claim_token","claim_token_expires","post_claim_scopes","claim"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request","invalid_login_hint","issuer_not_enabled","invalid_claim_token","claimed_or_in_flight","claim_expired","rate_limited","invalid_grant","invalid_target","expired_token","authorization_pending","access_denied","slow_down","anonymous_not_enabled"]}},"required":["error"],"additionalProperties":false}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAgentIdentity","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","const":"service_auth"},"login_hint":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["type","login_hint"],"additionalProperties":false}}}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/agent/identity/confirm":{"post":{"tags":["OAuth"],"summary":"Confirm an agent's user code","description":"Validates a signed-in user's code and email binding, then returns the local repository-consent URL. This does not grant access by itself.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Same-origin, verified matching email and a valid bounded code attempt are required before repository consent."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"claim_attempt_token":{"type":"string","minLength":32,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"user_code":{"type":"string","pattern":"^\\d{6}$"}},"required":["claim_attempt_token","user_code"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"redirectUri":{"type":"string","format":"uri"}},"required":["redirectUri"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAgentIdentityConfirm","x-gc2-ratelimit":{"policies":["api"]}}},"/api/attachments/{attachment}":{"get":{"responses":{"200":{"description":"Attachment bytes.","headers":{"Content-Type":{"schema":{"type":"string"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Content-Disposition":{"schema":{"type":"string"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"Content-Security-Policy":{"schema":{"type":"string"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"tags":["Attachments"],"summary":"Read an attachment by its stable ID","description":"Streams an authorized attachment through its repository-independent stable ID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"read"},"target":"the repository that owns the attachment identified by stable ID"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getApiAttachmentsByAttachment","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/principal":{"get":{"tags":["Authentication"],"summary":"Get the authenticated principal","description":"Returns the principal represented by a current session or grant. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The credential must resolve to a live principal. Basic may contain either email/password session evidence or a token grant."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]}},"required":["actorId","handle","displayName","avatarUrl"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthPrincipal","x-gc2-ratelimit":{"policies":["api"]}}},"/api/user/profile":{"get":{"tags":["Users"],"summary":"Read your grant-managed profile","description":"Returns profile metadata through a separately consented profile-management grant. Requires authenticated authority and enforces current resource policy.","security":[{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"profile","family":"metadata","level":"read"},"target":"the authenticated user's existing profile"}],"conditions":["Only an unbounded, live root human grant is accepted. A browser session, including email/password Basic authentication, cannot use these grant-management endpoints; Basic works only when its password is a qualifying token."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiUserProfile","x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["Users"],"summary":"Update your grant-managed profile","description":"Updates profile metadata with an exact actor and version fence. Requires authenticated authority and enforces current resource policy.","security":[{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"profile","family":"metadata","level":"write"},"target":"the authenticated user's existing profile"}],"conditions":["Only an unbounded, live root human grant is accepted. A browser session, including email/password Basic authentication, cannot use these grant-management endpoints; Basic works only when its password is a qualifying token.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","The expected actor, when supplied, and expected profile version must still match."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiUserProfile","x-gc2-ratelimit":{"policies":["api"]}}},"/api/user/pins":{"get":{"tags":["Users"],"summary":"List your grant-managed profile pins","description":"Returns the authenticated profile's visible pinned repositories. Requires authenticated authority and enforces current resource policy.","security":[{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"profile","family":"pins","level":"read"},"target":"the authenticated user's existing profile"}],"conditions":["Only an unbounded, live root human grant is accepted. A browser session, including email/password Basic authentication, cannot use these grant-management endpoints; Basic works only when its password is a qualifying token.","Pinned repositories not readable by the authenticated principal are omitted."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","pattern":"^[a-z0-9._-]{1,100}$"},"id":{"$ref":"#/components/schemas/RepoId"},"visibility":{"type":"string","enum":["public","private"]}},"required":["owner","name","id","visibility"],"additionalProperties":false}}},"required":["actorId","version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiUserPins","x-gc2-ratelimit":{"policies":["api"]}},"put":{"tags":["Users"],"summary":"Replace your grant-managed profile pins","description":"Atomically replaces profile pins after checking profile and repository authority. Requires authenticated authority and enforces current resource policy.","security":[{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"profile","family":"pins","level":"write"},"target":"the authenticated user's existing profile"}],"conditions":["Only an unbounded, live root human grant is accepted. A browser session, including email/password Basic authentication, cannot use these grant-management endpoints; Basic works only when its password is a qualifying token.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","The expected actor and profile version must match, and every requested repository must be readable by the authenticated principal."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"repositories":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","maxLength":104}},"required":["owner","name"],"additionalProperties":false}}},"required":["expectedActorId","expectedVersion","repositories"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"repositories":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","maxLength":104}},"required":["owner","name"],"additionalProperties":false}}},"required":["expectedActorId","expectedVersion","repositories"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"repositories":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","maxLength":104}},"required":["owner","name"],"additionalProperties":false}}},"required":["expectedActorId","expectedVersion","repositories"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","pattern":"^[a-z0-9._-]{1,100}$"},"id":{"$ref":"#/components/schemas/RepoId"},"visibility":{"type":"string","enum":["public","private"]}},"required":["owner","name","id","visibility"],"additionalProperties":false}}},"required":["actorId","version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiUserPins","x-gc2-ratelimit":{"policies":["api"]}}},"/api/actions/runs":{"post":{"summary":"Create an action run","description":"Starts a manual action run owned by the signed-in user.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","minLength":1,"maxLength":255},"source":{"type":"object","properties":{"kind":{"type":"string","const":"manual"},"text":{"type":"string","maxLength":16384}},"required":["kind","text"],"additionalProperties":false}},"required":["requestKey","source"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","minLength":1,"maxLength":255},"source":{"type":"object","properties":{"kind":{"type":"string","const":"manual"},"text":{"type":"string","maxLength":16384}},"required":["kind","text"],"additionalProperties":false}},"required":["requestKey","source"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","minLength":1,"maxLength":255},"source":{"type":"object","properties":{"kind":{"type":"string","const":"manual"},"text":{"type":"string","maxLength":16384}},"required":["kind","text"],"additionalProperties":false}},"required":["requestKey","source"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiActionsRuns","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api"]}},"get":{"summary":"List action runs","description":"Lists manual action runs owned by the signed-in user.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","blocked"]},"workflowName":{"type":"string","minLength":1,"maxLength":100},"jobName":{"type":"string","minLength":1,"maxLength":100},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","state","workflowName","jobName","createdAt","updatedAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiActionsRuns","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/actions/runs/{id}":{"get":{"summary":"Get an action run","description":"Returns a manual action run owned by the signed-in user.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","blocked"]},"source":{"type":"object","properties":{"kind":{"type":"string","const":"manual"},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["kind","digest"],"additionalProperties":false},"job":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"workflowName":{"type":"string","minLength":1,"maxLength":100},"script":{"type":"string","maxLength":16384},"shell":{"type":"string","const":"bash"},"timeoutMinutes":{"type":"integer","minimum":1,"maximum":5}},"required":["name","workflowName","script","shell","timeoutMinutes"],"additionalProperties":false},"cancellationGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"result":{"anyOf":[{"type":"object","properties":{"jobConclusion":{"type":"integer","minimum":0,"maximum":5},"listenerConclusion":{"type":"string","enum":["succeeded","failed","cancelled","timed_out"]},"changeOrder":{"type":"integer","minimum":0,"maximum":9007199254740991},"steps":{"default":[],"maxItems":10,"type":"array","items":{"type":"object","properties":{"external_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":"integer","minimum":0,"maximum":9007199254740991},"name":{"type":"string","maxLength":256},"status":{"type":"integer","enum":[0,3,5,6]},"conclusion":{"type":"integer","enum":[0,2,3,4,7]},"started_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"}},"required":["external_id","number","name","status","conclusion","started_at","completed_at"],"additionalProperties":false}}},"required":["steps"],"additionalProperties":false},{"type":"null"}]}},"required":["id","state","source","job","cancellationGeneration","result"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiActionsRunsById","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/actions/runs/{id}/cancel":{"post":{"summary":"Cancel an action run","description":"Requests cancellation of a manual action run owned by the signed-in user.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiActionsRunsByIdCancel","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/actions/runs/{id}/logs/tail":{"get":{"summary":"Tail action run logs","description":"Returns bounded log records after the supplied cursor.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"default":200,"type":"integer","minimum":1,"maximum":500}},{"name":"step","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"latestSequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncation":{"anyOf":[{"type":"object","properties":{"droppedChunks":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"droppedBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"floorSequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["droppedChunks","droppedBytes","floorSequence"],"additionalProperties":false},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","blocked"]},"recordedAt":{"type":"string","format":"date-time"}},"required":["state","recordedAt"],"additionalProperties":false},{"type":"null"}]},"chunks":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"stepId":{"type":["string","null"],"minLength":1,"maxLength":64},"at":{"type":"string","format":"date-time"},"stream":{"type":"string","enum":["stdout","stderr"]},"startsLine":{"type":"boolean"},"text":{"type":"string"}},"required":["sequence","stepId","at","stream","startsLine","text"],"additionalProperties":false}},"earlier":{"type":"boolean"},"more":{"type":"boolean"},"resumeFrom":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991}},"required":["latestSequence","truncation","summary","chunks","earlier","more","resumeFrom"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiActionsRunsByIdLogsTail","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/actions/runs/{id}/logs":{"get":{"summary":"Page action run logs","description":"Returns a bounded page of logs for an owned action run.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"from","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"to","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"default":200,"type":"integer","minimum":1,"maximum":500}},{"name":"step","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"latestSequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncation":{"anyOf":[{"type":"object","properties":{"droppedChunks":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"droppedBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"floorSequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["droppedChunks","droppedBytes","floorSequence"],"additionalProperties":false},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","blocked"]},"recordedAt":{"type":"string","format":"date-time"}},"required":["state","recordedAt"],"additionalProperties":false},{"type":"null"}]},"chunks":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"stepId":{"type":["string","null"],"minLength":1,"maxLength":64},"at":{"type":"string","format":"date-time"},"stream":{"type":"string","enum":["stdout","stderr"]},"startsLine":{"type":"boolean"},"text":{"type":"string"}},"required":["sequence","stepId","at","stream","startsLine","text"],"additionalProperties":false}},"earlier":{"type":"boolean"},"more":{"type":"boolean"},"resumeFrom":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991}},"required":["latestSequence","truncation","summary","chunks","earlier","more","resumeFrom"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiActionsRunsByIdLogs","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/actions/runs/{id}/logs/search":{"get":{"summary":"Search action run logs","description":"Searches the bounded log index for an owned action run.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Runs and logs are restricted to the session actor."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":256}},{"name":"context","in":"query","required":false,"schema":{"default":2,"type":"integer","minimum":0,"maximum":5}},{"name":"step","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"latestSequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncation":{"anyOf":[{"type":"object","properties":{"droppedChunks":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"droppedBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"floorSequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["droppedChunks","droppedBytes","floorSequence"],"additionalProperties":false},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","blocked"]},"recordedAt":{"type":"string","format":"date-time"}},"required":["state","recordedAt"],"additionalProperties":false},{"type":"null"}]},"matches":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991},"stepId":{"type":["string","null"],"minLength":1,"maxLength":64},"stream":{"type":"string","enum":["stdout","stderr"]},"at":{"type":"string","format":"date-time"},"text":{"type":"string"},"before":{"maxItems":5,"type":"array","items":{"type":"string"}},"after":{"maxItems":5,"type":"array","items":{"type":"string"}}},"required":["sequence","offset","stepId","stream","at","text","before","after"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"exhausted":{"type":"boolean"}},"required":["latestSequence","truncation","summary","matches","next","exhausted"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiActionsRunsByIdLogsSearch","tags":["Actions"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/admin/metrics":{"get":{"tags":["Administration"],"summary":"Get instance metrics","description":"Returns a bounded instance metrics snapshot.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"days","in":"query","required":false,"schema":{"default":30,"type":"number"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"window":{"type":"object","properties":{"days":{"type":"integer","enum":[7,30,60]},"startsAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["days","startsAt"],"additionalProperties":false},"integrations":{"type":"object","properties":{"mail":{"type":"boolean"},"actions":{"type":"boolean"},"githubLinking":{"type":"boolean"},"billing":{"type":"boolean"},"outboundWebhookDelivery":{"type":"boolean"}},"required":["mail","actions","githubLinking","billing","outboundWebhookDelivery"],"additionalProperties":false},"revenue":{"type":"object","properties":{"source":{"type":"string","const":"unavailable"},"note":{"type":"string"}},"required":["source","note"],"additionalProperties":false},"subscriptions":{"type":"object","properties":{"source":{"type":"string","const":"stripe-mirror"},"count":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"active":{"type":"integer","minimum":0,"maximum":9007199254740991},"trialing":{"type":"integer","minimum":0,"maximum":9007199254740991},"pastDue":{"type":"integer","minimum":0,"maximum":9007199254740991},"canceled":{"type":"integer","minimum":0,"maximum":9007199254740991},"other":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","active","trialing","pastDue","canceled","other"],"additionalProperties":false},"licensedSeats":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"active":{"type":"integer","minimum":0,"maximum":9007199254740991},"trialing":{"type":"integer","minimum":0,"maximum":9007199254740991},"pastDue":{"type":"integer","minimum":0,"maximum":9007199254740991},"canceled":{"type":"integer","minimum":0,"maximum":9007199254740991},"other":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","active","trialing","pastDue","canceled","other"],"additionalProperties":false},"note":{"type":"string"}},"required":["source","count","licensedSeats","note"],"additionalProperties":false},"product":{"type":"object","properties":{"planMix":{"type":"object","properties":{"free":{"type":"integer","minimum":0,"maximum":9007199254740991},"personal":{"type":"integer","minimum":0,"maximum":9007199254740991},"team":{"type":"integer","minimum":0,"maximum":9007199254740991},"premium":{"type":"integer","minimum":0,"maximum":9007199254740991},"enterprise":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["free","personal","team","premium","enterprise"],"additionalProperties":false},"users":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"newInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeExact":{"type":"boolean","const":false}},"required":["total","newInWindow","activeInWindow","activeExact"],"additionalProperties":false},"organizations":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"newInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","newInWindow"],"additionalProperties":false},"repositories":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"newInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeExact":{"type":"boolean","const":false}},"required":["total","newInWindow","activeInWindow","activeExact"],"additionalProperties":false},"pullRequests":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"open":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"merged":{"type":"integer","minimum":0,"maximum":9007199254740991},"mergedInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"closed":{"type":"integer","minimum":0,"maximum":9007199254740991},"closedInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"exact":{"type":"boolean","const":false},"note":{"type":"string"}},"required":["total","open","createdInWindow","merged","mergedInWindow","closed","closedInWindow","exact","note"],"additionalProperties":false},"stacks":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"active":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"completed":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"dissolved":{"type":"integer","minimum":0,"maximum":9007199254740991},"dissolvedInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"exact":{"type":"boolean","const":false},"note":{"type":"string"}},"required":["total","active","createdInWindow","completed","completedInWindow","dissolved","dissolvedInWindow","exact","note"],"additionalProperties":false}},"required":["planMix","users","organizations","repositories","pullRequests","stacks"],"additionalProperties":false}},"required":["asOf","window","integrations","revenue","subscriptions","product"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAdminMetrics","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/metrics/organizations":{"get":{"tags":["Administration"],"summary":"List organization metrics","description":"Lists bounded organization metrics for instance administration.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"days","in":"query","required":false,"schema":{"default":30,"type":"number"}},{"name":"sort","in":"query","required":false,"schema":{"default":"seats","type":"string","enum":["seats","repositories","pullRequests","stacks"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":15}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"window":{"type":"object","properties":{"days":{"type":"integer","enum":[7,30,60]},"startsAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["days","startsAt"],"additionalProperties":false},"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/OrgId"},"handle":{"type":"string"},"displayName":{"type":"string"},"personal":{"type":"boolean"},"plan":{"type":"string","enum":["free","personal","team","premium","enterprise"]},"seats":{"type":"integer","minimum":0,"maximum":9007199254740991},"repositories":{"type":"integer","minimum":0,"maximum":9007199254740991},"pullRequestsInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991},"stacksInWindow":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","handle","displayName","personal","plan","seats","repositories","pullRequestsInWindow","stacksInWindow"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["asOf","window","items","next","total"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAdminMetricsOrganizations","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/closure-receipt":{"get":{"tags":["Administration"],"summary":"Find a closure receipt","description":"Finds a retained closure receipt by its exact lookup fields.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"receipt":{"anyOf":[{"oneOf":[{"type":"object","properties":{"version":{"type":"integer","const":1},"requestId":{"type":"string","minLength":1,"maxLength":96},"actorId":{"type":"string"},"oldGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"newGeneration":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"targetType":{"type":"string","const":"account"},"targetId":{"type":"string"}},"required":["version","requestId","actorId","oldGeneration","newGeneration","targetType","targetId"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"integer","const":1},"requestId":{"type":"string","minLength":1,"maxLength":96},"actorId":{"type":"string"},"oldGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"newGeneration":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"targetType":{"type":"string","const":"organization"},"targetId":{"type":"string"}},"required":["version","requestId","actorId","oldGeneration","newGeneration","targetType","targetId"],"additionalProperties":false}],"discriminator":{"propertyName":"targetType"}},{"type":"null"}]}},"required":["receipt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAdminClosure-receipt","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/users":{"get":{"tags":["Administration"],"summary":"List users","description":"Lists users for instance administration.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"search","in":"query","required":false,"schema":{"default":"","type":"string","maxLength":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"email":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"authGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"grantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"suspendedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","actorId","handle","displayName","email","createdAt","authGeneration","grantGeneration","suspendedAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","next","total"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAdminUsers","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/organizations":{"get":{"tags":["Administration"],"summary":"List organizations","description":"Lists organizations for instance administration.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"search","in":"query","required":false,"schema":{"default":"","type":"string","maxLength":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/OrgId"},"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":"string"},"personal":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","actorId","handle","displayName","personal","createdAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","next","total"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAdminOrganizations","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/audit":{"get":{"tags":["Administration"],"summary":"List credential audit events","description":"Lists bounded credential audit events without exposing credential secrets.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"scope":{"type":"string","const":"credential-events-only"},"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"actor":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"}},"required":["actorId","handle"],"additionalProperties":false},"recipient":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"}},"required":["actorId","handle"],"additionalProperties":false},"action":{"type":"string","enum":["issued","revoked","epoch-revoked","account-suspended","account-restored"]},"requestId":{"type":"string","minLength":1,"maxLength":64},"occurredAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["id","actor","recipient","action","requestId","occurredAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["scope","items","next","total"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAdminAudit","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/users/{userId}/revoke":{"post":{"tags":["Administration"],"summary":"Revoke user sessions and tokens","description":"Revokes a user's sessions and advances credential generations.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"authGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"grantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"signedOut":{"type":"boolean","const":true},"canSignInAgain":{"type":"boolean","const":true}},"required":["userId","authGeneration","grantGeneration","signedOut","canSignInAgain"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAdminUsersByUserIdRevoke","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/users/{userId}/suspend":{"post":{"tags":["Administration"],"summary":"Suspend a user","description":"Suspends a user and revokes current credentials.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedSuspendedAt":{"type":"null"}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration","expectedSuspendedAt"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedSuspendedAt":{"type":"null"}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration","expectedSuspendedAt"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedSuspendedAt":{"type":"null"}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration","expectedSuspendedAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"authGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"grantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"suspendedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["userId","authGeneration","grantGeneration","suspendedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAdminUsersByUserIdSuspend","x-gc2-ratelimit":{"policies":["api"]}}},"/api/admin/users/{userId}/restore":{"post":{"tags":["Administration"],"summary":"Restore a user","description":"Restores a suspended user while retaining credential revocation boundaries.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A browser session whose actor is a current member of the configured instance-administrator organization is required; grants and Basic credentials are rejected."]},"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedSuspendedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration","expectedSuspendedAt"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedSuspendedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration","expectedSuspendedAt"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"expectedAuthGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedGrantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedSuspendedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedAuthGeneration","expectedGrantGeneration","expectedSuspendedAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"authGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"grantGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"suspendedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["userId","authGeneration","grantGeneration","suspendedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAdminUsersByUserIdRestore","x-gc2-ratelimit":{"policies":["api"]}}},"/api/users/":{"get":{"tags":["Users"],"summary":"Search public user profiles","description":"Searches the public profile directory. No credential is required.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Only profile fields deliberately published by the user are returned."]},"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicProfilePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiUsers","x-gc2-ratelimit":{"policies":["api"]}}},"/api/users/{handle}":{"get":{"tags":["Users"],"summary":"Get a public user profile","description":"Returns the public profile for an exact handle. No credential is required.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Only profile fields deliberately published by the user are returned."]},"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,99}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicProfile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiUsersByHandle","x-gc2-ratelimit":{"policies":["api"]}}},"/api/users/{handle}/pins":{"get":{"tags":["Users"],"summary":"List public profile pins","description":"Lists the profile owner's pins that are visible to an anonymous reader.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Private or otherwise unreadable pinned repositories are omitted."]},"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,99}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","pattern":"^[a-z0-9._-]{1,100}$"},"id":{"$ref":"#/components/schemas/RepoId"},"visibility":{"type":"string","enum":["public","private"]}},"required":["owner","name","id","visibility"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiUsersByHandlePins","x-gc2-ratelimit":{"policies":["api"]}}},"/api/tokens/":{"get":{"tags":["Credentials"],"summary":"List credentials","description":"Lists credentials visible to the authenticated account or management grant. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A session or credential-management grant may list account credentials; a non-management grant can disclose only itself."]},"parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiTokens","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Credentials"],"summary":"Issue a credential","description":"Issues either an independent human grant or a grant delegated from the current grant. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Independent issuance requires a recently confirmed session OR an unbounded root management grant with independent-write authority. Delegated issuance instead requires a live grant with delegate-write authority, scope containment, eligible recipient, and compatible binding; these are alternative branches and are not jointly required."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["independent","derived"]},"recipientActorId":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":255},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"binding":{"$ref":"#/components/schemas/IssuedBinding"},"expiresAt":{"type":"string","format":"date-time"},"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["mode","recipientActorId","name","scopes","binding","expiresAt","requestId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["independent","derived"]},"recipientActorId":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":255},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"binding":{"$ref":"#/components/schemas/IssuedBinding"},"expiresAt":{"type":"string","format":"date-time"},"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["mode","recipientActorId","name","scopes","binding","expiresAt","requestId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["independent","derived"]},"recipientActorId":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":255},"scopes":{"$ref":"#/components/schemas/ScopeSet"},"binding":{"$ref":"#/components/schemas/IssuedBinding"},"expiresAt":{"type":"string","format":"date-time"},"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["mode","recipientActorId","name","scopes","binding","expiresAt","requestId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialIssued"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiTokens","x-gc2-ratelimit":{"policies":["api"]}}},"/api/tokens/{credential}":{"get":{"tags":["Credentials"],"summary":"Get a credential","description":"Returns one credential summary without returning its secret. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Management authority is required except that a live grant may inspect itself."]},"parameters":[{"name":"credential","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialSummary"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiTokensByCredential","x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["Credentials"],"summary":"Revoke a credential","description":"Revokes one credential by request id. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Use a recently confirmed session or qualifying management grant; alternatively, any live grant may revoke itself without management authority."]},"parameters":[{"name":"credential","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["requestId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["requestId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["requestId"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiTokensByCredential","x-gc2-ratelimit":{"policies":["api"]}}},"/api/tokens/{credential}/rotate":{"post":{"tags":["Credentials"],"summary":"Rotate a credential","description":"Replaces one credential secret while retaining its governed identity and policy. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"credential","family":"independent","level":"write"},"target":"the authenticated user's independent credentials when the management-grant branch is used"}],"conditions":["Use either a recently confirmed human session or a separately consented management grant. An active management grant cannot rotate itself."]},"parameters":[{"name":"credential","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["requestId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["requestId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64}},"required":["requestId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialIssued"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiTokensByCredentialRotate","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/identity":{"get":{"tags":["Authentication"],"summary":"Get session or legacy grant identity","description":"Returns account identity for a browser session or the compatibility identity projection for a grant. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The credential must resolve to a live account. Basic email/password uses session identity; Basic token uses grant identity."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"avatarUrl":{"default":null,"type":["string","null"]},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"pendingEmail":{"default":null,"type":["string","null"],"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"emailVerified":{"type":"boolean"},"mfaRequired":{"type":"boolean"},"instanceAdmin":{"type":"boolean"}},"required":["actorId","handle","displayName","avatarUrl","email","pendingEmail","emailVerified","mfaRequired","instanceAdmin"],"additionalProperties":false},{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"username":{"type":"string"},"avatarUrl":{"type":["string","null"]},"email":{"type":"null"}},"required":["id","username","avatarUrl","email"],"additionalProperties":false}},"required":["user"],"additionalProperties":false}]}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthIdentity","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/profile":{"get":{"tags":["Authentication"],"summary":"Get your session profile","description":"Returns private profile settings for the signed-in account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Account-secret disclosure is session-only."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthProfile","x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["Authentication"],"summary":"Update your session profile","description":"Updates profile metadata using an expected version fence.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The expected actor, when supplied, and expected profile version must match."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedActorId":{"$ref":"#/components/schemas/ActorId"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":255},"avatarUrl":{"type":"null"},"bio":{"type":["string","null"],"maxLength":500},"location":{"type":["string","null"],"maxLength":100},"company":{"type":["string","null"],"maxLength":100},"websiteUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiAuthProfile","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/profile/avatar":{"put":{"tags":["Authentication"],"summary":"Upload your avatar","description":"Streams a bounded avatar into configured storage and updates the profile by expected version.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Avatar storage must be configured and the expected actor and version must match."]},"parameters":[{"name":"expectedActorId","in":"query","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}},{"name":"expectedVersion","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiAuthProfileAvatar","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/sudo/password":{"post":{"tags":["Authentication"],"summary":"Confirm identity with your password","description":"Extends the current session's short recent-confirmation window after verifying the account password.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The account must have a valid password and the supplied password must match."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["password"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["password"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"sudoUntil":{"type":"string","format":"date-time"}},"required":["sudoUntil"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthSudoPassword","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/password":{"patch":{"tags":["Authentication"],"summary":"Change your password","description":"Changes the account password and advances authentication state after checking the current password.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The current password must match; other sessions and credentials may be invalidated by the authentication-generation change."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024},"newPassword":{"type":"string","minLength":12,"maxLength":1024}},"required":["currentPassword","newPassword"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024},"newPassword":{"type":"string","minLength":12,"maxLength":1024}},"required":["currentPassword","newPassword"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024},"newPassword":{"type":"string","minLength":12,"maxLength":1024}},"required":["currentPassword","newPassword"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiAuthPassword","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/sessions":{"get":{"tags":["Authentication"],"summary":"List active sessions","description":"Lists browser sessions belonging to the current account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Only the current account's sessions are disclosed."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"current":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"sudoUntil":{"type":["string","null"],"format":"date-time"},"mfaSatisfiedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","current","createdAt","lastUsedAt","expiresAt","sudoUntil","mfaSatisfiedAt"],"additionalProperties":false}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthSessions","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/sessions/revoke-others":{"post":{"tags":["Authentication"],"summary":"Revoke other sessions","description":"Revokes every browser session for the account except the current one.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The current session remains active."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["revoked"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthSessionsRevoke-others","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/logout":{"post":{"tags":["Authentication"],"summary":"Log out this browser","description":"Revokes an unambiguous current browser session when possible and always expires the local session cookie.","security":[{"session":[]},{}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Authorization headers are rejected. Anonymous or malformed cookie-only requests may clear the local cookie without claiming server-side revocation."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthLogout","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/sessions/{session}":{"delete":{"tags":["Authentication"],"summary":"Revoke a session","description":"Revokes one browser session belonging to the current account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The target session must belong to the authenticated account."]},"parameters":[{"name":"session","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{64}$"}}],"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiAuthSessionsBySession","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/signup":{"post":{"tags":["Authentication"],"summary":"Create an account","description":"Creates a password account and browser session, then requests email verification when mail is configured.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Account creation policy, unique identity fields, password policy, and mail availability are enforced."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":12,"maxLength":1024},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255}},"required":["email","password","handle","displayName"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":12,"maxLength":1024},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255}},"required":["email","password","handle","displayName"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":12,"maxLength":1024},"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"displayName":{"type":"string","minLength":1,"maxLength":255}},"required":["email","password","handle","displayName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authenticated":{"type":"boolean","const":true},"expiresAt":{"type":"string","format":"date-time"}},"required":["authenticated","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthSignup","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/signin":{"post":{"tags":["Authentication"],"summary":"Sign in with a password","description":"Exchanges valid email/password credentials for a browser session cookie.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The supplied account credentials must be valid and satisfy current account and MFA policy."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["email","password"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["email","password"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["email","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authenticated":{"type":"boolean","const":true},"expiresAt":{"type":"string","format":"date-time"}},"required":["authenticated","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthSignin","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/closure":{"get":{"tags":["Authentication"],"summary":"Get account closure status","description":"Returns closure readiness for the current session's account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"blockers":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["personal-repositories","retained-repository-storage","organization-memberships","sole-owner-organizations","repositories","pending-repository-work","paid-subscription","personal-namespace"]},"count":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"href":{"type":"string","pattern":"^\\/.*"},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["kind","count","href","message"],"additionalProperties":false}}},"required":["handle","version","blockers"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthClosure","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Authentication"],"summary":"Close your account","description":"Starts or completes account closure and expires the current browser session cookie.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96},"confirmation":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","confirmation","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96},"confirmation":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","confirmation","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96},"confirmation":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestId","confirmation","expectedVersion"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthClosure","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/":{"get":{"tags":["Authentication"],"summary":"List passkeys","description":"Lists passkeys registered to the current account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Only account-owned passkey metadata is returned."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"deviceType":{"type":"string","enum":["single_device","multi_device"]},"backedUp":{"type":"boolean"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}},"aaguid":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"},"needsAttention":{"type":"boolean"}},"required":["id","name","deviceType","backedUp","transports","aaguid","createdAt","lastUsedAt","needsAttention"],"additionalProperties":false}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthPasskeys","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/{id}":{"patch":{"tags":["Authentication"],"summary":"Rename a passkey","description":"Renames one passkey registered to the current account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The passkey must belong to the account."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedName":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["expectedName","name"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedName":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["expectedName","name"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedName":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["expectedName","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"deviceType":{"type":"string","enum":["single_device","multi_device"]},"backedUp":{"type":"boolean"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}},"aaguid":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"},"needsAttention":{"type":"boolean"}},"required":["id","name","deviceType","backedUp","transports","aaguid","createdAt","lastUsedAt","needsAttention"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiAuthPasskeysById","x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["Authentication"],"summary":"Revoke a passkey","description":"Revokes one account passkey after recent identity confirmation.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The passkey must belong to the account and account recovery policy must remain satisfied."]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revokedAt":{"type":"string","format":"date-time"}},"required":["id","revokedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiAuthPasskeysById","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/register/options":{"post":{"tags":["Authentication"],"summary":"Start passkey registration","description":"Creates WebAuthn registration options for this account.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The relying-party origin comes from instance configuration."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"rp":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"user":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"name":{"type":"string"},"displayName":{"type":"string"}},"required":["id","name","displayName"],"additionalProperties":false},"pubKeyCredParams":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"public-key"},"alg":{"type":"integer","enum":[-7,-257]}},"required":["type","alg"],"additionalProperties":false}},"timeout":{"type":"number"},"excludeCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}}},"required":["id","type"],"additionalProperties":false}},"attestation":{"type":"string","const":"none"},"authenticatorSelection":{"type":"object","properties":{"residentKey":{"type":"string","const":"required"},"requireResidentKey":{"type":"boolean","const":true},"userVerification":{"type":"string","const":"required"}},"required":["residentKey","userVerification"],"additionalProperties":false},"extensions":{"type":"object","properties":{"credProps":{"type":"boolean"}},"additionalProperties":false}},"required":["challenge","rp","user","pubKeyCredParams","timeout","excludeCredentials","attestation","authenticatorSelection"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysRegisterOptions","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/register/verify":{"post":{"tags":["Authentication"],"summary":"Finish passkey registration","description":"Verifies a WebAuthn registration response and stores the new passkey.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The response must match the live registration challenge and relying-party policy."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"attestationObject":{"type":"string","minLength":1,"maxLength":131072,"pattern":"^[A-Za-z0-9_-]+$"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}},"publicKeyAlgorithm":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicKey":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","attestationObject"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"required":["name","credential"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"attestationObject":{"type":"string","minLength":1,"maxLength":131072,"pattern":"^[A-Za-z0-9_-]+$"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}},"publicKeyAlgorithm":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicKey":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","attestationObject"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"required":["name","credential"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"attestationObject":{"type":"string","minLength":1,"maxLength":131072,"pattern":"^[A-Za-z0-9_-]+$"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}},"publicKeyAlgorithm":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicKey":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","attestationObject"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"required":["name","credential"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"deviceType":{"type":"string","enum":["single_device","multi_device"]},"backedUp":{"type":"boolean"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}},"aaguid":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"},"needsAttention":{"type":"boolean"}},"required":["id","name","deviceType","backedUp","transports","aaguid","createdAt","lastUsedAt","needsAttention"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysRegisterVerify","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/signin/options":{"post":{"tags":["Authentication"],"summary":"Start passkey sign-in","description":"Creates public WebAuthn authentication options.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["No account is authenticated until a matching assertion is verified."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"rpId":{"type":"string"},"timeout":{"type":"number"},"allowCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}}},"required":["id","type"],"additionalProperties":false}},"userVerification":{"type":"string","const":"required"}},"required":["challenge","rpId","timeout","userVerification"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysSigninOptions","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/signin/verify":{"post":{"tags":["Authentication"],"summary":"Finish passkey sign-in","description":"Verifies a WebAuthn assertion and creates a browser session.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The assertion must match a live challenge, registered passkey, origin, and relying party."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authenticated":{"type":"boolean","const":true},"expiresAt":{"type":"string","format":"date-time"}},"required":["authenticated","expiresAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysSigninVerify","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/mfa/options":{"post":{"tags":["Authentication"],"summary":"Start passkey MFA change","description":"Creates a WebAuthn challenge for changing passkey MFA policy.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The requested change must remain valid for the account."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedEnabled":{"type":"boolean"}},"required":["enabled","expectedEnabled"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedEnabled":{"type":"boolean"}},"required":["enabled","expectedEnabled"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedEnabled":{"type":"boolean"}},"required":["enabled","expectedEnabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"rpId":{"type":"string"},"timeout":{"type":"number"},"allowCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}}},"required":["id","type"],"additionalProperties":false}},"userVerification":{"type":"string","const":"required"}},"required":["challenge","rpId","timeout","userVerification"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysMfaOptions","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/mfa/verify":{"post":{"tags":["Authentication"],"summary":"Finish passkey MFA change","description":"Verifies the challenge, changes MFA policy, and rotates the browser session.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The assertion and pending MFA change must match; authentication generation is advanced."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedEnabled":{"type":"boolean"},"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"required":["enabled","expectedEnabled","credential"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedEnabled":{"type":"boolean"},"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"required":["enabled","expectedEnabled","credential"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedEnabled":{"type":"boolean"},"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"required":["enabled","expectedEnabled","credential"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"authGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["enabled","authGeneration"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysMfaVerify","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/sudo/options":{"post":{"tags":["Authentication"],"summary":"Start passkey identity confirmation","description":"Creates WebAuthn options for refreshing this session's recent-human assurance.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The challenge is bound to the current account."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"rpId":{"type":"string"},"timeout":{"type":"number"},"allowCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"transports":{"maxItems":8,"type":"array","items":{"type":"string","enum":["ble","cable","hybrid","internal","nfc","smart-card","usb"]}}},"required":["id","type"],"additionalProperties":false}},"userVerification":{"type":"string","const":"required"}},"required":["challenge","rpId","timeout","userVerification"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysSudoOptions","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/passkeys/sudo/verify":{"post":{"tags":["Authentication"],"summary":"Finish passkey identity confirmation","description":"Verifies a WebAuthn assertion and grants a short recent-confirmation window.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The assertion must match a current account passkey and live challenge."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"rawId":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^[A-Za-z0-9_-]+$"},"type":{"type":"string","const":"public-key"},"authenticatorAttachment":{"type":"string","enum":["platform","cross-platform"]},"clientExtensionResults":{"type":"object","properties":{"credProps":{"type":"object","properties":{"rk":{"type":"boolean"}}}}},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^[A-Za-z0-9_-]+$"},"authenticatorData":{"type":"string","minLength":1,"maxLength":16384,"pattern":"^[A-Za-z0-9_-]+$"},"signature":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"userHandle":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","rawId","type","clientExtensionResults","response"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"sudoUntil":{"type":"string","format":"date-time"}},"required":["sudoUntil"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPasskeysSudoVerify","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/password-recovery/request":{"post":{"tags":["Authentication"],"summary":"Request password recovery","description":"Queues a password-recovery message without disclosing whether the account exists.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Recovery proof and configured mail policy are validated without disclosing account existence."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPassword-recoveryRequest","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/password-recovery/consume":{"post":{"tags":["Authentication"],"summary":"Complete password recovery","description":"Consumes a single-use recovery proof and replaces the account password.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Recovery proof and configured mail policy are validated without disclosing account existence."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"token":{"type":"string","pattern":"^[0-9a-f]{64}$"},"password":{"type":"string","minLength":12,"maxLength":1024}},"required":["email","token","password"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"},"token":{"type":"string","pattern":"^[0-9a-f]{64}$"},"password":{"type":"string","minLength":12,"maxLength":1024}},"required":["email","token","password"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"},"token":{"type":"string","pattern":"^[0-9a-f]{64}$"},"password":{"type":"string","minLength":12,"maxLength":1024}},"required":["email","token","password"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthPassword-recoveryConsume","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/recovery-codes/":{"post":{"tags":["Authentication"],"summary":"Replace recovery codes","description":"Generates a new set of account recovery codes after recent browser identity confirmation.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","Existing recovery codes are invalidated; grants and Basic credentials cannot satisfy this operation."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"codes":{"minItems":8,"maxItems":8,"type":"array","items":{"type":"string","pattern":"^[0-9a-f]{8}(?:-[0-9a-f]{8}){3}$"}}},"required":["codes"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthRecovery-codes","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/recovery-codes/consume":{"post":{"tags":["Authentication"],"summary":"Use a recovery code","description":"Consumes one single-use recovery code to recover account access.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The account identifier and unused recovery code must match current account state."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"code":{"type":"string","minLength":1,"maxLength":64},"password":{"type":"string","minLength":12,"maxLength":1024}},"required":["email","code","password"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"},"code":{"type":"string","minLength":1,"maxLength":64},"password":{"type":"string","minLength":12,"maxLength":1024}},"required":["email","code","password"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"},"code":{"type":"string","minLength":1,"maxLength":64},"password":{"type":"string","minLength":12,"maxLength":1024}},"required":["email","code","password"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthRecovery-codesConsume","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/email/verification":{"post":{"tags":["Authentication"],"summary":"Request email verification","description":"Queues verification for the current account's email.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","A current browser session is required; grants and Basic credentials cannot request account email changes."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthEmailVerification","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/email":{"patch":{"tags":["Authentication"],"summary":"Request an email change","description":"Starts verification of a replacement email after recent identity confirmation.","security":[{"session":[]}],"x-gc2-permissions":{"grantRequirements":[],"assurance":"recent-human-session","conditions":["A current browser session is required; grants and Basic credentials cannot satisfy this operation.","The new address must satisfy account policy and mail delivery must be configured."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiAuthEmail","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/email/verify":{"post":{"tags":["Authentication"],"summary":"Verify an email address","description":"Consumes a single-use email-verification token; no existing GitCafe credential is required.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The verification token must be live, unused, and match the pending account email state."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"token":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["email","token"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"email":{"type":"string"},"token":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["email","token"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"type":"string"},"token":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["email","token"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthEmailVerify","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/ssh-keys/":{"get":{"tags":["Credentials"],"summary":"List SSH keys","description":"Lists SSH public keys attached to the authenticated account. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A live session or independent human PAT/device grant may list the user's SSH keys; delegated grants are rejected."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"fingerprint":{"type":"string"},"algorithm":{"type":"string"},"usage":{"type":"string","enum":["authentication","signing","both"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","title","fingerprint","algorithm","usage","createdAt"],"additionalProperties":false}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthSsh-keys","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Credentials"],"summary":"Add an SSH key","description":"Validates and adds an SSH public key to the authenticated account. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"credential","family":"independent","level":"write"},"target":"the authenticated user's credential settings"}],"conditions":["A session or separately consented credential-management grant is required. Basic email/password follows direct account authority; Basic token follows the management-grant branch."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":100},"publicKey":{"type":"string","minLength":1,"maxLength":16384},"usage":{"default":"authentication","type":"string","enum":["authentication","signing","both"]},"scopes":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/ScopeStatement"}}},"required":["title","publicKey"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":100},"publicKey":{"type":"string","minLength":1,"maxLength":16384},"usage":{"default":"authentication","type":"string","enum":["authentication","signing","both"]},"scopes":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/ScopeStatement"}}},"required":["title","publicKey"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":100},"publicKey":{"type":"string","minLength":1,"maxLength":16384},"usage":{"default":"authentication","type":"string","enum":["authentication","signing","both"]},"scopes":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/ScopeStatement"}}},"required":["title","publicKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"fingerprint":{"type":"string"},"algorithm":{"type":"string"},"usage":{"type":"string","enum":["authentication","signing","both"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","title","fingerprint","algorithm","usage","createdAt"],"additionalProperties":false}},"required":["key"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthSsh-keys","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/ssh-keys/{keyId}":{"delete":{"tags":["Credentials"],"summary":"Delete an SSH key","description":"Deletes one SSH key owned by the authenticated account. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"credential","family":"independent","level":"write"},"target":"the authenticated user's credential settings"}],"conditions":["A session or separately consented credential-management grant is required. Basic email/password follows direct account authority; Basic token follows the management-grant branch."]},"parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiAuthSsh-keysByKeyId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/gpg-keys/":{"get":{"tags":["Credentials"],"summary":"List GPG keys","description":"Lists GPG public keys attached to the authenticated account. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["A live session or independent human PAT/device grant may list the user's GPG keys; delegated grants are rejected."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"keyId":{"type":"string"},"fingerprint":{"type":"string"},"email":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","keyId","fingerprint","email","createdAt"],"additionalProperties":false}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiAuthGpg-keys","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Credentials"],"summary":"Add a GPG key","description":"Validates and adds a GPG public key to the authenticated account. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"credential","family":"independent","level":"write"},"target":"the authenticated user's credential settings"}],"conditions":["A session or separately consented credential-management grant is required. Basic email/password follows direct account authority; Basic token follows the management-grant branch."]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"publicKey":{"type":"string","minLength":1,"maxLength":32768}},"required":["publicKey"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"publicKey":{"type":"string","minLength":1,"maxLength":32768}},"required":["publicKey"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"publicKey":{"type":"string","minLength":1,"maxLength":32768}},"required":["publicKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string"},"keyId":{"type":"string"},"fingerprint":{"type":"string"},"email":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","keyId","fingerprint","email","createdAt"],"additionalProperties":false}},"required":["key"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiAuthGpg-keys","x-gc2-ratelimit":{"policies":["api"]}}},"/api/auth/gpg-keys/{keyId}":{"delete":{"tags":["Credentials"],"summary":"Delete a GPG key","description":"Deletes one GPG key owned by the authenticated account. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"credential","family":"independent","level":"write"},"target":"the authenticated user's credential settings"}],"conditions":["A session or separately consented credential-management grant is required. Basic email/password follows direct account authority; Basic token follows the management-grant branch."]},"parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiAuthGpg-keysByKeyId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/status":{"get":{"tags":["GitHub"],"summary":"Get GitHub sync status","description":"Returns bounded GitHub mirror, job, and authority health for a repository without provider secrets. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The repository must have readable GitHub sync state."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"mirror":{"anyOf":[{"type":"object","properties":{"providerAuthority":{"type":"string"},"installationId":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"owner":{"type":"string"},"repository":{"type":"string"},"state":{"type":"string","enum":["active","importing","paused","error"]},"direction":{"type":"string","enum":["pull","push","sync"]},"policy":{"type":"string","enum":["manual","gc2-leader","github-leader"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sourceRef":{"type":"string"},"targetRef":{"type":"string"},"syncPullRequests":{"type":"boolean"},"syncIssues":{"type":"boolean"},"lastPullAt":{"type":["string","null"],"format":"date-time"},"lastPushAt":{"type":["string","null"],"format":"date-time"},"lastDeliveryAt":{"default":null,"type":["string","null"],"format":"date-time"},"nextReconcileAt":{"default":null,"type":["string","null"],"format":"date-time"},"primaryConvergedAt":{"default":null,"type":["string","null"],"format":"date-time"},"oldestPendingPullAt":{"default":null,"type":["string","null"],"format":"date-time"},"nextMetadataReconcileAt":{"default":null,"type":["string","null"],"format":"date-time"},"nativePending":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"nativeBlocked":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"currentGenerationInventoryComplete":{"default":false,"type":"boolean"},"currentGenerationCopyComplete":{"default":false,"type":"boolean"},"metadataPending":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"metadataBlocked":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"metadataCompletedScans":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"authorization":{"default":"current","type":"string","enum":["current","refreshing","stale"]},"renewalSuggested":{"default":false,"type":"boolean"},"lastError":{"default":null,"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"at":{"type":"string","format":"date-time"}},"required":["code","at"],"additionalProperties":false},{"type":"null"}]},"phases":{"default":[],"maxItems":4,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["pull","metadata-scan","pr-artifacts","issue-import"]},"queued":{"type":"integer","minimum":0,"maximum":9007199254740991},"running":{"type":"integer","minimum":0,"maximum":9007199254740991},"succeeded":{"type":"integer","minimum":0,"maximum":9007199254740991},"blocked":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","queued","running","succeeded","blocked","failed"],"additionalProperties":false}},"importState":{"default":"importing","type":"string","enum":["importing","complete","needs-attention"]},"importComplete":{"default":false,"type":"boolean"}},"required":["providerAuthority","installationId","repositoryId","owner","repository","state","direction","policy","conflictWinner","version","sourceRef","targetRef","syncPullRequests","syncIssues","lastPullAt","lastPushAt","lastDeliveryAt","nextReconcileAt","primaryConvergedAt","oldestPendingPullAt","nextMetadataReconcileAt","nativePending","nativeBlocked","currentGenerationInventoryComplete","currentGenerationCopyComplete","metadataPending","metadataBlocked","metadataCompletedScans","authorization","renewalSuggested","lastError","phases","importState","importComplete"],"additionalProperties":false},{"type":"null"}]},"jobs":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"providerState":{"type":["string","null"],"enum":["unsent","confirmed","outcome_unknown","blocked","not_delivered",null]},"kind":{"type":"string"},"configGeneration":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sourceRef":{"type":["string","null"]},"targetRef":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"errorCode":{"default":null,"type":["string","null"],"minLength":1,"maxLength":100},"superseded":{"default":false,"type":"boolean"}},"required":["jobId","state","providerState","kind","configGeneration","sourceRef","targetRef","createdAt","errorCode","superseded"],"additionalProperties":false}},"openEffects":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"kind":{"type":"string"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"providerState":{"type":["string","null"],"enum":["unsent","confirmed","outcome_unknown","blocked","not_delivered",null]},"errorCode":{"default":null,"type":["string","null"],"minLength":1,"maxLength":100},"attemptCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"effectStartedAt":{"default":null,"type":["string","null"],"format":"date-time"},"reconcilable":{"type":"boolean"}},"required":["jobId","kind","state","providerState","errorCode","attemptCount","effectStartedAt","reconcilable"],"additionalProperties":false}},"pendingWritebacks":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"debtId":{"type":"string","pattern":"^ghd_[0-9a-f]{64}$"},"intentAction":{"type":["string","null"]},"pullNumber":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":9007199254740991},"reason":{"type":["string","null"],"minLength":1,"maxLength":100},"nextAttemptAt":{"default":null,"type":["string","null"],"format":"date-time"}},"required":["debtId","intentAction","pullNumber","reason","nextAttemptAt"],"additionalProperties":false}}},"required":["repoId","mirror","jobs","openEffects","pendingWritebacks"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubStatus","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/jobs/{jobId}/provider-recovery":{"get":{"tags":["GitHub"],"summary":"Inspect provider recovery","description":"Inspects provider-side recovery state for one sync job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The job must belong to the exact repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","failed","blocked"]},"configGeneration":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cancellationGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"leaseGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"leaseActive":{"type":"boolean"},"effectPermitted":{"type":"boolean"},"providerResponseRecorded":{"type":"boolean"},"latestRecovery":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^ghpr_[0-9a-f]{64}$"},"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"action":{"type":"string","enum":["inspect","cancel-unsent","resume-receipt"]},"state":{"type":"string","enum":["pending","completed","blocked"]},"reason":{"type":["string","null"],"maxLength":64}},"required":["id","jobId","action","state","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["jobId","state","configGeneration","cancellationGeneration","leaseGeneration","leaseActive","effectPermitted","providerResponseRecorded","latestRecovery"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubJobsByJobIdProvider-recovery","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["GitHub"],"summary":"Request provider recovery","description":"Admits durable provider-side recovery for one failed or uncertain sync job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","The job, expected outcome, request identity, and current configuration generation must match."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["inspect","cancel-unsent","resume-receipt"]},"expectedConfigGeneration":{"type":"integer","minimum":1,"maximum":2147483647},"expectedCancellationGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLeaseGeneration":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["requestId","action","expectedConfigGeneration","expectedCancellationGeneration","expectedLeaseGeneration"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["inspect","cancel-unsent","resume-receipt"]},"expectedConfigGeneration":{"type":"integer","minimum":1,"maximum":2147483647},"expectedCancellationGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLeaseGeneration":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["requestId","action","expectedConfigGeneration","expectedCancellationGeneration","expectedLeaseGeneration"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["inspect","cancel-unsent","resume-receipt"]},"expectedConfigGeneration":{"type":"integer","minimum":1,"maximum":2147483647},"expectedCancellationGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedLeaseGeneration":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["requestId","action","expectedConfigGeneration","expectedCancellationGeneration","expectedLeaseGeneration"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^ghpr_[0-9a-f]{64}$"},"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"action":{"type":"string","enum":["inspect","cancel-unsent","resume-receipt"]},"state":{"type":"string","enum":["pending","completed","blocked"]},"reason":{"type":["string","null"],"maxLength":64}},"required":["id","jobId","action","state","reason"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubJobsByJobIdProvider-recovery","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/jobs/{jobId}/reconcile":{"post":{"tags":["GitHub"],"summary":"Reconcile a GitHub sync outcome","description":"Requests reconciliation of an uncertain provider outcome for one job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","The job must belong to the repository and remain eligible for reconciliation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"scheduled":{"type":"boolean"}},"required":["jobId","scheduled"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubJobsByJobIdReconcile","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/metadata-numbers":{"post":{"tags":["GitHub"],"summary":"Repair GitHub metadata numbers","description":"Repairs bounded provider/local metadata number mappings under exact version fences. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","The supplied repair identities and expected state must match current repository metadata."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pulls":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"from":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"to":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["id","expectedVersion","from","to"],"additionalProperties":false}},"issues":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/IssueId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"from":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"to":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["id","expectedVersion","from","to"],"additionalProperties":false}}},"required":["pulls","issues"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"pulls":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"from":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"to":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["id","expectedVersion","from","to"],"additionalProperties":false}},"issues":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/IssueId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"from":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"to":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["id","expectedVersion","from","to"],"additionalProperties":false}}},"required":["pulls","issues"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"pulls":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"from":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"to":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["id","expectedVersion","from","to"],"additionalProperties":false}},"issues":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/IssueId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"from":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"to":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["id","expectedVersion","from","to"],"additionalProperties":false}}},"required":["pulls","issues"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"repaired":{"type":"boolean","const":true},"pulls":{"type":"integer","minimum":0,"maximum":9007199254740991},"issues":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["repaired","pulls","issues"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubMetadata-numbers","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/outbound":{"patch":{"tags":["GitHub"],"summary":"Configure GitHub outbound sync","description":"Updates outbound GitHub synchronization policy for a mirrored repository. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","Provider authorization, mirror generation, and requested direction/policy must remain valid."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"type":"string","enum":["manual","gc2-leader"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"syncIssues":{"type":"boolean"},"syncPullRequests":{"type":"boolean"},"syncGit":{"type":"boolean"}},"required":["installationId","repositoryId","expectedVersion","mode"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"type":"string","enum":["manual","gc2-leader"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"syncIssues":{"type":"boolean"},"syncPullRequests":{"type":"boolean"},"syncGit":{"type":"boolean"}},"required":["installationId","repositoryId","expectedVersion","mode"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"type":"string","enum":["manual","gc2-leader"]},"conflictWinner":{"type":"string","enum":["gitcafe","github"]},"syncIssues":{"type":"boolean"},"syncPullRequests":{"type":"boolean"},"syncGit":{"type":"boolean"}},"required":["installationId","repositoryId","expectedVersion","mode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"type":"string","enum":["manual","gc2-leader"]}},"required":["version","mode"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoGithubOutbound","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/reconnect":{"post":{"tags":["GitHub"],"summary":"Reconnect a GitHub mirror","description":"Reconnects a mirror to exact provider installation and repository authority. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","Provider repository identity and current mirror generation must match."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["installationId","repositoryId","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["installationId","repositoryId","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["installationId","repositoryId","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"type":"string","enum":["manual","gc2-leader"]},"requeuedJobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["version","mode","requeuedJobs"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubReconnect","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/renew":{"post":{"tags":["GitHub"],"summary":"Renew GitHub mirror authority","description":"Renews retained provider authority for the current mirror configuration. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","The linked provider identity must still control the configured installation and repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mode":{"type":"string","enum":["manual","gc2-leader"]},"requeuedJobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["version","mode","requeuedJobs"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubRenew","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/mirror":{"post":{"tags":["GitHub"],"summary":"Configure a GitHub mirror","description":"Admits native mirror configuration using server-resolved provider and native endpoints. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","Provider installation permission, exact repository identity, and native contents authority must all be retained."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"sourceRef":{"type":"string","maxLength":255},"targetRef":{"type":"string","maxLength":255},"syncPolicy":{"default":"manual","type":"string","enum":["manual","github-leader"]},"syncPullRequests":{"default":false,"type":"boolean","const":false},"syncIssues":{"default":false,"type":"boolean","const":false},"maxPackBytes":{"default":16777216,"type":"integer","minimum":1,"maximum":67108864},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["requestId","sourceRef","targetRef","installationId","repositoryId","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"sourceRef":{"type":"string","maxLength":255},"targetRef":{"type":"string","maxLength":255},"syncPolicy":{"default":"manual","type":"string","enum":["manual","github-leader"]},"syncPullRequests":{"default":false,"type":"boolean","const":false},"syncIssues":{"default":false,"type":"boolean","const":false},"maxPackBytes":{"default":16777216,"type":"integer","minimum":1,"maximum":67108864},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["requestId","sourceRef","targetRef","installationId","repositoryId","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":64},"sourceRef":{"type":"string","maxLength":255},"targetRef":{"type":"string","maxLength":255},"syncPolicy":{"default":"manual","type":"string","enum":["manual","github-leader"]},"syncPullRequests":{"default":false,"type":"boolean","const":false},"syncIssues":{"default":false,"type":"boolean","const":false},"maxPackBytes":{"default":16777216,"type":"integer","minimum":1,"maximum":67108864},"installationId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"repositoryId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["requestId","sourceRef","targetRef","installationId","repositoryId","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}},"required":["jobId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubMirror","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/pulls/{pr}/comments/{commentId}":{"get":{"tags":["GitHub"],"summary":"Get GitHub comment sync status","description":"Returns provider writeback status for one pull-request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The pull request and comment must belong to the exact repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"commentId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"commentId":{"$ref":"#/components/schemas/CommentId"},"state":{"type":"string","enum":["pending","promoted","superseded"]},"action":{"type":"string","enum":["comment-create","comment-edit","comment-delete"]},"jobId":{"type":["string","null"]},"providerState":{"type":["string","null"],"enum":["unsent","confirmed","outcome_unknown","blocked","not_delivered",null]},"dispatchSupported":{"type":"boolean"},"reconciliationRequired":{"type":"boolean"}},"required":["commentId","state","action","jobId","providerState","dispatchSupported","reconciliationRequired"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubPullsByPrCommentsByCommentId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/jobs/{jobId}":{"get":{"tags":["GitHub"],"summary":"Get a GitHub sync job","description":"Returns bounded status for one repository sync job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The job must belong to the exact repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"effectPermitted":{"type":"boolean"},"providerState":{"type":["string","null"],"enum":["unsent","confirmed","outcome_unknown","blocked","not_delivered",null]},"reconciliationRequired":{"type":"boolean"}},"required":["jobId","state","effectPermitted","providerState","reconciliationRequired"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubJobsByJobId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/jobs/{jobId}/recovery":{"get":{"tags":["GitHub"],"summary":"Inspect native recovery","description":"Inspects native Git recovery state for one sync job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The job must belong to the exact repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"configGeneration":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cancellationGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"leaseGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"effectPermitted":{"type":"boolean"},"gitOutcome":{"type":"string","enum":["not-started","unknown","applied","not-applied","conflict","cancelled"]},"nextAction":{"type":"string","enum":["cancel","reconcile","wait","none","repair_configuration"]},"availableActions":{"maxItems":3,"type":"array","items":{"type":"string","enum":["cancel","reconcile","cancel-native","accept-remote"]}},"latestRecovery":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^ghr_[0-9a-f]{64}$"},"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"action":{"type":"string","enum":["cancel","reconcile","cancel-native","accept-remote"]},"state":{"type":"string","enum":["queued","running","succeeded","blocked"]},"result":{"type":["string","null"],"enum":["cancelled","committed","definitely_not_committed","conflict","native_cancelled","native_pending","native_missing","authority_changed","configuration_changed","invalid_evidence","native_unavailable","superseded","observation_changed",null]}},"required":["id","jobId","action","state","result"],"additionalProperties":false},{"type":"null"}]}},"required":["jobId","state","configGeneration","cancellationGeneration","leaseGeneration","attempts","effectPermitted","gitOutcome","nextAction","availableActions","latestRecovery"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubJobsByJobIdRecovery","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["GitHub"],"summary":"Request native recovery","description":"Admits durable native Git recovery for one failed or uncertain sync job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Repository maintenance authority and the operation's retained native/provider authority are required. Configuration commonly checks both repository metadata-write and native contents-write as conditional requirements rather than claiming they are unconditional for every branch.","The job, expected native state, request identity, and configuration generation must match."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["cancel","reconcile","cancel-native","accept-remote"]},"expectedLeaseGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedConfigGeneration":{"type":"integer","minimum":1,"maximum":2147483647},"expectedCancellationGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedRefs":{"type":"object","properties":{"localOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"remoteOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["localOid","remoteOid"],"additionalProperties":false}},"required":["requestId","action","expectedLeaseGeneration","expectedConfigGeneration","expectedCancellationGeneration"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["cancel","reconcile","cancel-native","accept-remote"]},"expectedLeaseGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedConfigGeneration":{"type":"integer","minimum":1,"maximum":2147483647},"expectedCancellationGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedRefs":{"type":"object","properties":{"localOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"remoteOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["localOid","remoteOid"],"additionalProperties":false}},"required":["requestId","action","expectedLeaseGeneration","expectedConfigGeneration","expectedCancellationGeneration"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["cancel","reconcile","cancel-native","accept-remote"]},"expectedLeaseGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedConfigGeneration":{"type":"integer","minimum":1,"maximum":2147483647},"expectedCancellationGeneration":{"type":"integer","minimum":0,"maximum":2147483646},"expectedRefs":{"type":"object","properties":{"localOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"remoteOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["localOid","remoteOid"],"additionalProperties":false}},"required":["requestId","action","expectedLeaseGeneration","expectedConfigGeneration","expectedCancellationGeneration"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^ghr_[0-9a-f]{64}$"},"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"action":{"type":"string","enum":["cancel","reconcile","cancel-native","accept-remote"]},"state":{"type":"string","enum":["queued","running","succeeded","blocked"]},"result":{"type":["string","null"],"enum":["cancelled","committed","definitely_not_committed","conflict","native_cancelled","native_pending","native_missing","authority_changed","configuration_changed","invalid_evidence","native_unavailable","superseded","observation_changed",null]}},"required":["id","jobId","action","state","result"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoGithubJobsByJobIdRecovery","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/provider/pulls":{"get":{"tags":["GitHub"],"summary":"List provider pull snapshots","description":"Lists bounded GitHub pull-request snapshots retained for this repository. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","Only snapshots for the exact repository are returned."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"number":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string","maxLength":1024},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"headOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"updatedAt":{"type":"string","format":"date-time"}},"required":["number","title","state","draft","headOid","updatedAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubProviderPulls","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/provider/pulls/{number}/comments":{"get":{"tags":["GitHub"],"summary":"List provider pull comments","description":"Lists retained GitHub comment artifacts for one provider pull number. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The provider pull number must belong to the exact repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"number","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubProviderCommentList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubProviderPullsByNumberComments","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/provider/checks/{oid}":{"get":{"tags":["GitHub"],"summary":"List provider checks","description":"Lists retained GitHub check artifacts for one exact commit OID. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository in the route"}],"conditions":["Repository read authority is required. Basic email/password may use direct repository access; Basic token follows the scoped-grant branch.","The OID must be represented in retained provider artifacts for the exact repository."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"oid","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubProviderCheckList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoGithubProviderChecksByOid","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/pulls/{pr}/media":{"head":{"tags":["GitHub"],"summary":"Check pull request attachment metadata","description":"Proxies only a referenced canonical GitHub attachment. Supports a single bounded byte range and conditional requests. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository containing the referenced issue or pull request"}],"conditions":["The issue or pull request and canonical GitHub attachment reference must be visible. Basic email/password can use direct repository membership; Basic token uses the grant scope branch."]},"parameters":[{"name":"Range","in":"header","required":false,"description":"A single byte range in the form bytes=start-end.","schema":{"type":"string","pattern":"^bytes=[0-9]+-[0-9]*$"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Modified-Since","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Range","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048}}],"responses":{"200":{"description":"Attachment metadata; no body.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}}},"206":{"description":"Partial attachment metadata; no body.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}}},"304":{"description":"The attachment has not changed; no body.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-cache$"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"headApiReposByOwnerByRepoGithubPullsByPrMedia","x-gc2-ratelimit":{"policies":["api"]}},"get":{"tags":["GitHub"],"summary":"Stream a pull request attachment","description":"Proxies only a referenced canonical GitHub attachment. Supports a single bounded byte range and conditional requests. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository containing the referenced issue or pull request"}],"conditions":["The issue or pull request and canonical GitHub attachment reference must be visible. Basic email/password can use direct repository membership; Basic token uses the grant scope branch."]},"parameters":[{"name":"Range","in":"header","required":false,"description":"A single byte range in the form bytes=start-end.","schema":{"type":"string","pattern":"^bytes=[0-9]+-[0-9]*$"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Modified-Since","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Range","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048}}],"responses":{"200":{"description":"Attachment bytes.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"Partial attachment bytes.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}}}},"304":{"description":"The attachment has not changed; no body.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-cache$"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"getApiReposByOwnerByRepoGithubPullsByPrMedia","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/github/issues/{issue}/media":{"head":{"tags":["GitHub"],"summary":"Check issue attachment metadata","description":"Proxies only a referenced canonical GitHub attachment. Supports a single bounded byte range and conditional requests. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository containing the referenced issue or pull request"}],"conditions":["The issue or pull request and canonical GitHub attachment reference must be visible. Basic email/password can use direct repository membership; Basic token uses the grant scope branch."]},"parameters":[{"name":"Range","in":"header","required":false,"description":"A single byte range in the form bytes=start-end.","schema":{"type":"string","pattern":"^bytes=[0-9]+-[0-9]*$"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Modified-Since","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Range","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048}}],"responses":{"200":{"description":"Attachment metadata; no body.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}}},"206":{"description":"Partial attachment metadata; no body.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}}},"304":{"description":"The attachment has not changed; no body.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-cache$"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"headApiReposByOwnerByRepoGithubIssuesByIssueMedia","x-gc2-ratelimit":{"policies":["api"]}},"get":{"tags":["GitHub"],"summary":"Stream an issue attachment","description":"Proxies only a referenced canonical GitHub attachment. Supports a single bounded byte range and conditional requests. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the exact repository containing the referenced issue or pull request"}],"conditions":["The issue or pull request and canonical GitHub attachment reference must be visible. Basic email/password can use direct repository membership; Basic token uses the grant scope branch."]},"parameters":[{"name":"Range","in":"header","required":false,"description":"A single byte range in the form bytes=start-end.","schema":{"type":"string","pattern":"^bytes=[0-9]+-[0-9]*$"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Modified-Since","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"If-Range","in":"header","required":false,"schema":{"type":"string","maxLength":512}},{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048}}],"responses":{"200":{"description":"Attachment bytes.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"Partial attachment bytes.","headers":{"Content-Type":{"schema":{"type":"string","pattern":"^(image|video)/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Accept-Ranges":{"schema":{"type":"string"}},"Content-Range":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}}}},"304":{"description":"The attachment has not changed; no body.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-cache$"}},"Cross-Origin-Resource-Policy":{"schema":{"type":"string","pattern":"^same-origin$"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"operationId":"getApiReposByOwnerByRepoGithubIssuesByIssueMedia","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/":{"get":{"summary":"Get repository details","description":"Returns the repository’s metadata and viewer-specific access details. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepo","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update repository metadata","description":"Updates the repository description only if expectedVersion matches and returns the new generation. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536}},"required":["expectedVersion","description"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536}},"required":["expectedVersion","description"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536}},"required":["expectedVersion","description"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoMetadata"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepo","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Retire a repository","description":"Records repository retirement and returns its durable status. repoId and expectedVersion fence stale requests; 202 does not mean native data is already absent. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Repository ownership and retirement preconditions are rechecked.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["repoId","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["repoId","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["repoId","expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["retained","absent"]},"reason":{"type":"string","enum":["owner-delete","collaborator-revoked","org-member-revoked","org-member-role-changed","team-member-revoked"]},"failureCode":{"type":["string","null"],"enum":["native-retirement-unavailable",null]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["repoId","state","reason","failureCode","createdAt","completedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepo","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/summary":{"get":{"summary":"Get a repository summary","description":"Returns the compact repository identity and metadata used in repository listings. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoSummary"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoSummary","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/tree":{"get":{"summary":"List a source tree","description":"Lists up to 200 entries at a repository path from HEAD, a public branch or tag, or an exact commit OID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"path","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":4096},"path":{"type":"string","minLength":1,"maxLength":4096},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"mode":{"anyOf":[{"type":"string","maxLength":16},{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}]},"kind":{"type":"string","enum":["blob","tree","commit","symlink"]}},"required":["name","path","oid","kind"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["oid","items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoTree","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/blob":{"get":{"summary":"Read a source file","description":"Returns metadata and UTF-8 content for a file up to 1 MiB at HEAD, a public branch or tag, or an exact commit OID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"path":{"type":"string","minLength":1,"maxLength":4096},"size":{"type":"integer","minimum":0,"maximum":1048576},"binary":{"type":"boolean"},"content":{"type":["string","null"],"maxLength":1048576}},"required":["commit","oid","path","size","binary","content"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoBlob","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/image":{"get":{"responses":{"200":{"description":"Image bytes from the resolved commit.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"X-GC2-Commit":{"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"Content-Type":{"schema":{"type":"string","pattern":"^image/"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Content-Security-Policy":{"schema":{"type":"string"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"tags":["Repository source"],"summary":"Stream a source image","description":"Streams a supported image from the requested revision without buffering it. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"operationId":"getApiReposByOwnerByRepoImage","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/raw":{"get":{"responses":{"200":{"description":"Raw file bytes from the resolved commit.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"X-GC2-Commit":{"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"Content-Type":{"schema":{"type":"string"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Content-Security-Policy":{"schema":{"type":"string"}}},"content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"tags":["Repository source"],"summary":"Stream a raw source file","description":"Streams the file bytes and resolved commit without buffering the body. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["branch","tag"]}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"operationId":"getApiReposByOwnerByRepoRaw","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/commit":{"get":{"summary":"Get a commit","description":"Resolves HEAD, a public branch or tag, or an exact commit OID and returns the commit metadata. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCommit"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoCommit","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/commits":{"get":{"summary":"List commit history","description":"Returns cursor-paginated commits reachable from HEAD, a public branch or tag, or an exact commit OID, with at most 200 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/SourceCommit"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoCommits","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs":{"get":{"summary":"List branches and tags","description":"Returns cursor-paginated public branch and tag refs, optionally filtered by name, with at most 200 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"kind","in":"query","required":false,"schema":{"default":"branches","type":"string","enum":["branches","tags"]}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"isHead":{"type":"boolean"},"annotated":{"type":"boolean"},"targetCommit":{"type":"object","properties":{"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"summary":{"type":"string","maxLength":16384},"committedAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"object","properties":{"name":{"type":"string","maxLength":4096},"email":{"type":"string","maxLength":4096}},"required":["name","email"],"additionalProperties":false}},"required":["oid","summary","committedAt","author"],"additionalProperties":false},"verification":{"default":null,"anyOf":[{"type":"object","properties":{"verified":{"type":"boolean"},"reason":{"type":"string","enum":["valid","unsigned","unverified_key","bad_signature","unsupported_algorithm","unknown_error"]},"signer":{"anyOf":[{"type":"object","properties":{"handle":{"type":"string","maxLength":100},"keyId":{"type":"string","maxLength":64}},"required":["handle","keyId"],"additionalProperties":false},{"type":"null"}]}},"required":["verified","reason","signer"],"additionalProperties":false},{"type":"null"}]}},"required":["name","oid","isHead","annotated","targetCommit","verification"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoRefs","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/compare":{"get":{"summary":"Compare two revisions","description":"Returns cursor-paginated file differences between two public refs, optionally pinned to exact commit OIDs, with at most 500 files per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"base","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":255}},{"name":"baseOid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"head","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":255}},{"name":"headOid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"base":{"type":"string","pattern":"^[0-9a-f]{40}$"},"head":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"oldPath":{"type":["string","null"],"minLength":1,"maxLength":4096},"status":{"type":"string","enum":["added","deleted","modified","typeChanged","conflicted","renamed","copied"]},"binary":{"type":"boolean"},"tooLarge":{"type":"boolean"},"additions":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["path"],"additionalProperties":false}}},"required":["next","base","head","items"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoCompare","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/compare/files":{"post":{"summary":"Read compared file patches","description":"Returns hunks for up to 64 listed paths of a comparison pinned to the exact base and head commit OIDs a compare page returned. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"string","minLength":1,"maxLength":255},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"head":{"type":"string","minLength":1,"maxLength":255},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"paths":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}}},"required":["base","baseOid","head","headOid","paths"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"base":{"type":"string","minLength":1,"maxLength":255},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"head":{"type":"string","minLength":1,"maxLength":255},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"paths":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}}},"required":["base","baseOid","head","headOid","paths"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"base":{"type":"string","minLength":1,"maxLength":255},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"head":{"type":"string","minLength":1,"maxLength":255},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"paths":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}}},"required":["base","baseOid","head","headOid","paths"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"string","pattern":"^[0-9a-f]{40}$"},"head":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"oldPath":{"type":["string","null"],"minLength":1,"maxLength":4096},"status":{"type":"string","enum":["added","deleted","modified","typeChanged","conflicted","renamed","copied"]},"additions":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletions":{"type":"integer","minimum":0,"maximum":9007199254740991},"binary":{"type":"boolean"},"tooLarge":{"type":"boolean"},"hunksOmitted":{"type":"boolean"},"oldContent":{"type":["string","null"],"maxLength":262144},"newContent":{"type":["string","null"],"maxLength":262144},"oldContentUnavailableReason":{"type":"string","enum":["binary","too_large","budget_exhausted","non_blob"]},"newContentUnavailableReason":{"type":"string","enum":["binary","too_large","budget_exhausted","non_blob"]},"hunks":{"maxItems":65536,"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"maxItems":262144,"type":"array","items":{"type":"object","properties":{"origin":{"type":"string","enum":[" ","+","-"]},"content":{"type":"string","maxLength":262144}},"required":["origin","content"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}}},"required":["path"],"additionalProperties":false}}},"required":["base","head","items"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"postApiReposByOwnerByRepoCompareFiles","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/blame":{"get":{"summary":"Blame a source file","description":"Attributes up to 2,000 requested lines of a file at HEAD, a public branch or tag, or an exact commit OID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096}},{"name":"start","in":"query","required":false,"schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"end","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"path":{"type":"string","minLength":1,"maxLength":4096},"items":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"finalStartLine":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"linesCount":{"type":"integer","exclusiveMinimum":0,"maximum":2000},"originalStartLine":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"commitOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"author":{"type":"string","maxLength":4096}},"required":["finalStartLine","linesCount","originalStartLine","commitOid","author"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["commit","path","items","truncated"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoBlame","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/search":{"get":{"summary":"Search repository source","description":"Searches files at HEAD, a public branch or tag, or an exact commit OID and returns at most 1,000 matches with up to 10 context lines. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ref","in":"query","required":false,"schema":{"default":"HEAD","type":"string","minLength":1,"maxLength":255}},{"name":"oid","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"path","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}},{"name":"pattern","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"ignoreCase","in":"query","required":false,"schema":{"type":["boolean","string"]}},{"name":"isRegex","in":"query","required":false,"schema":{"type":["boolean","string"]}},{"name":"maxMatches","in":"query","required":false,"schema":{"default":100,"type":"integer","minimum":1,"maximum":1000}},{"name":"contextLines","in":"query","required":false,"schema":{"default":3,"type":"integer","minimum":0,"maximum":10}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"matches":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"lineNumber":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"line":{"type":"string","maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"contextBefore":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"lineNumber":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"line":{"type":"string","maxLength":65536}},"required":["lineNumber","line"],"additionalProperties":false}},"contextAfter":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"lineNumber":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"line":{"type":"string","maxLength":65536}},"required":["lineNumber","line"],"additionalProperties":false}}},"required":["lineNumber","line","path","contextBefore","contextAfter"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["ref","commit","matches","truncated"],"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"operationId":"getApiReposByOwnerByRepoSearch","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/forks":{"get":{"summary":"List repository forks","description":"Returns a cursor-paginated page of repositories forked from this repository. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoCollectionPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ServiceUnavailableProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}}},"operationId":"getApiReposByOwnerByRepoForks","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/fork":{"post":{"summary":"Fork a repository","description":"Admits a fork under the requested owner. Returns 200 when complete or 202 with durable admission status; requestKey, or the source-owner-name default, makes retries converge. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Authentication is required; destination namespace admission and source visibility are checked separately.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Basic authentication is token only; email/password is not accepted."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","maxLength":104},"requestKey":{"type":"string","minLength":1,"maxLength":255}},"required":["owner"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","maxLength":104},"requestKey":{"type":"string","minLength":1,"maxLength":255}},"required":["owner"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","maxLength":104},"requestKey":{"type":"string","minLength":1,"maxLength":255}},"required":["owner"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["pending","running","outcome_unknown","complete","blocked"]},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string"}},"required":["repoId","state","owner","name"],"additionalProperties":false}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"state":{"type":"string","enum":["pending","running","outcome_unknown","complete","blocked"]},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string"}},"required":["repoId","state","owner","name"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ServiceUnavailableProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}}},"operationId":"postApiReposByOwnerByRepoFork","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/upstream":{"get":{"summary":"Get fork upstream status","description":"Returns the fork's upstream repository and whether its default branch can be fast-forwarded. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"parent":{"$ref":"#/components/schemas/RepoParent"},"defaultBranch":{"type":"string"},"headOid":{"type":["string","null"],"pattern":"^[0-9a-f]{40}$"},"parentHeadOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"aheadBy":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"behindBy":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"canFastForward":{"type":"boolean"}},"required":["parent","defaultBranch","headOid","parentHeadOid","aheadBy","behindBy","canFastForward"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ServiceUnavailableProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}}},"operationId":"getApiReposByOwnerByRepoUpstream","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/upstream/sync":{"post":{"summary":"Fast-forward a fork from upstream","description":"Fast-forwards the fork's default branch only when its current head equals expectedHeadOid; diverged histories must be merged through a pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","Both the fork and its upstream must remain readable, and the update must be a fast-forward."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedHeadOid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["expectedHeadOid"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedHeadOid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["expectedHeadOid"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedHeadOid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["expectedHeadOid"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"previousHeadOid":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"required":["headOid","previousHeadOid"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ServiceUnavailableProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}}},"operationId":"postApiReposByOwnerByRepoUpstreamSync","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/labels":{"get":{"summary":"List repository labels","description":"Returns cursor-paginated labels, optionally filtered by name, with at most 100 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoLabels","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a repository label","description":"Creates a label with a unique name, color, and optional description. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096}},"required":["name","color"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096}},"required":["name","color"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096}},"required":["name","color"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Label"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoLabels","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/labels/{label}":{"get":{"summary":"Get a repository label","description":"Returns one label by its stable label ID or a concealed not-found result. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"label","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Label"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoLabelsByLabel","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update a repository label","description":"Updates the label; at least one mutable field is required. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"label","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":{"type":["string","null"],"maxLength":4096},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Label"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoLabelsByLabel","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete a repository label","description":"Deletes the label and returns a deletion receipt. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"label","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoLabelsByLabel","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/milestones":{"get":{"summary":"List repository milestones","description":"Returns cursor-paginated milestones with issue completion and optional open or closed state filtering, at most 100 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}},{"name":"state","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["open","closed","all"]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MilestonePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoMilestones","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a repository milestone","description":"Creates an open milestone with a title and optional description or due date; the response is a write receipt without issue progress. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["title"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["title"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["title"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Milestone"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoMilestones","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/milestones/{milestone}":{"get":{"summary":"Get a repository milestone","description":"Returns one milestone with issue completion by its stable milestone ID or a concealed not-found result. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"milestone","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}},{"name":"state","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["open","closed","all"]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MilestoneListItem"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoMilestonesByMilestone","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update a repository milestone","description":"Updates the milestone; the response is a write receipt without issue progress. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"milestone","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"state":{"type":"string","enum":["open","closed"]}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"state":{"type":"string","enum":["open","closed"]}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"state":{"type":"string","enum":["open","closed"]}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Milestone"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoMilestonesByMilestone","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete a repository milestone","description":"Deletes the milestone and returns a deletion receipt. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"milestone","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoMilestonesByMilestone","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/attachments/":{"post":{"tags":["Attachments"],"summary":"Reserve an attachment upload","description":"Creates an idempotent upload reservation for the declared SHA-256 digest and byte count, capped at 10 MiB. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"size":{"type":"integer","minimum":1,"maximum":10485760}},"required":["requestKey","sha256","size"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"size":{"type":"integer","minimum":1,"maximum":10485760}},"required":["requestKey","sha256","size"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"size":{"type":"integer","minimum":1,"maximum":10485760}},"required":["requestKey","sha256","size"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["reserved","writing","ready","deleting","deleted","rejected"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":["string","null"],"enum":["image/png","image/jpeg","image/gif","image/webp",null]}},"required":["id","state","size","contentType"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoAttachments","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/attachments/{attachment}":{"put":{"parameters":[{"name":"Content-Length","in":"header","required":true,"description":"Decimal byte count, from 1 through 10485760.","schema":{"type":"integer","minimum":1,"maximum":10485760}},{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Attachment bytes; the body is streamed and not buffered.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"tags":["Attachments"],"summary":"Stream attachment bytes into a reservation","description":"Uploads the exact reserved byte count as an unencoded stream. Content-Length is required; Transfer-Encoding is not accepted. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["reserved","writing","ready","deleting","deleted","rejected"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":["string","null"],"enum":["image/png","image/jpeg","image/gif","image/webp",null]}},"required":["id","state","size","contentType"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoAttachmentsByAttachment","x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["Attachments"],"summary":"Delete an attachment","description":"Deletes an unreferenced attachment and returns its resulting storage state; referenced attachments cannot be deleted. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["reserved","writing","ready","deleting","deleted","rejected"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":["string","null"],"enum":["image/png","image/jpeg","image/gif","image/webp",null]}},"required":["id","state","size","contentType"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoAttachmentsByAttachment","x-gc2-ratelimit":{"policies":["api"]}},"get":{"responses":{"200":{"description":"Attachment bytes.","headers":{"Content-Type":{"schema":{"type":"string"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Content-Disposition":{"schema":{"type":"string"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"Content-Security-Policy":{"schema":{"type":"string"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"tags":["Attachments"],"summary":"Read a repository attachment","description":"Streams an authorized attachment without buffering it. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getApiReposByOwnerByRepoAttachmentsByAttachment","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/attachments/{attachment}/status":{"get":{"tags":["Attachments"],"summary":"Inspect an attachment upload","description":"Returns the reservation, upload, and native-storage recovery state without reading attachment bytes. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["reserved","writing","ready","deleting","deleted","rejected"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":["string","null"],"enum":["image/png","image/jpeg","image/gif","image/webp",null]},"cancelRequested":{"type":"boolean"},"nativeClosure":{"type":"string","enum":["unstarted","completed","not-written","unknown"]},"expired":{"type":"boolean"},"nextAction":{"type":"string","enum":["upload","cancel","reconcile","delete","await-native-closure","none"]},"custody":{"type":"string","enum":["reserved","used","released"]}},"required":["id","state","size","contentType","cancelRequested","nativeClosure","expired","nextAction","custody"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoAttachmentsByAttachmentStatus","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/attachments/{attachment}/cancel":{"post":{"tags":["Attachments"],"summary":"Cancel an attachment upload","description":"Cancels an unfinished reservation and returns its recovery state; already completed storage is reported rather than discarded. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["reserved","writing","ready","deleting","deleted","rejected"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":["string","null"],"enum":["image/png","image/jpeg","image/gif","image/webp",null]},"cancelRequested":{"type":"boolean"},"nativeClosure":{"type":"string","enum":["unstarted","completed","not-written","unknown"]},"expired":{"type":"boolean"},"nextAction":{"type":"string","enum":["upload","cancel","reconcile","delete","await-native-closure","none"]},"custody":{"type":"string","enum":["reserved","used","released"]}},"required":["id","state","size","contentType","cancelRequested","nativeClosure","expired","nextAction","custody"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoAttachmentsByAttachmentCancel","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/attachments/{attachment}/reconcile":{"post":{"tags":["Attachments"],"summary":"Reconcile an attachment upload","description":"Checks native storage after an uncertain upload outcome and publishes the attachment as ready only when the reserved object is complete. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:attachments:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"attachments","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"attachment","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["reserved","writing","ready","deleting","deleted","rejected"]},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":["string","null"],"enum":["image/png","image/jpeg","image/gif","image/webp",null]}},"required":["id","state","size","contentType"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoAttachmentsByAttachmentReconcile","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/settings/":{"get":{"summary":"Get repository settings","description":"Returns editable repository metadata and its current configuration generation. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"deleteBranchOnMerge":{"type":"boolean"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","version","description","homepage","topics","deleteBranchOnMerge","updatedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoSettings","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Update repository settings","description":"Replaces editable metadata when expectedVersion matches; topics are limited to 20 unique values. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"deleteBranchOnMerge":{"type":"boolean"}},"required":["expectedVersion","description","homepage","topics","deleteBranchOnMerge"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"deleteBranchOnMerge":{"type":"boolean"}},"required":["expectedVersion","description","homepage","topics","deleteBranchOnMerge"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"deleteBranchOnMerge":{"type":"boolean"}},"required":["expectedVersion","description","homepage","topics","deleteBranchOnMerge"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":{"type":["string","null"],"maxLength":65536},"homepage":{"type":["string","null"],"maxLength":255,"format":"uri"},"topics":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,49}$"}},"deleteBranchOnMerge":{"type":"boolean"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","version","description","homepage","topics","deleteBranchOnMerge","updatedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoSettings","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/settings/visibility":{"put":{"summary":"Update repository visibility","description":"Changes repository visibility when expectedVersion matches the current configuration. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"visibility":{"type":"string","enum":["public","private"]}},"required":["expectedVersion","visibility"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"visibility":{"type":"string","enum":["public","private"]}},"required":["expectedVersion","visibility"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"visibility":{"type":"string","enum":["public","private"]}},"required":["expectedVersion","visibility"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"visibility":{"type":"string","enum":["public","private"]},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","visibility","version","updatedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoSettingsVisibility","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/mirrors/":{"get":{"tags":["Git mirrors"],"summary":"List Git mirrors","description":"Returns up to 16 configured Git mirrors with their latest job status. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":16,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxPackBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"authenticated":{"type":"boolean"},"state":{"type":"string","enum":["active","paused"]},"commonOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"lastSyncedAt":{"type":["string","null"]},"lastError":{"type":["string","null"],"maxLength":128},"job":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^gm_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"effectPermitted":{"type":"boolean"},"reconciliationRequired":{"type":"boolean"},"error":{"type":["string","null"],"maxLength":128}},"required":["id","state","effectPermitted","reconciliationRequired","error"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","url","localRef","remoteRef","direction","conflictWinner","intervalMinutes","maxPackBytes","authenticated","state","commonOid","lastSyncedAt","lastError","job"],"additionalProperties":false}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoMirrors","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Git mirrors"],"summary":"Configure a Git mirror","description":"Creates a mirror and queues its first sync. requestId makes retries idempotent and expectedVersion must be 0 for a new mirror; 202 is an admission receipt, not sync completion. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write","repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"},{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"default":"gitcafe","type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"default":5,"type":"integer","minimum":5,"maximum":1440},"maxPackBytes":{"default":67108864,"type":"integer","minimum":1,"maximum":67108864},"auth":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"basic"},"username":{"type":"string","minLength":1,"maxLength":256},"password":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","username","password"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"required":["requestId","expectedVersion","url","localRef","remoteRef","direction"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"default":"gitcafe","type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"default":5,"type":"integer","minimum":5,"maximum":1440},"maxPackBytes":{"default":67108864,"type":"integer","minimum":1,"maximum":67108864},"auth":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"basic"},"username":{"type":"string","minLength":1,"maxLength":256},"password":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","username","password"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"required":["requestId","expectedVersion","url","localRef","remoteRef","direction"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"default":"gitcafe","type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"default":5,"type":"integer","minimum":5,"maximum":1440},"maxPackBytes":{"default":67108864,"type":"integer","minimum":1,"maximum":67108864},"auth":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"basic"},"username":{"type":"string","minLength":1,"maxLength":256},"password":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","username","password"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"required":["requestId","expectedVersion","url","localRef","remoteRef","direction"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"mirror":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxPackBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"authenticated":{"type":"boolean"},"state":{"type":"string","enum":["active","paused"]},"commonOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"lastSyncedAt":{"type":["string","null"]},"lastError":{"type":["string","null"],"maxLength":128},"job":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^gm_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"effectPermitted":{"type":"boolean"},"reconciliationRequired":{"type":"boolean"},"error":{"type":["string","null"],"maxLength":128}},"required":["id","state","effectPermitted","reconciliationRequired","error"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","url","localRef","remoteRef","direction","conflictWinner","intervalMinutes","maxPackBytes","authenticated","state","commonOid","lastSyncedAt","lastError","job"],"additionalProperties":false},"jobId":{"type":["string","null"],"pattern":"^gm_[0-9a-f]{64}$"}},"required":["mirror","jobId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoMirrors","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/mirrors/{mirror}":{"put":{"tags":["Git mirrors"],"summary":"Reconfigure a Git mirror","description":"Replaces mirror configuration when expectedVersion matches and queues a sync. Reusing requestId with the same input returns the prior receipt; 202 does not mean the sync completed. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write","repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"},{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"mirror","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"default":"gitcafe","type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"default":5,"type":"integer","minimum":5,"maximum":1440},"maxPackBytes":{"default":67108864,"type":"integer","minimum":1,"maximum":67108864},"auth":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"basic"},"username":{"type":"string","minLength":1,"maxLength":256},"password":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","username","password"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"required":["requestId","expectedVersion","url","localRef","remoteRef","direction"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"default":"gitcafe","type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"default":5,"type":"integer","minimum":5,"maximum":1440},"maxPackBytes":{"default":67108864,"type":"integer","minimum":1,"maximum":67108864},"auth":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"basic"},"username":{"type":"string","minLength":1,"maxLength":256},"password":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","username","password"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"required":["requestId","expectedVersion","url","localRef","remoteRef","direction"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"default":"gitcafe","type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"default":5,"type":"integer","minimum":5,"maximum":1440},"maxPackBytes":{"default":67108864,"type":"integer","minimum":1,"maximum":67108864},"auth":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"basic"},"username":{"type":"string","minLength":1,"maxLength":256},"password":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","username","password"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"required":["requestId","expectedVersion","url","localRef","remoteRef","direction"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"mirror":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxPackBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"authenticated":{"type":"boolean"},"state":{"type":"string","enum":["active","paused"]},"commonOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"lastSyncedAt":{"type":["string","null"]},"lastError":{"type":["string","null"],"maxLength":128},"job":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^gm_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"effectPermitted":{"type":"boolean"},"reconciliationRequired":{"type":"boolean"},"error":{"type":["string","null"],"maxLength":128}},"required":["id","state","effectPermitted","reconciliationRequired","error"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","url","localRef","remoteRef","direction","conflictWinner","intervalMinutes","maxPackBytes","authenticated","state","commonOid","lastSyncedAt","lastError","job"],"additionalProperties":false},"jobId":{"type":["string","null"],"pattern":"^gm_[0-9a-f]{64}$"}},"required":["mirror","jobId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoMirrorsByMirror","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/mirrors/{mirror}/{action}":{"post":{"tags":["Git mirrors"],"summary":"Pause, resume, or sync a Git mirror","description":"Applies the path action when expectedVersion matches. requestId makes retries idempotent; 202 returns an admission receipt, and pause has no job ID. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write","repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"},{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"mirror","in":"path","required":true,"schema":{"type":"string"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["pause","resume","sync"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["expectedVersion","requestId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["expectedVersion","requestId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["expectedVersion","requestId"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"mirror":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"url":{"type":"string","maxLength":2048},"localRef":{"type":"string","maxLength":255},"remoteRef":{"type":"string","maxLength":255},"direction":{"type":"string","enum":["push","pull","bidirectional"]},"conflictWinner":{"type":"string","enum":["gitcafe","remote"]},"intervalMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxPackBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"authenticated":{"type":"boolean"},"state":{"type":"string","enum":["active","paused"]},"commonOid":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"lastSyncedAt":{"type":["string","null"]},"lastError":{"type":["string","null"],"maxLength":128},"job":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^gm_[0-9a-f]{64}$"},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"effectPermitted":{"type":"boolean"},"reconciliationRequired":{"type":"boolean"},"error":{"type":["string","null"],"maxLength":128}},"required":["id","state","effectPermitted","reconciliationRequired","error"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","url","localRef","remoteRef","direction","conflictWinner","intervalMinutes","maxPackBytes","authenticated","state","commonOid","lastSyncedAt","lastError","job"],"additionalProperties":false},"jobId":{"type":["string","null"],"pattern":"^gm_[0-9a-f]{64}$"}},"required":["mirror","jobId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoMirrorsByMirrorByAction","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/transfer":{"post":{"summary":"Transfer a repository","description":"Moves the repository to a new owner, optionally renames it, and pauses synchronization. repoId and expectedVersion fence stale requests. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"newOwner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"newName":{"type":"string","maxLength":104}},"required":["repoId","expectedVersion","newOwner"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"newOwner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"newName":{"type":"string","maxLength":104}},"required":["repoId","expectedVersion","newOwner"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"repoId":{"$ref":"#/components/schemas/RepoId"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"newOwner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"newName":{"type":"string","maxLength":104}},"required":["repoId","expectedVersion","newOwner"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RepoId"},"owner":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$"},"name":{"type":"string","pattern":"^[a-z0-9._-]{1,100}$"},"syncPaused":{"type":"boolean"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","owner","name","syncPaused","version"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoTransfer","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/branches/deleted":{"get":{"summary":"List deleted branches","description":"Returns up to 100 retained deleted branches, with optional name search and cursor pagination. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":255}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"branchName":{"type":"string"},"commitOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"deletedAt":{"type":"string","format":"date-time"},"restoredAt":{"type":["string","null"],"format":"date-time"}},"required":["id","branchName","commitOid","deletedAt","restoredAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoBranchesDeleted","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/branches/deleted/{id}/restore":{"post":{"summary":"Restore a deleted branch","description":"Queues restoration of a retained branch when expectedVersion matches. 202 is a push-job receipt, not restoration completion. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoBranchesDeletedByIdRestore","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/restorations":{"get":{"summary":"List branch-restoration jobs","description":"Returns up to 30 recent push jobs that carry a branch-restoration intent. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitPushStatus"}}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsRestorations","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/restorations/{job}":{"get":{"summary":"Get branch-restoration status","description":"Returns one branch-restoration push job by job ID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsRestorationsByJob","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/restorations/{job}/inspect":{"post":{"summary":"Reconcile a branch restoration","description":"Inspects native outcome for a restoration job when expectedVersion matches and returns the updated status. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoRefsRestorationsByJobInspect","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/settings/default-branch/":{"put":{"summary":"Change the default branch","description":"Starts an idempotent default-branch change guarded by expectedVersion. Returns 200 when complete or 202 while native work remains pending. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"defaultBranch":{"type":"string","maxLength":255}},"required":["requestId","expectedVersion","defaultBranch"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"defaultBranch":{"type":"string","maxLength":255}},"required":["requestId","expectedVersion","defaultBranch"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"defaultBranch":{"type":"string","maxLength":255}},"required":["requestId","expectedVersion","defaultBranch"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","completed","failed","conflict"]},"defaultBranch":{"type":"string","maxLength":255},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","defaultBranch","version"],"additionalProperties":false}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","completed","failed","conflict"]},"defaultBranch":{"type":"string","maxLength":255},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","defaultBranch","version"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoSettingsDefault-branch","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"get":{"summary":"Get a default-branch change by request ID","description":"Returns the recorded status of the default-branch change identified by requestId. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"requestId","in":"query","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","completed","failed","conflict"]},"defaultBranch":{"type":"string","maxLength":255},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","defaultBranch","version"],"additionalProperties":false}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","completed","failed","conflict"]},"defaultBranch":{"type":"string","maxLength":255},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","defaultBranch","version"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoSettingsDefault-branch","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/settings/default-branch/{id}/inspect":{"post":{"summary":"Reconcile a default-branch change","description":"Inspects native outcome for a pending change and returns 200 when settled or 202 while it remains pending. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","completed","failed","conflict"]},"defaultBranch":{"type":"string","maxLength":255},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","defaultBranch","version"],"additionalProperties":false}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","completed","failed","conflict"]},"defaultBranch":{"type":"string","maxLength":255},"version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","defaultBranch","version"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoSettingsDefault-branchByIdInspect","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/deletions/":{"post":{"summary":"Delete a Git reference","description":"Queues deletion of the ref only if its current OID and repository configuration generation match the request. 202 is a push-job receipt, not deletion completion. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"expectedOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ref","expectedOid","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"expectedOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ref","expectedOid","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"expectedOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ref","expectedOid","expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoRefsDeletions","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"get":{"summary":"List reference-deletion jobs","description":"Returns up to 30 recent push jobs that carry a reference-deletion intent. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitPushStatus"}}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsDeletions","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/deletions/{job}":{"get":{"summary":"Get reference-deletion status","description":"Returns one reference-deletion push job by job ID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsDeletionsByJob","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/deletions/{job}/inspect":{"post":{"summary":"Reconcile a reference deletion","description":"Inspects native outcome for a deletion job when expectedVersion matches and returns the updated status. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoRefsDeletionsByJobInspect","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/creations/":{"post":{"summary":"Create a Git branch","description":"Creates an absent branch at an exact existing commit under current push policy. Requires the captured repository configuration generation. 202 is a durable push receipt; check status for completion. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ref":{"type":"string","minLength":1,"maxLength":255},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestKey","ref","oid","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ref":{"type":"string","minLength":1,"maxLength":255},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestKey","ref","oid","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ref":{"type":"string","minLength":1,"maxLength":255},"oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestKey","ref","oid","expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoRefsCreations","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"get":{"summary":"List branch-creation jobs","description":"Returns up to 30 recent push jobs that carry a branch-creation intent. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitPushStatus"}}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsCreations","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/creations/requests/{requestKey}":{"get":{"summary":"Find an exact branch creation request","description":"Returns the current actor's retained branch creation for the exact caller nonce, or null if no admission is visible. Null does not fence a delayed request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"requestKey","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"job":{"anyOf":[{"$ref":"#/components/schemas/GitPushStatus"},{"type":"null"}]}},"required":["job"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsCreationsRequestsByRequestKey","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/creations/{job}":{"get":{"summary":"Get branch-creation status","description":"Returns one branch-creation push job by job ID. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRefsCreationsByJob","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/refs/creations/{job}/inspect":{"post":{"summary":"Reconcile a branch creation","description":"Inspects native outcome for a branch-creation job when expectedVersion matches and returns the updated status. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^gpush_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPushStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoRefsCreationsByJobInspect","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/maintenance/":{"post":{"summary":"Request Git maintenance","description":"Queues bounded native Git maintenance. requestKey makes retries idempotent and expectedVersion fences configuration changes; 202 is a job receipt, not completion. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"strategy":{"type":"string","enum":["accelerators","geometric"]},"maxRewriteBytes":{"type":"integer","exclusiveMinimum":0,"maximum":26843545600},"geometricFactor":{"type":"integer","minimum":2,"maximum":16},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestKey","strategy","maxRewriteBytes","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"strategy":{"type":"string","enum":["accelerators","geometric"]},"maxRewriteBytes":{"type":"integer","exclusiveMinimum":0,"maximum":26843545600},"geometricFactor":{"type":"integer","minimum":2,"maximum":16},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestKey","strategy","maxRewriteBytes","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"strategy":{"type":"string","enum":["accelerators","geometric"]},"maxRewriteBytes":{"type":"integer","exclusiveMinimum":0,"maximum":26843545600},"geometricFactor":{"type":"integer","minimum":2,"maximum":16},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["requestKey","strategy","maxRewriteBytes","expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoMaintenance","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/maintenance/{job}":{"get":{"summary":"Get Git maintenance status","description":"Returns the current state and bounded native evidence for a maintenance job. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^maint_[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceStatus"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoMaintenanceByJob","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/maintenance/{job}/control":{"post":{"summary":"Control a Git maintenance job","description":"Cancels, reconciles, or rearms a maintenance job when expectedVersion matches its current version. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"job","in":"path","required":true,"schema":{"type":"string","pattern":"^maint_[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"action":{"type":"string","enum":["cancel","reconcile","rearm"]}},"required":["expectedVersion","action"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"action":{"type":"string","enum":["cancel","reconcile","rearm"]}},"required":["expectedVersion","action"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"action":{"type":"string","enum":["cancel","reconcile","rearm"]}},"required":["expectedVersion","action"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MaintenanceStatus"},{"type":"object","properties":{"jobId":{"type":"string","pattern":"^maint_[0-9a-f]{64}$"},"controlVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"debtGeneration":{"type":"integer","minimum":0,"maximum":9007199254740991},"automation":{"type":"string","const":"rearmed"}},"required":["jobId","controlVersion","debtGeneration","automation"],"additionalProperties":false}]}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoMaintenanceByJobControl","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/star":{"get":{"summary":"Get your repository star state","description":"Reports whether the caller has starred this repository and its current star count. Public repositories allow anonymous reads, with no personal star selected.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"starred":{"type":"boolean"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["starred","count"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoStar","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Star a repository","description":"Adds the authenticated actor’s star idempotently and returns the resulting state and count. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":[]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"starred":{"type":"boolean"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["starred","count"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoStar","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Unstar a repository","description":"Removes the authenticated actor’s star idempotently and returns the resulting state and count. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"write"},"target":"the repository identified by owner and name"}],"conditions":[]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"starred":{"type":"boolean"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["starred","count"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoStar","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/stargazers":{"get":{"summary":"List repository stargazers","description":"Returns a cursor-paginated list of actors who starred the repository, with at most 50 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:metadata:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"metadata","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"starredAt":{"type":"string","format":"date-time"}},"required":["actorId","handle","displayName","avatarUrl","starredAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoStargazers","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/statuses/{hash}":{"post":{"summary":"Create a commit status","description":"Records a status for the exact commit OID and context. A later status for the same context supersedes it in the combined result. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"hash","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","minLength":1,"maxLength":255},"state":{"type":"string","enum":["error","failure","pending","success"]},"description":{"type":["string","null"],"maxLength":512},"target_url":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["context","state"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"context":{"type":"string","minLength":1,"maxLength":255},"state":{"type":"string","enum":["error","failure","pending","success"]},"description":{"type":["string","null"],"maxLength":512},"target_url":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["context","state"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"context":{"type":"string","minLength":1,"maxLength":255},"state":{"type":"string","enum":["error","failure","pending","success"]},"description":{"type":["string","null"],"maxLength":512},"target_url":{"type":["string","null"],"maxLength":2048,"format":"uri"}},"required":["context","state"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"context":{"type":"string"},"state":{"type":"string","enum":["error","failure","pending","success"]},"description":{"type":["string","null"]},"targetUrl":{"type":["string","null"]},"creatorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","context","state","description","targetUrl","creatorId","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoStatusesByHash","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/commits/{hash}/status":{"get":{"summary":"Get the combined commit status","description":"Returns the latest status for each context on the exact commit OID and their combined state. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"hash","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","enum":["failure","pending","success"]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"statuses":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"context":{"type":"string"},"state":{"type":"string","enum":["error","failure","pending","success"]},"description":{"type":["string","null"]},"targetUrl":{"type":["string","null"]},"creatorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","context","state","description","targetUrl","creatorId","createdAt","updatedAt"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["state","totalCount","statuses","truncated"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCommitsByHashStatus","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/commits/{hash}/statuses":{"get":{"summary":"List commit status history","description":"Returns a cursor-paginated history for the exact commit OID, newest first, with at most 100 entries per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"hash","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"context":{"type":"string"},"state":{"type":"string","enum":["error","failure","pending","success"]},"description":{"type":["string","null"]},"targetUrl":{"type":["string","null"]},"creatorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","context","state","description","targetUrl","creatorId","createdAt","updatedAt"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCommitsByHashStatuses","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/bindings/":{"get":{"tags":["CI"],"summary":"List repository CI bindings","description":"Lists the repository’s CI integration bindings and their publication and log-exposure settings. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CiBindingRead"}},"next":{"default":null,"type":"null"}},"required":["items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCiBindings","x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["CI"],"summary":"Create a repository CI binding","description":"Binds an existing organization CI integration to a pipeline and status context for this repository. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"integrationId":{"type":"string"},"pipeline":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$"},"context":{"type":"string","minLength":1,"maxLength":255},"publishToGithub":{"default":false,"type":"boolean"},"exposeLogs":{"default":false,"type":"boolean"}},"required":["integrationId","pipeline","context"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"integrationId":{"type":"string"},"pipeline":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$"},"context":{"type":"string","minLength":1,"maxLength":255},"publishToGithub":{"default":false,"type":"boolean"},"exposeLogs":{"default":false,"type":"boolean"}},"required":["integrationId","pipeline","context"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"integrationId":{"type":"string"},"pipeline":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$"},"context":{"type":"string","minLength":1,"maxLength":255},"publishToGithub":{"default":false,"type":"boolean"},"exposeLogs":{"default":false,"type":"boolean"}},"required":["integrationId","pipeline","context"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiBindingRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoCiBindings","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/bindings/{bindingId}":{"get":{"tags":["CI"],"summary":"Get a repository CI binding","description":"Returns one CI integration binding and its publication and log-exposure settings. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiBindingRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCiBindingsByBindingId","x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["CI"],"summary":"Update a repository CI binding","description":"Updates whether the binding is enabled and may publish to GitHub or expose logs. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"enabled":{"type":"boolean"},"publishToGithub":{"type":"boolean"},"exposeLogs":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"enabled":{"type":"boolean"},"publishToGithub":{"type":"boolean"},"exposeLogs":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"enabled":{"type":"boolean"},"publishToGithub":{"type":"boolean"},"exposeLogs":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiBindingRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoCiBindingsByBindingId","x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["CI"],"summary":"Delete a repository CI binding","description":"Deletes the binding and returns its deletion receipt. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoCiBindingsByBindingId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/runs":{"get":{"tags":["CI"],"summary":"List repository CI runs","description":"Returns cursor-paginated CI runs, optionally filtered by state, with at most 100 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"commit","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["queued","running","blocked","passed","failed","canceled","errored"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","const":"external"},"provider":{"type":"string","const":"buildkite"},"repoId":{"type":"string"},"workflowName":{"type":"string"},"pipeline":{"type":["string","null"]},"commitOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"ref":{"type":"string"},"state":{"type":"string","enum":["queued","running","blocked","passed","failed","canceled","errored"]},"statusContext":{"type":"string"},"externalId":{"type":["string","null"]},"externalUrl":{"type":["string","null"]},"checkRunId":{"type":["string","null"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"startedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"finishedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"publication":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["pending","active","blocked"]},"error":{"type":["string","null"]},"url":{"type":["string","null"]}},"required":["state","error","url"],"additionalProperties":false},{"type":"null"}]}},"required":["id","source","provider","repoId","workflowName","pipeline","commitOid","ref","state","statusContext","externalId","externalUrl","checkRunId","version","startedAt","finishedAt","createdAt","updatedAt","publication"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCiRuns","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/runs/{runId}":{"get":{"tags":["CI"],"summary":"Get a repository CI run","description":"Returns the current provider-backed state and revision details for one CI run. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","const":"external"},"provider":{"type":"string","const":"buildkite"},"repoId":{"type":"string"},"workflowName":{"type":"string"},"pipeline":{"type":["string","null"]},"commitOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"ref":{"type":"string"},"state":{"type":"string","enum":["queued","running","blocked","passed","failed","canceled","errored"]},"statusContext":{"type":"string"},"externalId":{"type":["string","null"]},"externalUrl":{"type":["string","null"]},"checkRunId":{"type":["string","null"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"startedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"finishedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"createdAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"publication":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["pending","active","blocked"]},"error":{"type":["string","null"]},"url":{"type":["string","null"]}},"required":["state","error","url"],"additionalProperties":false},{"type":"null"}]}},"required":["id","source","provider","repoId","workflowName","pipeline","commitOid","ref","state","statusContext","externalId","externalUrl","checkRunId","version","startedAt","finishedAt","createdAt","updatedAt","publication"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCiRunsByRunId","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/runs/{runId}/jobs":{"get":{"tags":["CI"],"summary":"List jobs for a CI run","description":"Lists the provider jobs of the repository CI run in provider order, one page at a time. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"state":{"type":"string","enum":["queued","running","blocked","passed","failed","canceled","errored"]},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"startedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"finishedAt":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"logAvailable":{"type":"boolean"},"url":{"type":"string"}},"required":["id","name","state","position","startedAt","finishedAt","logAvailable","url"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCiRunsByRunIdJobs","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/runs/{runId}/jobs/{jobId}/log":{"get":{"tags":["CI"],"summary":"Read a CI job log","description":"Returns one UTF-8 excerpt of the provider job log as JSON: the last tailBytes (default 65,536), or the bytes [startByte, endByte) (endByte defaults to startByte + 65,536). An excerpt spans at most 262,144 bytes and is narrowed to whole UTF-8 characters, so adjacent excerpts concatenate exactly; a range past the end is empty at totalBytes. Use the raw log endpoint for the whole log. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"tailBytes","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":262144}},{"name":"startByte","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"endByte","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"},"startByte":{"type":"integer","minimum":0,"maximum":9007199254740991},"endByte":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncated":{"type":"boolean"},"complete":{"type":"boolean"},"url":{"type":"string"}},"required":["content","startByte","endByte","totalBytes","truncated","complete","url"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCiRunsByRunIdJobsByJobIdLog","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/ci/runs/{runId}/jobs/{jobId}/log/raw":{"get":{"responses":{"200":{"description":"The whole job log as the provider currently has it.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"Accept-Ranges":{"schema":{"type":"string","pattern":"^bytes$"}},"Content-Disposition":{"schema":{"type":"string"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"X-GC2-Log-Complete":{"description":"Whether the job has finished; a running job's log grows.","schema":{"type":"string","pattern":"^(?:true|false)$"}}},"content":{"text/plain":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"The requested byte range of the job log.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"Accept-Ranges":{"schema":{"type":"string","pattern":"^bytes$"}},"Content-Disposition":{"schema":{"type":"string"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"X-GC2-Log-Complete":{"description":"Whether the job has finished; a running job's log grows.","schema":{"type":"string","pattern":"^(?:true|false)$"}},"Content-Range":{"schema":{"type":"string","pattern":"^bytes \\d+-\\d+/\\d+$"}}},"content":{"text/plain":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"416":{"description":"The range starts at or after the end of the log (including any range over an empty log).","headers":{"Content-Range":{"schema":{"type":"string","pattern":"^bytes \\*/\\d+$"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"tags":["CI"],"summary":"Download a CI job log","description":"Streams the whole provider job log as exact bytes without buffering it. A single Range header (bytes=first-last, bytes=first- or bytes=-suffix) selects one byte range and returns 206; other Range forms are ignored. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"operationId":"getApiReposByOwnerByRepoCiRunsByRunIdJobsByJobIdLogRaw","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/commits/{hash}/checks":{"get":{"tags":["CI"],"summary":"List checks for a commit","description":"Lists CI checks associated with the exact 40-character commit OID: native check runs by name, then commit statuses by context, then GitHub checks. The summary counts every check, not only the page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"hash","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"commitOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["buildkite","gitcafe","github"]},"name":{"type":"string"},"status":{"type":"string","enum":["queued","in_progress","completed"]},"conclusion":{"type":["string","null"]},"detailsUrl":{"type":["string","null"]},"summary":{"type":["string","null"]},"runId":{"type":["string","null"]},"publication":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["pending","active","blocked"]},"error":{"type":["string","null"]},"url":{"type":["string","null"]}},"required":["state","error","url"],"additionalProperties":false},{"type":"null"}]},"version":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":2147483647}},"required":["id","provider","name","status","conclusion","detailsUrl","summary","runId","publication","version"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"summary":{"type":"object","properties":{"state":{"type":"string","enum":["none","pending","failure","success"]},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"failing":{"type":"integer","minimum":0,"maximum":9007199254740991},"successful":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["state","total","pending","failing","successful"],"additionalProperties":false}},"required":["commitOid","items","next","summary"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCommitsByHashChecks","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/rulesets/evaluate":{"get":{"summary":"Evaluate rules for a branch","description":"Combines matching repository and inherited rulesets for the named branch and reports the effective requirements. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"branch","in":"query","required":true,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"branch":{"type":"string","maxLength":200},"context":{"type":"string","const":"pull_request"},"config":{"type":"integer","minimum":0,"maximum":9007199254740991},"bypassed":{"type":"boolean"},"rules":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"rulesetId":{"type":"string"},"rulesetName":{"type":"string"},"scope":{"type":"string","enum":["repo","org","team"]},"enforcement":{"type":"string","enum":["active","evaluate"]},"bypassed":{"type":"boolean"},"ruleType":{"type":"string","enum":["require_pull_request","require_status_checks","require_signatures","require_linear_history","restrict_pushes","restrict_deletions","restrict_force_pushes","restrict_creations","require_deployments","restrict_file_paths"]},"parameters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["rulesetId","rulesetName","scope","enforcement","bypassed","ruleType","parameters"],"additionalProperties":false}}},"required":["branch","context","config","bypassed","rules"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRulesetsEvaluate","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/rulesets/":{"get":{"summary":"List repository rulesets","description":"Returns cursor-paginated rulesets defined directly on the repository, with at most 100 per page. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRulesets","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a repository ruleset","description":"Creates a versioned repository ruleset with its branch patterns, bypass actors, and enforcement rules. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoRulesets","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/rulesets/effective":{"get":{"summary":"List effective repository rulesets","description":"Returns cursor-paginated repository and inherited rulesets that can apply to this repository. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRulesetsEffective","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/rulesets/{ruleset}":{"get":{"summary":"Get a repository ruleset","description":"Returns one repository ruleset by its stable ruleset ID or a concealed not-found result. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoRulesetsByRuleset","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Update a repository ruleset","description":"Replaces the ruleset configuration and returns the updated ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"target":{"type":"string","enum":["branch","tag"]},"enforcement":{"type":"string","enum":["active","evaluate","disabled"]},"patterns":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"rules":{"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/RulesetRule"}},"bypassActors":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/RulesetBypass"}},"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["name","target","enforcement","patterns","rules","bypassActors","expectedConfig","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoRulesetsByRuleset","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete a repository ruleset","description":"Deletes the ruleset and returns the updated ruleset. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:rulesets:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"rulesets","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"ruleset","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedConfig":{"type":"integer","minimum":0,"maximum":9007199254740991},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedConfig","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesetMutation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoRulesetsByRuleset","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/capabilities":{"get":{"tags":["Webhooks"],"summary":"Inspect webhook capabilities","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns supported events and redacted instance configuration facts; configuration does not prove delivery. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCapabilities"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoWebhooksCapabilities","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/readiness":{"get":{"tags":["Webhooks"],"summary":"Inspect webhook readiness","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns endpoint activation, destination admission and signing configuration; no network request is made. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookReadiness"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoWebhooksByWebhookIdReadiness","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/":{"get":{"tags":["Webhooks"],"summary":"List repository webhooks","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns a cursor-paginated page of webhook endpoints for the repository. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoWebhooks","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}},"post":{"tags":["Webhooks"],"summary":"Create a repository webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Creates a webhook endpoint and returns its generated secret once. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"default":true,"type":"boolean"},"secret":{"type":"string","minLength":16,"maxLength":128}},"required":["url","events"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"default":true,"type":"boolean"},"secret":{"type":"string","minLength":16,"maxLength":128}},"required":["url","events"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"default":true,"type":"boolean"},"secret":{"type":"string","minLength":16,"maxLength":128}},"required":["url","events"],"additionalProperties":false}}}},"responses":{"201":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreated"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoWebhooks","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}":{"get":{"tags":["Webhooks"],"summary":"Get a repository webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns one webhook endpoint by webhook ID without disclosing its secret. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoWebhooksByWebhookId","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"tags":["Webhooks"],"summary":"Update a repository webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Updates a webhook endpoint. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^(\\*|[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*)$"},"description":"Distinct subscriptions. Local issue and pull events listed in /docs/integrations/webhooks are delivered by this version; * includes supported events. Other syntactically valid names are retained for compatibility but produce no deliveries."},"active":{"type":"boolean"}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoWebhooksByWebhookId","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"tags":["Webhooks"],"summary":"Delete a repository webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Deletes a webhook endpoint. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoWebhooksByWebhookId","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/deliveries":{"get":{"tags":["Webhooks"],"summary":"List repository webhook deliveries","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns bounded delivery status without payloads, credentials or receiver bodies. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["queued","running","succeeded","failed","dead_lettered","cancelled"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoWebhooksByWebhookIdDeliveries","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/deliveries/{deliveryId}/ref-updates":{"get":{"operationId":"repo.webhooks.ref_updates.list","tags":["Webhooks"],"summary":"Page webhook push ref updates","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns retained public ref updates only for native push deliveries. Empty creation/deletion pages may have a public ref continuation; other Git sources are unsupported. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eventCreatedAt","in":"query","required":true,"schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRefUpdates"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/deliveries/{deliveryId}/payload":{"get":{"operationId":"repo.webhooks.payload.get","tags":["Webhooks"],"summary":"Inspect a repository webhook payload","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns original retained event JSON to webhook administrators, including content later deleted or moderated. Signing headers and receiver bodies are excluded. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eventCreatedAt","in":"query","required":true,"schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayloadInspection"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/deliveries/{deliveryId}/attempts":{"get":{"tags":["Webhooks"],"summary":"List repository webhook delivery attempts","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Returns bounded delivery status without payloads, credentials or receiver bodies. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eventCreatedAt","in":"query","required":true,"schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookAttemptList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoWebhooksByWebhookIdDeliveriesByDeliveryIdAttempts","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/ping":{"post":{"operationId":"repo.webhooks.ping","tags":["Webhooks"],"summary":"Ping a repository webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Queues durable webhook delivery work; acceptance does not establish receiver success. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["requestId","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["requestId","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["requestId","expectedVersion"],"additionalProperties":false}}}},"responses":{"202":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRecoveryReceipt"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/deliveries/{deliveryId}/redeliver":{"post":{"operationId":"repo.webhooks.redeliver","tags":["Webhooks"],"summary":"Redeliver a repository webhook","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Queues durable webhook delivery work; acceptance does not establish receiver success. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Repository administrator authority is required.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedVersion","eventCreatedAt"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedVersion","eventCreatedAt"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"eventCreatedAt":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"}},"required":["requestId","expectedVersion","eventCreatedAt"],"additionalProperties":false}}}},"responses":{"202":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRecoveryReceipt"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/webhooks/{webhookId}/rotate-secret":{"post":{"tags":["Webhooks"],"summary":"Rotate a repository webhook secret","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Replaces a webhook's secret and returns the new secret once. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:webhooks:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"webhooks","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRotated"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoWebhooksByWebhookIdRotate-secret","x-beta":true,"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/collaborators/":{"get":{"summary":"List repository collaborators","description":"Returns up to 50 direct collaborators after the optional actor cursor. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"ledgerId":{"type":"string"},"role":{"type":"string","enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin"]},"handle":{"type":"string"},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]}},"required":["actorId","ledgerId","role","handle","displayName","avatarUrl"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoCollaborators","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/collaborators/{actorId}":{"put":{"summary":"Set a repository collaborator role","description":"Sets or removes an actor's direct repository role. expectedLedgerId must match the current grant, or be null when no grant exists. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:administration:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"administration","level":"admin"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"actorId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedLedgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["expectedLedgerId","role"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedLedgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["expectedLedgerId","role"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedLedgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["expectedLedgerId","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"ledgerId":{"type":["string","null"]},"role":{"type":["string","null"],"enum":["repo-reader","repo-triager","repo-writer","repo-maintainer","repo-admin",null]}},"required":["actorId","ledgerId","role"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoCollaboratorsByActorId","tags":["Repositories"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/emojis/{emojiId}/image":{"get":{"responses":{"200":{"description":"Repository emoji image.","headers":{"Content-Type":{"schema":{"type":"string"}},"Content-Length":{"schema":{"type":"integer","minimum":0}},"Cache-Control":{"schema":{"type":"string","enum":["private, no-store"]}},"X-Content-Type-Options":{"schema":{"type":"string","enum":["nosniff"]}},"Content-Security-Policy":{"schema":{"type":"string"}}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"tags":["Repository emojis"],"summary":"Read a repository emoji image","description":"Streams the stored image for an authorized repository. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"emojiId","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getApiReposByOwnerByRepoEmojisByEmojiIdImage","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/":{"get":{"summary":"List issues","description":"List issues. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"statuses","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["open","closed"]},{"maxItems":12,"type":"array","items":{"type":"string","enum":["open","closed"]}}]}},{"name":"statusNots","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["open","closed"]},{"maxItems":12,"type":"array","items":{"type":"string","enum":["open","closed"]}}]}},{"name":"open","in":"query","required":false,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]}},{"name":"stateNot","in":"query","required":false,"schema":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]}},{"name":"states","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]},{"maxItems":12,"type":"array","items":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]}}]}},{"name":"stateNots","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]},{"maxItems":12,"type":"array","items":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]}}]}},{"name":"priority","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":4}},{"name":"priorityNot","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":4}},{"name":"priorities","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0,"maximum":4},{"maxItems":12,"type":"array","items":{"type":"integer","minimum":0,"maximum":4}}]}},{"name":"priorityNots","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0,"maximum":4},{"maxItems":12,"type":"array","items":{"type":"integer","minimum":0,"maximum":4}}]}},{"name":"author","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ActorId"}},{"name":"authorNot","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ActorId"}},{"name":"authors","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"maxItems":12,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}]}},{"name":"authorNots","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"maxItems":12,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}]}},{"name":"assignee","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ActorId"}},{"name":"assigneeNot","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ActorId"}},{"name":"assignees","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"maxItems":12,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}]}},{"name":"assigneeNots","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"maxItems":12,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}]}},{"name":"label","in":"query","required":false,"schema":{"type":"string"}},{"name":"labelNot","in":"query","required":false,"schema":{"type":"string"}},{"name":"labels","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"maxItems":12,"type":"array","items":{"type":"string"}}]}},{"name":"labelNots","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"maxItems":12,"type":"array","items":{"type":"string"}}]}},{"name":"milestone","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"string","const":"none"}]}},{"name":"milestoneNot","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"string","const":"none"}]}},{"name":"milestones","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"string","const":"none"},{"maxItems":12,"type":"array","items":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"string","const":"none"}]}}]}},{"name":"milestoneNots","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"string","const":"none"},{"maxItems":12,"type":"array","items":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"string","const":"none"}]}}]}},{"name":"pinned","in":"query","required":false,"schema":{"type":"string"}},{"name":"pinnedValues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"maxItems":12,"type":"array","items":{"type":"string"}}]}},{"name":"pinnedNots","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"maxItems":12,"type":"array","items":{"type":"string"}}]}},{"name":"locked","in":"query","required":false,"schema":{"type":"string"}},{"name":"lockedValues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"maxItems":12,"type":"array","items":{"type":"string"}}]}},{"name":"lockedNots","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"maxItems":12,"type":"array","items":{"type":"string"}}]}},{"name":"sort","in":"query","required":false,"schema":{"default":"created","type":"string","enum":["created","updated","priority"]}},{"name":"direction","in":"query","required":false,"schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssues","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create an issue","description":"Create an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"assigneeIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}},"milestoneId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"assigneeIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}},"milestoneId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}},"assigneeIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}},"milestoneId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issue"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoIssues","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/filter-options":{"get":{"summary":"Read filter options","description":"Read filter options. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actors":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}}},"required":["actors"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesFilter-options","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}":{"get":{"summary":"Read issue","description":"Read issue. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssue","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update issue","description":"Update issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"priority":{"type":"integer","minimum":0,"maximum":4},"dueDate":{"type":["string","null"],"format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"},"state":{"type":"string","enum":["triage","backlog","unstarted","started"]}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoIssuesByIssue","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/close":{"post":{"summary":"Close an issue","description":"Close an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"state":{"default":"completed","type":"string","enum":["completed","canceled"]},"reason":{"type":["string","null"],"maxLength":1024}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"state":{"default":"completed","type":"string","enum":["completed","canceled"]},"reason":{"type":["string","null"],"maxLength":1024}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"state":{"default":"completed","type":"string","enum":["completed","canceled"]},"reason":{"type":["string","null"],"maxLength":1024}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoIssuesByIssueClose","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/reopen":{"post":{"summary":"Reopen an issue","description":"Reopen an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoIssuesByIssueReopen","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/lock":{"put":{"summary":"Lock an issue","description":"Lock an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"reason":{"type":["string","null"],"enum":["off_topic","too_heated","resolved","spam",null]}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"reason":{"type":["string","null"],"enum":["off_topic","too_heated","resolved","spam",null]}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"reason":{"type":["string","null"],"enum":["off_topic","too_heated","resolved","spam",null]}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoIssuesByIssueLock","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Unlock an issue","description":"Unlock an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoIssuesByIssueLock","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/pin":{"put":{"summary":"Pin an issue","description":"Pin an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoIssuesByIssuePin","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Unpin an issue","description":"Unpin an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoIssuesByIssuePin","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/sync":{"get":{"summary":"Read issue sync","description":"Read issue sync. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"$ref":"#/components/schemas/IssueId"},"configuration":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["manual","gc2-leader","github-leader"]},"syncIssues":{"type":"boolean"},"appIssuesWrite":{"type":"boolean"}},"required":["mode","syncIssues","appIssuesWrite"],"additionalProperties":false},{"type":"null"}]},"latest":{"anyOf":[{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"localVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"family":{"type":"string","enum":["metadata","lifecycle","labels","milestone","assignees"]},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"providerState":{"type":["string","null"],"enum":["unsent","confirmed","outcome_unknown","blocked","not_delivered",null]},"reconciliationRequired":{"type":"boolean"},"reconciliationStale":{"type":"boolean"}},"required":["jobId","localVersion","family","state","providerState","reconciliationRequired","reconciliationStale"],"additionalProperties":false},{"type":"null"}]}},"required":["issueId","configuration","latest"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueSync","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/comments/{comment}/sync":{"get":{"summary":"Read issue comments comment sync","description":"Read issue comments comment sync. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"$ref":"#/components/schemas/IssueId"},"commentId":{"type":"string"},"latest":{"anyOf":[{"type":"object","properties":{"jobId":{"type":"string","pattern":"^gh_[0-9a-f]{64}$"},"localVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"family":{"type":"string","enum":["comment-create","comment-edit","comment-delete"]},"state":{"type":"string","enum":["queued","running","succeeded","blocked","failed"]},"providerState":{"type":["string","null"],"enum":["unsent","confirmed","outcome_unknown","blocked","not_delivered",null]},"reason":{"type":["string","null"],"enum":["provider-body-limit","provider-operation-unsupported","comment-mapping-pending","comment-create-superseded","comment-create-cancelled","comment-create-unavailable","issue-write-not-admitted","missing-user-attribution",null]},"reconciliationRequired":{"type":"boolean"}},"required":["jobId","localVersion","family","state","providerState","reason","reconciliationRequired"],"additionalProperties":false},{"type":"null"}]}},"required":["issueId","commentId","latest"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueCommentsByCommentSync","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/comments/":{"get":{"summary":"List issue comments","description":"List issue comments. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"read"},"target":"the comment resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/IssueCommentRead"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueComments","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create an issue comment","description":"Create an issue comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the comment resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The issue must be unlocked unless the actor has triage authority."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueCommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoIssuesByIssueComments","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/comments/{comment}":{"patch":{"summary":"Update comment","description":"Update comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the comment resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","Only the comment author can edit it, and the submitted expected version must match."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["body","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["body","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["body","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueCommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoIssuesByIssueCommentsByComment","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Delete comment","description":"Delete comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the comment resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","Only the comment author can delete it, and the submitted expected version must match."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoIssuesByIssueCommentsByComment","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/reactions/":{"get":{"summary":"List issue reactions","description":"List issue reactions. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the reaction resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueReactions","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Add or update an issue reaction","description":"Add or update an issue reaction. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the reaction resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The issue or comment must belong to this conversation and remain available for reactions."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["subject","emoji"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["subject","emoji"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["subject","emoji"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reaction"}}}},"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reaction"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoIssuesByIssueReactions","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/reactions/{reaction}":{"delete":{"summary":"Remove an issue reaction","description":"Remove an issue reaction. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the reaction resource identified by the path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","Only the actor's own reaction on this conversation can be removed."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"reaction","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoIssuesByIssueReactionsByReaction","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/assignee-candidates":{"get":{"summary":"Read assignee candidates","description":"Read assignee candidates. Requires authenticated triage authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"a prospective issue in the repository identified by the repository path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssigneePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesAssignee-candidates","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/assignee-candidates":{"get":{"summary":"Read issue assignee candidates","description":"Read issue assignee candidates. Requires authenticated triage authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssigneePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueAssignee-candidates","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/assignees":{"get":{"summary":"Read issue assignees","description":"Read issue assignees. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssigneePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueAssignees","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set issue assignees","description":"Set issue assignees. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoIssuesByIssueAssignees","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/labels":{"get":{"summary":"Read issue labels","description":"Read issue labels. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"},"description":{"type":["string","null"]}},"required":["id","name","color","description"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueLabels","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set issue labels","description":"Set issue labels. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["expectedVersion","labelIds"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["expectedVersion","labelIds"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["expectedVersion","labelIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"},"description":{"type":["string","null"]}},"required":["id","name","color","description"],"additionalProperties":false}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoIssuesByIssueLabels","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/milestone":{"get":{"summary":"Read issue milestone","description":"Read issue milestone. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false}},"next":{"type":"null"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueMilestone","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set issue milestone","description":"Set issue milestone. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"milestoneId":{"type":["string","null"]}},"required":["expectedVersion","milestoneId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"milestoneId":{"type":["string","null"]}},"required":["expectedVersion","milestoneId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"milestoneId":{"type":["string","null"]}},"required":["expectedVersion","milestoneId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoIssuesByIssueMilestone","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/links/":{"get":{"summary":"List pull requests linked to an issue","description":"List pull requests linked to an issue. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"read"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"issueId":{"$ref":"#/components/schemas/IssueId"},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"linkType":{"type":"string","enum":["closes","references"]},"createdByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]}},"required":["issueId","pullRequestId","linkType","createdByActorId","createdAt","number","title","state"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoIssuesByIssueLinks","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Link a pull request to an issue","description":"Link a pull request to an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"linkType":{"type":"string","enum":["closes","references"]}},"required":["expectedVersion","pullRequestId","linkType"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"linkType":{"type":"string","enum":["closes","references"]}},"required":["expectedVersion","pullRequestId","linkType"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"linkType":{"type":"string","enum":["closes","references"]}},"required":["expectedVersion","pullRequestId","linkType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"$ref":"#/components/schemas/IssueId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"linkType":{"type":"string","enum":["closes","references"]}},"required":["issueId","version","pullRequestId","linkType"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoIssuesByIssueLinks","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/issues/{issue}/links/{pr}":{"delete":{"summary":"Unlink a pull request from an issue","description":"Unlink a pull request from an issue. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["issue:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"issue","family":"contents","level":"write"},"target":"the issue identified by the repository and issue path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"issue","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"pr","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PullId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"$ref":"#/components/schemas/IssueId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"pullRequestId":{"$ref":"#/components/schemas/PullId"}},"required":["issueId","version","pullRequestId"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoIssuesByIssueLinksByPr","tags":["Issues"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/":{"get":{"summary":"List pull requests","description":"List pull requests. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["open","closed","merged"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["newest","oldest"]}},{"name":"states","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"stateNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"authors","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"authorNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"assignees","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"assigneeNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"reviewers","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"reviewerNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"labels","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"labelNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"milestones","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"milestoneNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"sourceBranches","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"sourceBranchNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"targetBranches","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"targetBranchNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"crossForkValues","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"crossForkNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"lockedValues","in":"query","required":false,"schema":{"type":"string","maxLength":4096}},{"name":"lockedNots","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPulls","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a pull request from published refs","description":"Creates a pull request into this repository from existing source and target refs. Authentication is required even for public repositories. A cross-repository source must be in the same fork network. Do not automatically retry an uncertain creation result. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"prospective pull request: destination repository from the path, source repository and source/target refs from the body"}],"conditions":["Source and destination repositories must both be accessible and unarchived; delegated grants also require live parent authority on both.","Grant selectors and bindings must admit the prospective destination, source repository/ref and target ref. Current authority and repository generations are rechecked before creation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repo":{"$ref":"#/components/schemas/RepoId"},"source":{"type":"string","maxLength":255},"target":{"type":"string","maxLength":255},"title":{"type":"string","minLength":1,"maxLength":1000},"description":{"type":["string","null"],"maxLength":65536},"submissionKey":{"type":"string","minLength":1,"maxLength":255}},"required":["repo","source","target","title"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"repo":{"$ref":"#/components/schemas/RepoId"},"source":{"type":"string","maxLength":255},"target":{"type":"string","maxLength":255},"title":{"type":"string","minLength":1,"maxLength":1000},"description":{"type":["string","null"],"maxLength":65536},"submissionKey":{"type":"string","minLength":1,"maxLength":255}},"required":["repo","source","target","title"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"repo":{"$ref":"#/components/schemas/RepoId"},"source":{"type":"string","maxLength":255},"target":{"type":"string","maxLength":255},"title":{"type":"string","minLength":1,"maxLength":1000},"description":{"type":["string","null"],"maxLength":65536},"submissionKey":{"type":"string","minLength":1,"maxLength":255}},"required":["repo","source","target","title"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPulls","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/filter-options":{"get":{"summary":"Read filter options","description":"Read filter options. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"actors":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"actorId":{"$ref":"#/components/schemas/ActorId"},"handle":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["actorId","handle","avatarUrl"],"additionalProperties":false}},"branches":{"maxItems":1000,"type":"array","items":{"type":"string"}}},"required":["actors","branches"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsFilter-options","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}":{"get":{"summary":"Get a pull request","description":"Returns pull request details and the caller's available actions. Public repositories allow anonymous reads; inaccessible private resources are concealed. Invalid explicit credentials never fall back to anonymous access. Send only one credential source.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the existing pull request identified by owner, repo and pr path parameters"}],"conditions":["Repository visibility and current actor policy must allow the read. Grants additionally require matching selectors, bindings and live parent authority where delegated."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPr","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"summary":"Update pull request","description":"Update pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"targetBranch":{"type":"string","maxLength":255}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"targetBranch":{"type":"string","maxLength":255}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":["string","null"],"maxLength":65536},"targetBranch":{"type":"string","maxLength":255}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"patchApiReposByOwnerByRepoPullsByPr","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/close":{"post":{"summary":"Close a pull request","description":"Close a pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","A member of an active stack closes with its stack (`POST /stacks/:stack/close`); closing it alone returns 409 `PULL_REQUEST_IN_ACTIVE_STACK`."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrClose","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reopen":{"post":{"summary":"Reopen a pull request","description":"Reopen a pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrReopen","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/draft":{"post":{"summary":"Convert a pull request to a draft","description":"Convert a pull request to a draft. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrDraft","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/ready":{"post":{"summary":"Mark a pull request ready for review","description":"Mark a pull request ready for review. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrReady","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/lock":{"post":{"summary":"Lock a pull request","description":"Lock a pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"admin"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"reason":{"type":"string","enum":["off_topic","too_heated","resolved","spam"]}},"required":["expectedVersion","reason"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"reason":{"type":"string","enum":["off_topic","too_heated","resolved","spam"]}},"required":["expectedVersion","reason"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"reason":{"type":"string","enum":["off_topic","too_heated","resolved","spam"]}},"required":["expectedVersion","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrLock","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/unlock":{"post":{"summary":"Unlock a pull request","description":"Unlock a pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:admin"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"admin"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrUnlock","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reviews":{"post":{"summary":"Submit a review of an exact pull request revision","description":"Submits a review against commitOid and expectedVersion. Reusing requestId with identical input replays the receipt; changed input conflicts. Review permission does not grant access to pull request contents or permission to merge. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the existing pull request identified by owner, repo and pr path parameters"}],"conditions":["The actor and any delegated parent must be repository members with current read access; grant selectors and bindings must cover this pull request.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","The repository must be unarchived and the pull request open and unlocked. The commit and version must still match, with no conflicting in-flight merge effect.","Authors cannot approve or request changes on their own pull request, including through delegated attribution.","Publishing a saved draft with inline comments additionally requires comment contents-write authority covering those comments."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":"string","maxLength":65536},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"draft":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["verdict","commitOid","expectedVersion","requestId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":"string","maxLength":65536},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"draft":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["verdict","commitOid","expectedVersion","requestId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":"string","maxLength":65536},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"draft":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["verdict","commitOid","expectedVersion","requestId"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Author"},"id":{"type":"string"},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"submittedPullVersion":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991}},"required":["author","id","commitOid","verdict","submittedPullVersion"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrReviews","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"get":{"summary":"Read pull request reviews","description":"Read pull request reviews. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrReviews","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/merge":{"post":{"summary":"Merge a pull request","description":"Merge a pull request. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:merge:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"merge","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"headOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"strategy":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}},"required":["requestId","expectedVersion","headOid","baseOid","strategy"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"headOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"strategy":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}},"required":["requestId","expectedVersion","headOid","baseOid","strategy"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"headOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"strategy":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}},"required":["requestId","expectedVersion","headOid","baseOid","strategy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeOutcome"}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeOutcome"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrMerge","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/merge/{operation}":{"get":{"summary":"Read pull request merge operation","description":"Read pull request merge operation. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"operation","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","pattern":"^ghd_[0-9a-f]{64}$"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeOutcome"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrMergeByOperation","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/summary":{"get":{"summary":"Read pull request summary","description":"Read pull request summary. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PullSummary"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrSummary","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/":{"get":{"operationId":"pulls.comments.list","tags":["Pull Requests","Comments"],"summary":"List pull request comments","description":"List pull request comments. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"read"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"review","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","general","inline"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentPage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}},"post":{"operationId":"pulls.comments.create","tags":["Pull Requests","Comments"],"summary":"Create a pull request comment","description":"Create a pull request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false},{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","enum":["line","file"]},"line":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"side":{"default":"right","type":["string","null"],"enum":["left","right",null]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["body","path","line","commitOid"],"additionalProperties":false}]}},"application/x-www-form-urlencoded":{"schema":{"anyOf":[{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false},{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","enum":["line","file"]},"line":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"side":{"default":"right","type":["string","null"],"enum":["left","right",null]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["body","path","line","commitOid"],"additionalProperties":false}]}},"multipart/form-data":{"schema":{"anyOf":[{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false},{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","enum":["line","file"]},"line":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"side":{"default":"right","type":["string","null"],"enum":["left","right",null]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"}},"required":["body","path","line","commitOid"],"additionalProperties":false}]}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}":{"get":{"operationId":"pulls.comments.identity","tags":["Pull Requests","Comments"],"summary":"Get a pull request comment identity","description":"Get a pull request comment identity. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"read"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CommentId"}},"required":["id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"operationId":"pulls.comments.delete","tags":["Pull Requests","Comments"],"summary":"Delete a pull request comment","description":"Delete a pull request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CommentId"},"threadId":{"$ref":"#/components/schemas/CommentId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"hiddenAt":{"type":["string","null"],"format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","threadId","version","hiddenAt","deletedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}},"patch":{"operationId":"pulls.comments.update","tags":["Pull Requests","Comments"],"summary":"Update a pull request comment","description":"Update a pull request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["body","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["body","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["body","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}/detail":{"get":{"operationId":"pulls.comments.detail","tags":["Pull Requests","Comments"],"summary":"Get pull request comment details","description":"Get pull request comment details. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"read"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentDetail"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}/replies":{"post":{"operationId":"pulls.comments.reply","tags":["Pull Requests","Comments"],"summary":"Reply to a pull request comment","description":"Reply to a pull request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536}},"required":["body"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}/hide":{"post":{"operationId":"pulls.comments.hide","tags":["Pull Requests","Comments"],"summary":"Hide a pull request comment","description":"Hide a pull request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CommentId"},"threadId":{"$ref":"#/components/schemas/CommentId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"hiddenAt":{"type":["string","null"],"format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","threadId","version","hiddenAt","deletedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}/unhide":{"post":{"operationId":"pulls.comments.unhide","tags":["Pull Requests","Comments"],"summary":"Unhide a pull request comment","description":"Unhide a pull request comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CommentId"},"threadId":{"$ref":"#/components/schemas/CommentId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"hiddenAt":{"type":["string","null"],"format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","threadId","version","hiddenAt","deletedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}/resolve":{"post":{"operationId":"pulls.comments.resolve","tags":["Pull Requests","Comments"],"summary":"Resolve a pull request comment thread","description":"Resolve a pull request comment thread. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/comments/{comment}/unresolve":{"post":{"operationId":"pulls.comments.unresolve","tags":["Pull Requests","Comments"],"summary":"Reopen a pull request comment thread","description":"Reopen a pull request comment thread. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["comment:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"comment","family":"contents","level":"write"},"target":"the pull request comment identified by the route, or a prospective comment under the pull request"}],"conditions":["Current visibility, actor policy, comment ownership or moderation rank, grant selectors and bindings, lock state, and submitted version must admit the operation."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reactions/":{"get":{"summary":"List pull request reactions","description":"List pull request reactions. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionList"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrReactions","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Add or update a pull request reaction","description":"Add or update a pull request reaction. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The pull request or comment must belong to this conversation and remain available for reactions."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["subject","emoji"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["subject","emoji"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"issue"},"id":{"$ref":"#/components/schemas/IssueId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"issue_comment"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request"},"id":{"$ref":"#/components/schemas/PullId"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"pull_request_comment"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}},"emoji":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"unicode"},"value":{"type":"string","minLength":1,"maxLength":32}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"custom"},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}],"discriminator":{"propertyName":"kind"}}},"required":["subject","emoji"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reaction"}}}},"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reaction"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrReactions","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reactions/{reaction}":{"delete":{"summary":"Remove a pull request reaction","description":"Remove a pull request reaction. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","Only the actor's own reaction on this conversation can be removed."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"reaction","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Response for status 204"},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoPullsByPrReactionsByReaction","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reviews/{review}":{"get":{"summary":"Read pull request reviews review","description":"Read pull request reviews review. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"review","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Review"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrReviewsByReview","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reviews/{review}/dismiss":{"post":{"summary":"Dismiss a pull request review","description":"Dismiss a pull request review. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"review","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedPullVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion","expectedPullVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedPullVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion","expectedPullVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":65536},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedPullVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion","expectedPullVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"dismissedAt":{"type":["string","null"],"format":"date-time"},"dismissedReason":{"type":["string","null"],"maxLength":65536},"dismissedByActorId":{"type":["string","null"]},"dismissedByDelegatorActorId":{"type":["string","null"]},"dismissedByViaInstallationId":{"type":["string","null"]},"pullVersion":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","version","dismissedAt","dismissedReason","dismissedByActorId","dismissedByDelegatorActorId","dismissedByViaInstallationId","pullVersion"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrReviewsByReviewDismiss","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/review-draft/":{"get":{"summary":"Get the caller’s review draft","description":"Get the caller’s review draft. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":["string","null"]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"pullVersion":{"type":"integer","minimum":0,"maximum":2147483646},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"comments":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["body","path","line","side","commitOid","id"],"additionalProperties":false}}},"required":["id","version","verdict","body","commitOid","baseOid","pullVersion","createdAt","updatedAt","stale","comments"],"additionalProperties":false},{"type":"null"}]}},"required":["draft"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrReview-draft","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Save a review draft","description":"Save a review draft. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},{"type":"null"}]},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":["string","null"],"maxLength":65536},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expectedPullVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expected","verdict","body","commitOid","baseOid","expectedPullVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expected":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},{"type":"null"}]},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":["string","null"],"maxLength":65536},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expectedPullVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expected","verdict","body","commitOid","baseOid","expectedPullVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expected":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},{"type":"null"}]},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":["string","null"],"maxLength":65536},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expectedPullVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expected","verdict","body","commitOid","baseOid","expectedPullVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"body":{"type":["string","null"]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"pullVersion":{"type":"integer","minimum":0,"maximum":2147483646},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","version","verdict","body","commitOid","baseOid","pullVersion","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrReview-draft","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Discard a review draft","description":"Discard a review draft. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["expected"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["expected"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["expected"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"discarded":{"type":"boolean","const":true}},"required":["discarded"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoPullsByPrReview-draft","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/review-draft/comments":{"post":{"summary":"Add a review draft comment","description":"Add a review draft comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["body","path","line","commitOid","expected"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["body","path","line","commitOid","expected"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["body","path","line","commitOid","expected"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},"comment":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["body","path","line","side","commitOid","id"],"additionalProperties":false}},"required":["draft","comment"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrReview-draftComments","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/review-draft/comments/{comment}":{"put":{"summary":"Update a review draft comment","description":"Update a review draft comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["body","path","line","commitOid","expected"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["body","path","line","commitOid","expected"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["body","path","line","commitOid","expected"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},"comment":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":65536},"path":{"type":"string","minLength":1,"maxLength":4096},"subjectType":{"type":"string","const":"line"},"line":{"type":"integer","minimum":1,"maximum":2147483647},"side":{"default":"right","type":"string","enum":["left","right"]},"startLine":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"startSide":{"type":["string","null"],"enum":["left","right",null]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["body","path","line","side","commitOid","id"],"additionalProperties":false}},"required":["draft","comment"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrReview-draftCommentsByComment","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"delete":{"summary":"Discard a review draft comment","description":"Discard a review draft comment. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"comment","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CommentId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["expected"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["expected"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expected":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false}},"required":["expected"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["id","version"],"additionalProperties":false},"id":{"$ref":"#/components/schemas/CommentId"}},"required":["draft","id"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"deleteApiReposByOwnerByRepoPullsByPrReview-draftCommentsByComment","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/reviewers":{"get":{"summary":"Read pull request reviewers","description":"Read pull request reviewers. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ActorId"},"actor":{"$ref":"#/components/schemas/Author"},"handle":{"type":["string","null"]},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"requestedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"requestedAt":{"type":"string","format":"date-time"},"latestReview":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"dismissedAt":{"type":["string","null"],"format":"date-time"},"stale":{"type":"boolean"}},"required":["id","verdict","commitOid","dismissedAt","stale"],"additionalProperties":false},{"type":"null"}]}},"required":["id","actor","handle","displayName","avatarUrl","requestedByActorId","requestedAt","latestReview"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrReviewers","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set pull request reviewers","description":"Set pull request reviewers. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ActorId"},"actor":{"$ref":"#/components/schemas/Author"},"handle":{"type":["string","null"]},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"requestedByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"requestedAt":{"type":"string","format":"date-time"},"latestReview":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"verdict":{"type":"string","enum":["approve","request_changes","comment"]},"commitOid":{"type":"string","pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},"dismissedAt":{"type":["string","null"],"format":"date-time"},"stale":{"type":"boolean"}},"required":["id","verdict","commitOid","dismissedAt","stale"],"additionalProperties":false},{"type":"null"}]}},"required":["id","actor","handle","displayName","avatarUrl","requestedByActorId","requestedAt","latestReview"],"additionalProperties":false}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrReviewers","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/assignee-candidates":{"get":{"summary":"Read pull request assignee candidates","description":"Read pull request assignee candidates. Requires authenticated triage authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssigneePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrAssignee-candidates","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/assignees":{"get":{"summary":"Read pull request assignees","description":"Read pull request assignees. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssigneePage"}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrAssignees","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set pull request assignees","description":"Set pull request assignees. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"actorIds":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/ActorId"}}},"required":["expectedVersion","actorIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/AssignmentActor"}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrAssignees","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/labels":{"get":{"summary":"Read pull request labels","description":"Read pull request labels. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"},"description":{"type":["string","null"]}},"required":["id","name","color","description"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrLabels","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set pull request labels","description":"Set pull request labels. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["expectedVersion","labelIds"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["expectedVersion","labelIds"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"labelIds":{"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["expectedVersion","labelIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"},"description":{"type":["string","null"]}},"required":["id","name","color","description"],"additionalProperties":false}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrLabels","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/milestone":{"get":{"summary":"Read pull request milestone","description":"Read pull request milestone. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false}},"next":{"type":"null"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrMilestone","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set pull request milestone","description":"Set pull request milestone. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"milestoneId":{"type":["string","null"]}},"required":["expectedVersion","milestoneId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"milestoneId":{"type":["string","null"]}},"required":["expectedVersion","milestoneId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"milestoneId":{"type":["string","null"]}},"required":["expectedVersion","milestoneId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":2147483647},"items":{"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed"]}},"required":["id","number","title","state"],"additionalProperties":false}}},"required":["version","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrMilestone","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/status":{"get":{"summary":"Read pull request status","description":"Read pull request status. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"headOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"observation":{"type":"string","const":"stored"},"merge":{"type":"object","properties":{"state":{"type":"string","enum":["blocked","requires-native-check"]},"strategies":{"maxItems":4,"type":"array","items":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}},"permitted":{"type":"boolean"},"reasons":{"maxItems":14,"type":"array","items":{"type":"string","enum":["closed","draft","locked","archived","head-unobserved","base-unobserved","cross-repository-unsupported","head-objects-missing","configured-policy-unsupported","provider-origin-unsupported","changes-requested","native-operation-pending","stack-land-required","merge-permission-required"]}},"warnings":{"maxItems":1,"type":"array","items":{"type":"string","const":"evaluate-policy-not-enforced"}},"fastForward":{"type":["boolean","null"]},"conflicts":{"type":"string","enum":["unknown","conflicting"]},"blockers":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]{0,63}$"},"message":{"type":"string","maxLength":512},"blockedStrategies":{"maxItems":4,"type":"array","items":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}}},"required":["code","message"],"additionalProperties":false}},"rulesets":{"type":"object","properties":{"matched":{"type":"integer","minimum":0,"maximum":9007199254740991},"violations":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"rulesetId":{"type":"string"},"rulesetName":{"type":"string","maxLength":100},"enforcement":{"type":"string","enum":["active","evaluate"]},"rule":{"type":"string","enum":["require_pull_request","require_status_checks","restrict_pushes","require_linear_history","require_signatures","require_deployments","restrict_file_paths","invalid_configuration"]},"message":{"type":"string","maxLength":512},"blockedStrategies":{"maxItems":4,"type":"array","items":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}}},"required":["rulesetId","rulesetName","enforcement","rule","message"],"additionalProperties":false}},"warnings":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"rulesetId":{"type":"string"},"rulesetName":{"type":"string","maxLength":100},"enforcement":{"type":"string","enum":["active","evaluate"]},"rule":{"type":"string","enum":["require_pull_request","require_status_checks","restrict_pushes","require_linear_history","require_signatures","require_deployments","restrict_file_paths","invalid_configuration"]},"message":{"type":"string","maxLength":512},"blockedStrategies":{"maxItems":4,"type":"array","items":{"type":"string","enum":["fast-forward","merge","squash","rebase"]}}},"required":["rulesetId","rulesetName","enforcement","rule","message"],"additionalProperties":false}}},"required":["matched","violations","warnings"],"additionalProperties":false}},"required":["state","strategies","permitted","reasons","warnings","fastForward","conflicts","blockers","rulesets"],"additionalProperties":false},"checks":{"type":"object","properties":{"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"failing":{"type":"integer","minimum":0,"maximum":9007199254740991},"successful":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["pending","failing","successful","total"],"additionalProperties":false}},"required":["id","version","headOid","baseOid","observation","merge","checks"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrStatus","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/changes":{"get":{"summary":"Read pull request changes","description":"Read pull request changes. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"expectedVersion","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":500}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"comparisonBaseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"oldPath":{"type":["string","null"],"minLength":1,"maxLength":4096},"status":{"type":"string","enum":["added","deleted","modified","typeChanged","conflicted","renamed","copied"]},"binary":{"type":"boolean"},"tooLarge":{"type":"boolean"},"additions":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["path"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["id","version","headOid","baseOid","comparisonBaseOid","items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrChanges","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/diff-file":{"get":{"summary":"Read pull request diff file","description":"Read pull request diff file. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096}},{"name":"expectedVersion","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"contentOnly","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"comparisonBaseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"file":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"oldPath":{"type":["string","null"],"minLength":1,"maxLength":4096},"status":{"type":"string","enum":["added","deleted","modified","typeChanged","conflicted","renamed","copied"]},"additions":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletions":{"type":"integer","minimum":0,"maximum":9007199254740991},"binary":{"type":"boolean"},"tooLarge":{"type":"boolean"},"hunksOmitted":{"type":"boolean"},"oldContent":{"type":["string","null"],"maxLength":1048576},"newContent":{"type":["string","null"],"maxLength":1048576},"oldContentUnavailableReason":{"type":"string","enum":["binary","too_large","budget_exhausted","non_blob"]},"newContentUnavailableReason":{"type":"string","enum":["binary","too_large","budget_exhausted","non_blob"]},"hunks":{"maxItems":65536,"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"maxItems":262144,"type":"array","items":{"type":"object","properties":{"origin":{"type":"string","enum":[" ","+","-"]},"content":{"type":"string","maxLength":262144}},"required":["origin","content"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}}},"required":["path"],"additionalProperties":false}},"required":["id","version","headOid","baseOid","comparisonBaseOid","file"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrDiff-file","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/diff-files":{"post":{"summary":"Read pull request diff files","description":"Read pull request diff files. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paths":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["paths","expectedVersion"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"paths":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["paths","expectedVersion"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"paths":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["paths","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"comparisonBaseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"oldPath":{"type":["string","null"],"minLength":1,"maxLength":4096},"status":{"type":"string","enum":["added","deleted","modified","typeChanged","conflicted","renamed","copied"]},"additions":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletions":{"type":"integer","minimum":0,"maximum":9007199254740991},"binary":{"type":"boolean"},"tooLarge":{"type":"boolean"},"hunksOmitted":{"type":"boolean"},"oldContent":{"type":["string","null"],"maxLength":262144},"newContent":{"type":["string","null"],"maxLength":262144},"oldContentUnavailableReason":{"type":"string","enum":["binary","too_large","budget_exhausted","non_blob"]},"newContentUnavailableReason":{"type":"string","enum":["binary","too_large","budget_exhausted","non_blob"]},"hunks":{"maxItems":65536,"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"maxItems":262144,"type":"array","items":{"type":"object","properties":{"origin":{"type":"string","enum":[" ","+","-"]},"content":{"type":"string","maxLength":262144}},"required":["origin","content"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}}},"required":["path"],"additionalProperties":false}}},"required":["id","version","headOid","baseOid","comparisonBaseOid","items"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsByPrDiff-files","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/commits":{"get":{"summary":"Read pull request commits","description":"Read pull request commits. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"expectedVersion","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"default":20}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PullId"},"version":{"type":"integer","minimum":0,"maximum":2147483647},"headOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"baseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"comparisonBaseOid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/SourceCommit"}},"truncated":{"type":"boolean"},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["id","version","headOid","baseOid","comparisonBaseOid","items","truncated","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrCommits","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/viewed-files":{"get":{"summary":"Read pull request viewed files","description":"Read pull request viewed files. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"headOid","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"}},{"name":"baseOid","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"headOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"items":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["headOid","baseOid","items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrViewed-files","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"put":{"summary":"Set pull request viewed files","description":"Set pull request viewed files. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:review:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"review","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"headOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"viewed":{"type":"boolean"}},"required":["expectedVersion","headOid","baseOid","paths","viewed"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"headOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"viewed":{"type":"boolean"}},"required":["expectedVersion","headOid","baseOid","paths","viewed"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"headOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":"string","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"viewed":{"type":"boolean"}},"required":["expectedVersion","headOid","baseOid","paths","viewed"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"headOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"baseOid":{"type":["string","null"],"pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},"items":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":4096}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["headOid","baseOid","items","next"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"putApiReposByOwnerByRepoPullsByPrViewed-files","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/links/":{"get":{"summary":"List issues linked to a pull request","description":"List issues linked to a pull request. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["pr:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"pr","family":"contents","level":"read"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"issueId":{"$ref":"#/components/schemas/IssueId"},"pullRequestId":{"$ref":"#/components/schemas/PullId"},"linkType":{"type":"string","enum":["closes","references"]},"createdByActorId":{"anyOf":[{"$ref":"#/components/schemas/ActorId"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string"},"stateType":{"type":"string","enum":["triage","backlog","unstarted","started","completed","canceled"]}},"required":["issueId","pullRequestId","linkType","createdByActorId","createdAt","number","title","stateType"],"additionalProperties":false}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["items","next"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"$ref":"#/components/responses/ConflictProblem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrLinks","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks":{"get":{"summary":"List stacks","description":"List stacks. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["active","completed","dissolved"]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/StackRead"}},"next":{"type":["string","null"],"minLength":1,"maxLength":8192,"pattern":"^[A-Za-z0-9_-]+$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","next","total"],"additionalProperties":false}}},"headers":{"Link":{"$ref":"#/components/headers/Link"}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsStacks","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}},"post":{"summary":"Create a stack","description":"Create a stack. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pullRequestNumbers":{"minItems":2,"maxItems":50,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}}},"required":["pullRequestNumbers"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"pullRequestNumbers":{"minItems":2,"maxItems":50,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}}},"required":["pullRequestNumbers"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"pullRequestNumbers":{"minItems":2,"maxItems":50,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}}},"required":["pullRequestNumbers"],"additionalProperties":false}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacks","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}":{"get":{"summary":"Get a stack","description":"Get a stack. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsStacksByStack","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/members":{"post":{"summary":"Add a pull request to a stack","description":"Add a pull request to a stack. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision","pullRequestNumber"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision","pullRequestNumber"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision","pullRequestNumber"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackMembers","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/unstack":{"post":{"summary":"Dissolve a stack","description":"Dissolve a stack. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackUnstack","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/close":{"post":{"summary":"Close a stack and its open pull requests","description":"Close a stack and its open pull requests. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write","pr:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"},{"capability":{"kind":"pr","family":"contents","level":"write"},"target":"the pull request identified by the repository and pull request path parameters"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried.","Each open member is admitted as `POST /:pr/close` admits it: its author, or a caller who can triage it. The stack dissolves and every member closes in one transaction, or nothing changes."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackRead"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackClose","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/restack":{"post":{"summary":"Restack a stack","description":"Restack a stack. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"fromPullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision","requestId"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"fromPullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision","requestId"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"fromPullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision","requestId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestackOperation"}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestackOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackRestack","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api","api-heavy"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/restacks/latest":{"get":{"summary":"Get the latest stack restack","description":"Get the latest stack restack. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RestackOperation"},{"type":"null"}]}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsStacksByStackRestacksLatest","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/restacks/{operation}":{"get":{"summary":"Get a stack restack","description":"Get a stack restack. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"operation","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestackOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsStacksByStackRestacksByOperation","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/restacks/{operation}/reconcile":{"post":{"summary":"Reconcile a stack restack","description":"Reconcile a stack restack. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"operation","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestackOperation"}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestackOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackRestacksByOperationReconcile","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/land-through":{"post":{"summary":"Land a stack","description":"Land a stack. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"throughPullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"strategy":{"type":"string","enum":["merge","squash","rebase"]}},"required":["expectedRevision","requestId","throughPullRequestNumber","strategy"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"throughPullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"strategy":{"type":"string","enum":["merge","squash","rebase"]}},"required":["expectedRevision","requestId","throughPullRequestNumber","strategy"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[!-~]+$"},"throughPullRequestNumber":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"strategy":{"type":"string","enum":["merge","squash","rebase"]}},"required":["expectedRevision","requestId","throughPullRequestNumber","strategy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandOperation"}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackLand-through","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/land-through/{operation}/resume":{"post":{"summary":"Resume a stack landing","description":"Resume a stack landing. Requires authenticated authority and enforces current resource policy.","security":[{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:write"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"write"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target.","The submitted expected version or generation, and request ID or idempotency key where the contract defines one, are enforced; uncertain durable operation receipts must be reconciled rather than blindly retried."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"operation","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandOperation"}}}},"202":{"description":"Response for status 202","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"postApiReposByOwnerByRepoPullsStacksByStackLand-throughByOperationResume","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/land-through/latest":{"get":{"summary":"Get the latest stack landing","description":"Get the latest stack landing. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LandOperation"},{"type":"null"}]}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsStacksByStackLand-throughLatest","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/stacks/{stack}/land-through/{operation}":{"get":{"summary":"Get a stack landing","description":"Get a stack landing. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"stack","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}},{"name":"operation","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"string","pattern":"^gh_[0-9a-f]{64}$"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LandOperation"}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsStacksByStackLand-throughByOperation","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/pulls/{pr}/stack":{"get":{"summary":"Read pull request stack","description":"Read pull request stack. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"pr","in":"path","required":true,"schema":{"type":"string","maxLength":10,"pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"stack":{"anyOf":[{"$ref":"#/components/schemas/StackRead"},{"type":"null"}]}},"required":["stack"],"additionalProperties":false}}}},"400":{"$ref":"#/components/responses/ValidationProblem"},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"$ref":"#/components/responses/NotFoundProblem"},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConflictProblem"},{"$ref":"#/components/schemas/StackConflictProblem"}]}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StackStateProblem"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"503":{"$ref":"#/components/responses/ServiceUnavailableProblem"}},"operationId":"getApiReposByOwnerByRepoPullsByPrStack","tags":["Pull Requests"],"x-gc2-ratelimit":{"policies":["api"]}}},"/api/avatars/{type}/{id}/{filename}":{"get":{"responses":{"302":{"description":"Redirect to the current immutable avatar.","headers":{"Location":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string","enum":["no-store"]}}}},"404":{"description":"The actor does not currently have an avatar.","headers":{"Cache-Control":{"schema":{"type":"string","enum":["no-store"]}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}},"tags":["Avatars"],"summary":"Resolve the current avatar","description":"Redirects to the actor's current immutable avatar digest. The alias itself is not cacheable.","security":[],"x-gc2-permissions":{"grantRequirements":[],"conditions":["The actor must currently have a published avatar; otherwise the route returns 404."]},"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["user","org","team"]}},{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActorId"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","maxLength":1024},"description":"This exact path value may contain encoded or literal slashes; the server captures all remaining URL segments as one identity."}],"operationId":"getApiAvatarsByTypeById*","x-gc2-ratelimit":{"policies":["api"]}}},"/api/repos/{owner}/{repo}/archive/{kind}/{archive}":{"get":{"responses":{"200":{"description":"Gzip-compressed tar archive.","headers":{"Cache-Control":{"schema":{"type":"string","pattern":"^private, no-store$"}},"X-Content-Type-Options":{"schema":{"type":"string","pattern":"^nosniff$"}},"X-GC2-Commit":{"schema":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"Content-Type":{"schema":{"type":"string","pattern":"^application/gzip$"}},"Content-Disposition":{"schema":{"type":"string"}}},"content":{"application/gzip":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ValidationProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"401":{"$ref":"#/components/responses/AuthenticationProblem"},"403":{"$ref":"#/components/responses/ForbiddenProblem"},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NotFoundProblem"},{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}]}}}},"409":{"$ref":"#/components/responses/ConflictProblem"},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"},"501":{"description":"Response for status 501","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"code":{"type":"string","enum":["not-found","too-large","unavailable","unsupported","invalid"]}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"tags":["Repository source"],"summary":"Download a source archive","description":"Streams a gzip-compressed tar archive for a branch, tag, or full commit OID. Public repositories allow anonymous reads; supplied credentials are validated and may expand access to private resources.","security":[{},{"session":[]},{"bearer":[]},{"basic":[]},{"token":[]},{"apiOAuth":["repo:contents:read"]}],"x-gc2-permissions":{"grantRequirements":[{"capability":{"kind":"repo","family":"contents","level":"read"},"target":"the repository identified by owner and name"}],"conditions":["Current resource visibility, actor policy, grant selectors and bindings must admit the target."]},"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","maxLength":39}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","maxLength":104}},{"name":"kind","in":"path","required":true,"schema":{"type":"string","enum":["branch","tag","commit"]}},{"name":"archive","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":320},"description":"This exact path value may contain encoded or literal slashes; the server captures all remaining URL segments as one identity."}],"operationId":"getApiReposByOwnerByRepoArchiveByKind*","x-gc2-ratelimit":{"policies":["api","api-heavy"]}}}},"webhooks":{"issue.created":{"post":{"operationId":"webhooks.issueCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue creation event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured when GitCafe's local issue mutation creates an issue. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueCreatedWebhook"},"example":{"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"type":"issue.created","issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.closed":{"post":{"operationId":"webhooks.issueClosed","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue closure event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured when GitCafe's local close mutation transitions an open issue to completed or canceled. Repeated closes, closed-issue edits, reopening and provider imports do not emit this event. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.closed"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueClosedWebhook"},"example":{"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"type":"issue.closed","issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","state":"completed","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.updated":{"post":{"operationId":"webhooks.issueUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a successful local metadata update, including an equal-value update that advances the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.updated"}},"required":["type"]}]},"example":{"type":"issue.updated","changes":{"title":"Updated issue title"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.reopened":{"post":{"operationId":"webhooks.issueReopened","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.reopened event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a closed issue is successfully reopened. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.reopened"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.reopened"}},"required":["type"]}]},"example":{"type":"issue.reopened","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.locked":{"post":{"operationId":"webhooks.issueLocked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.locked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a successful local lock operation, including a repeated lock that advances the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.locked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.locked"}},"required":["type"]}]},"example":{"type":"issue.locked","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.unlocked":{"post":{"operationId":"webhooks.issueUnlocked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.unlocked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a successful local unlock operation, including a repeated unlock that advances the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.unlocked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.unlocked"}},"required":["type"]}]},"example":{"type":"issue.unlocked","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.pinned":{"post":{"operationId":"webhooks.issuePinned","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.pinned event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured when an unpinned issue is pinned. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.pinned"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.pinned"}},"required":["type"]}]},"example":{"type":"issue.pinned","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.unpinned":{"post":{"operationId":"webhooks.issueUnpinned","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.unpinned event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a successful local unpin operation, including an already-unpinned update that advances the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.unpinned"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.unpinned"}},"required":["type"]}]},"example":{"type":"issue.unpinned","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.assignees_updated":{"post":{"operationId":"webhooks.issueAssigneesUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.assignees_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after successful local assignee replacement, including equal-value replacements that advance the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.assignees_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.assignees_updated"}},"required":["type"]}]},"example":{"type":"issue.assignees_updated","assigneeIds":["act_00000000000000000000000001"],"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.labels_updated":{"post":{"operationId":"webhooks.issueLabelsUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.labels_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after successful local label replacement, including equal-value replacements that advance the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.labels_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.labels_updated"}},"required":["type"]}]},"example":{"type":"issue.labels_updated","labelIds":["label_00000000000000000000000001"],"labels":[{"id":"label_00000000000000000000000001","name":"bug"}],"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.milestone_updated":{"post":{"operationId":"webhooks.issueMilestoneUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.milestone_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after successful local milestone assignment, including equal-value assignments that advance the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.milestone_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.milestone_updated"}},"required":["type"]}]},"example":{"type":"issue.milestone_updated","milestoneId":null,"milestone":null,"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.linked":{"post":{"operationId":"webhooks.issueLinked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.linked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after successful local issue-link upsert, including an equal-value link update that advances the issue version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.linked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.linked"}},"required":["type"]}]},"example":{"type":"issue.linked","link":{"pullRequestId":"pr_00000000000000000000000001","linkType":"closes"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.unlinked":{"post":{"operationId":"webhooks.issueUnlinked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.unlinked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured only when an existing local issue link is removed. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.unlinked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueMutationWebhook"},{"type":"object","properties":{"type":{"const":"issue.unlinked"}},"required":["type"]}]},"example":{"type":"issue.unlinked","link":{"pullRequestId":"pr_00000000000000000000000001","linkType":"closes"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.comment_created":{"post":{"operationId":"webhooks.issueCommentCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.comment_created event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a local issue comment is created. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.comment_created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueCommentWebhook"},{"type":"object","properties":{"type":{"const":"issue.comment_created"}},"required":["type"]}]},"example":{"type":"issue.comment_created","commentId":"icomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.comment_updated":{"post":{"operationId":"webhooks.issueCommentUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.comment_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a successful local issue comment edit, including an equal-value edit that advances the comment version. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.comment_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueCommentWebhook"},{"type":"object","properties":{"type":{"const":"issue.comment_updated"}},"required":["type"]}]},"example":{"type":"issue.comment_updated","commentId":"icomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.comment_deleted":{"post":{"operationId":"webhooks.issueCommentDeleted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.comment_deleted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured after a local issue comment is successfully deleted. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.comment_deleted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueCommentWebhook"},{"type":"object","properties":{"type":{"const":"issue.comment_deleted"}},"required":["type"]}]},"example":{"type":"issue.comment_deleted","commentId":"icomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.reaction_added":{"post":{"operationId":"webhooks.issueReactionAdded","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.reaction_added event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured only when a new local issue or issue-comment reaction is inserted. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.reaction_added"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueReactionWebhook"},{"type":"object","properties":{"type":{"const":"issue.reaction_added"}},"required":["type"]}]},"example":{"type":"issue.reaction_added","reaction":{"subject":{"kind":"issue","id":"issue_00000000000000000000000001"},"emoji":"👍"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"issue.reaction_removed":{"post":{"operationId":"webhooks.issueReactionRemoved","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an issue.reaction_removed event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured only when an existing local issue or issue-comment reaction is removed. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"issue.reaction_removed"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/IssueReactionWebhook"},{"type":"object","properties":{"type":{"const":"issue.reaction_removed"}},"required":["type"]}]},"example":{"type":"issue.reaction_removed","reaction":{"subject":{"kind":"issue","id":"issue_00000000000000000000000001"},"emoji":"👍"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"issue":{"id":"issue_00000000000000000000000001","number":1,"title":"Example issue","description":"Issue details","version":1}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.created":{"post":{"operationId":"webhooks.pullCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.created event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Captured only when a new local pull is published; submission replay does not emit. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.created"}},"required":["type"]}]},"example":{"type":"pull.created","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.updated":{"post":{"operationId":"webhooks.pullUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful fenced local pull metadata edit commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.updated"}},"required":["type"]}]},"example":{"type":"pull.updated","changes":{"title":"Updated pull title"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.closed":{"post":{"operationId":"webhooks.pullClosed","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.closed event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local close changes an open pull to closed. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.closed"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.closed"}},"required":["type"]}]},"example":{"type":"pull.closed","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"closed","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.reopened":{"post":{"operationId":"webhooks.pullReopened","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.reopened event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local reopen changes a closed pull to open. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.reopened"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.reopened"}},"required":["type"]}]},"example":{"type":"pull.reopened","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.drafted":{"post":{"operationId":"webhooks.pullDrafted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.drafted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation changes an open pull to draft. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.drafted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.drafted"}},"required":["type"]}]},"example":{"type":"pull.drafted","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":true,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.ready":{"post":{"operationId":"webhooks.pullReady","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.ready event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation changes a draft pull to ready. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.ready"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.ready"}},"required":["type"]}]},"example":{"type":"pull.ready","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.locked":{"post":{"operationId":"webhooks.pullLocked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.locked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local moderation operation locks an unlocked pull. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.locked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.locked"}},"required":["type"]}]},"example":{"type":"pull.locked","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.unlocked":{"post":{"operationId":"webhooks.pullUnlocked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.unlocked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local moderation operation unlocks a locked pull. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.unlocked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.unlocked"}},"required":["type"]}]},"example":{"type":"pull.unlocked","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.reviewers_updated":{"post":{"operationId":"webhooks.pullReviewersUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.reviewers_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local reviewer replacement commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.reviewers_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.reviewers_updated"}},"required":["type"]}]},"example":{"type":"pull.reviewers_updated","actorIds":["act_00000000000000000000000001"],"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.assignees_updated":{"post":{"operationId":"webhooks.pullAssigneesUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.assignees_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local assignee replacement commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.assignees_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.assignees_updated"}},"required":["type"]}]},"example":{"type":"pull.assignees_updated","actorIds":[],"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.labels_updated":{"post":{"operationId":"webhooks.pullLabelsUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.labels_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local label replacement commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.labels_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.labels_updated"}},"required":["type"]}]},"example":{"type":"pull.labels_updated","labels":[{"id":"label_00000000000000000000000001","name":"bug"}],"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.milestone_updated":{"post":{"operationId":"webhooks.pullMilestoneUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.milestone_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local milestone assignment or clearing commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.milestone_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMutationWebhook"},{"type":"object","properties":{"type":{"const":"pull.milestone_updated"}},"required":["type"]}]},"example":{"type":"pull.milestone_updated","milestone":null,"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.linked":{"post":{"operationId":"webhooks.pullLinked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.linked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local issue link mutation commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.linked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullLinkWebhook"},{"type":"object","properties":{"type":{"const":"pull.linked"}},"required":["type"]}]},"example":{"type":"pull.linked","issueId":"issue_00000000000000000000000001","linkType":"closes","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.unlinked":{"post":{"operationId":"webhooks.pullUnlinked","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.unlinked event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local issue link mutation commits. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.unlinked"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullLinkWebhook"},{"type":"object","properties":{"type":{"const":"pull.unlinked"}},"required":["type"]}]},"example":{"type":"pull.unlinked","issueId":"issue_00000000000000000000000001","linkType":"closes","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_created":{"post":{"operationId":"webhooks.pullCommentCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_created event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_created"}},"required":["type"]}]},"example":{"type":"pull.comment_created","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_updated":{"post":{"operationId":"webhooks.pullCommentUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_updated"}},"required":["type"]}]},"example":{"type":"pull.comment_updated","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_deleted":{"post":{"operationId":"webhooks.pullCommentDeleted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_deleted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_deleted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_deleted"}},"required":["type"]}]},"example":{"type":"pull.comment_deleted","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_hidden":{"post":{"operationId":"webhooks.pullCommentHidden","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_hidden event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_hidden"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_hidden"}},"required":["type"]}]},"example":{"type":"pull.comment_hidden","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_unhidden":{"post":{"operationId":"webhooks.pullCommentUnhidden","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_unhidden event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_unhidden"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_unhidden"}},"required":["type"]}]},"example":{"type":"pull.comment_unhidden","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_resolved":{"post":{"operationId":"webhooks.pullCommentResolved","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_resolved event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_resolved"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_resolved"}},"required":["type"]}]},"example":{"type":"pull.comment_resolved","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.comment_unresolved":{"post":{"operationId":"webhooks.pullCommentUnresolved","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.comment_unresolved event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful local operation commits on a published PR comment. Private review drafts are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.comment_unresolved"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullCommentWebhook"},{"type":"object","properties":{"type":{"const":"pull.comment_unresolved"}},"required":["type"]}]},"example":{"type":"pull.comment_unresolved","commentId":"prcomment_00000000000000000000000001","id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.reaction_added":{"post":{"operationId":"webhooks.pullReactionAdded","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.reaction_added event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local PR or published-comment reaction is successfully added; duplicate additions and absent removals emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.reaction_added"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullReactionWebhook"},{"type":"object","properties":{"type":{"const":"pull.reaction_added"}},"required":["type"]}]},"example":{"type":"pull.reaction_added","reaction":{"subject":{"kind":"pull_request","id":"pr_00000000000000000000000001"},"emoji":"👍"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.reaction_removed":{"post":{"operationId":"webhooks.pullReactionRemoved","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.reaction_removed event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local PR or published-comment reaction is successfully removed; duplicate additions and absent removals emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.reaction_removed"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullReactionWebhook"},{"type":"object","properties":{"type":{"const":"pull.reaction_removed"}},"required":["type"]}]},"example":{"type":"pull.reaction_removed","reaction":{"subject":{"kind":"pull_request","id":"pr_00000000000000000000000001"},"emoji":"👍"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.review_submitted":{"post":{"operationId":"webhooks.pullReviewSubmitted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.review_submitted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local review is successfully submitted. Submission emits one summary including published inline comments; private drafts and replay are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.review_submitted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullReviewSubmittedWebhook"},{"type":"object","properties":{"type":{"const":"pull.review_submitted"}},"required":["type"]}]},"example":{"type":"pull.review_submitted","review":{"id":"review_00000000000000000000000001","verdict":"approve","commitOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"inlineCommentCount":1,"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.review_dismissed":{"post":{"operationId":"webhooks.pullReviewDismissed","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.review_dismissed event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A published local review is successfully dismissed. The published review body and dismissal reason are retained in the immutable snapshot. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.review_dismissed"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullReviewDismissedWebhook"},{"type":"object","properties":{"type":{"const":"pull.review_dismissed"}},"required":["type"]}]},"example":{"type":"pull.review_dismissed","review":{"id":"review_00000000000000000000000001","verdict":"approve","commitOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.merged":{"post":{"operationId":"webhooks.pullMerged","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.merged event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. An exact committed native merge receipt is successfully published as a merged PR and settled operation in one transaction. Stack members emit individually after their step finalizes. Acceptance, native effect alone, divergence, failed publication and completed-operation replay emit nothing; first successful recovered publication emits once. Provider projections are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.merged"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullMergedWebhook"},{"type":"object","properties":{"type":{"const":"pull.merged"}},"required":["type"]}]},"example":{"type":"pull.merged","merge":{"strategy":"merge","sourceOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","targetOidBefore":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","resultOid":"cccccccccccccccccccccccccccccccccccccccc"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"merged","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"pull.synchronized":{"post":{"operationId":"webhooks.pullSynchronized","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an pull.synchronized event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. An authoritative local head observation changes an existing PR head. Base-only, unchanged and replayed observations emit nothing. The observed ordinal is a watermark; an observing reader is not attributed as the Git writer. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"pull.synchronized"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PullSynchronizedWebhook"},{"type":"object","properties":{"type":{"const":"pull.synchronized"}},"required":["type"]}]},"example":{"type":"pull.synchronized","synchronization":{"beforeOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","afterOid":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","observedOrdinal":1,"source":"observation"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"pull":{"state":"open","draft":false,"description":"Proposed change","version":1,"sourceBranch":"feature","targetBranch":"main","id":"pr_00000000000000000000000001","number":1,"title":"Example pull"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"label.created":{"post":{"operationId":"webhooks.labelCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an label.created event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local label create operation commits. Deleted events retain the last public snapshot; failed and stale writes emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"label.created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"label.created"}},"required":["type"]}]},"example":{"type":"label.created","label":{"id":"label_00000000000000000000000001","name":"bug","color":"#ff0000","description":null,"version":1},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"label.updated":{"post":{"operationId":"webhooks.labelUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an label.updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local label update operation commits. Deleted events retain the last public snapshot; failed and stale writes emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"label.updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"label.updated"}},"required":["type"]}]},"example":{"type":"label.updated","label":{"id":"label_00000000000000000000000001","name":"bug","color":"#ff0000","description":null,"version":1},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"label.deleted":{"post":{"operationId":"webhooks.labelDeleted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an label.deleted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local label delete operation commits. Deleted events retain the last public snapshot; failed and stale writes emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"label.deleted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"label.deleted"}},"required":["type"]}]},"example":{"type":"label.deleted","label":{"id":"label_00000000000000000000000001","name":"bug","color":"#ff0000","description":null,"version":1},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"milestone.created":{"post":{"operationId":"webhooks.milestoneCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an milestone.created event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local milestone create operation commits. Deleted events retain the last public snapshot; failed and stale writes emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"milestone.created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"milestone.created"}},"required":["type"]}]},"example":{"type":"milestone.created","milestone":{"id":"milestone_00000000000000000000000001","number":1,"title":"Release","description":null,"state":"open","dueDate":null,"version":1},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"milestone.updated":{"post":{"operationId":"webhooks.milestoneUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an milestone.updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local milestone update operation commits. Deleted events retain the last public snapshot; failed and stale writes emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"milestone.updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"milestone.updated"}},"required":["type"]}]},"example":{"type":"milestone.updated","milestone":{"id":"milestone_00000000000000000000000001","number":1,"title":"Release","description":null,"state":"open","dueDate":null,"version":1},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"milestone.deleted":{"post":{"operationId":"webhooks.milestoneDeleted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an milestone.deleted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A local milestone delete operation commits. Deleted events retain the last public snapshot; failed and stale writes emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"milestone.deleted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"milestone.deleted"}},"required":["type"]}]},"example":{"type":"milestone.deleted","milestone":{"id":"milestone_00000000000000000000000001","number":1,"title":"Release","description":null,"state":"open","dueDate":null,"version":1},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"repo.default_branch_changed":{"post":{"operationId":"webhooks.repoDefaultBranchChanged","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an repo.default_branch_changed event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. Native-confirmed default-branch metadata commits once at exact durable operation settlement. Pending effects and request replays emit nothing. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"repo.default_branch_changed"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"repo.default_branch_changed"}},"required":["type"]}]},"example":{"type":"repo.default_branch_changed","defaultBranch":"trunk","previousDefaultBranch":"main","configGeneration":2,"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"ci.run_updated":{"post":{"operationId":"webhooks.ciRunUpdated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an ci.run_updated event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. An authenticated Buildkite observation commits a new CI run version. Duplicate and stale observations emit nothing; the external observer does not invent a human actor. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"ci.run_updated"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RepositoryLifecycleWebhook"},{"type":"object","properties":{"type":{"const":"ci.run_updated"}},"required":["type"]}]},"example":{"type":"ci.run_updated","run":{"id":"cirun_00000000000000000000000001","checkRunId":"checkrun_00000000000000000000000001","provider":"buildkite","context":"build","commitOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","ref":"main","state":"passed","version":1,"externalUrl":"https://buildkite.com/example/project/builds/1","startedAt":null,"finishedAt":"2026-09-30T12:00:00.000Z"},"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"git.push":{"post":{"operationId":"webhooks.gitPush","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an git.push event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. An exact successful native receipt publishes public branch/tag ref changes. HTTP, SSH, local branch operations and committed local merges use the same durable capture path. Unknown, rejected, no-op and replayed settlements emit nothing. The body contains up to 100 public updates, an exact public count and explicit truncation flag; internal refs are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"git.push"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/GitPushWebhook"},{"type":"object","properties":{"type":{"const":"git.push"}},"required":["type"]}]},"example":{"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"type":"git.push","git":{"operationId":"gpush_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","source":"push","authorityOrdinal":1,"refUpdates":[{"ref":"refs/heads/main","beforeOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","afterOid":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","created":false,"deleted":false,"forced":false}],"refUpdatesCount":1,"refUpdatesTruncated":false}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"git.ref_created":{"post":{"operationId":"webhooks.gitRefCreated","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an git.ref_created event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful native publication creates public branch or tag refs. One bounded batch contains up to 100 created refs with exact matching count and truncation flag. A mixed push can emit this event alongside git.push and git.ref_deleted. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"git.ref_created"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/GitRefCreatedWebhook"},{"type":"object","properties":{"type":{"const":"git.ref_created"}},"required":["type"]}]},"example":{"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"type":"git.ref_created","git":{"operationId":"gpush_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","source":"push","authorityOrdinal":1,"refUpdates":[{"ref":"refs/heads/main","beforeOid":null,"afterOid":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","created":true,"deleted":false,"forced":false}],"refUpdatesCount":1,"refUpdatesTruncated":false}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"git.ref_deleted":{"post":{"operationId":"webhooks.gitRefDeleted","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive an git.ref_deleted event","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. A successful native publication deletes public branch or tag refs, including committed branch cleanup. One bounded batch contains up to 100 deleted refs with exact matching count and truncation flag. Private retained/scratch refs are excluded. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"git.ref_deleted"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/GitRefDeletedWebhook"},{"type":"object","properties":{"type":{"const":"git.ref_deleted"}},"required":["type"]}]},"example":{"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"repository":{"id":"repo_00000000000000000000000001","orgId":"org_00000000000000000000000001"},"type":"git.ref_deleted","git":{"operationId":"gpush_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","source":"push","authorityOrdinal":1,"refUpdates":[{"ref":"refs/heads/main","beforeOid":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","afterOid":null,"created":false,"deleted":true,"forced":false}],"refUpdatesCount":1,"refUpdatesTruncated":false}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}},"webhook.ping":{"post":{"operationId":"webhooks.webhookPing","security":[],"tags":["Webhooks"],"x-beta":true,"summary":"Receive a signed endpoint ping","description":"Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits. An authorized administrator explicitly queues one probe for this endpoint through the normal signing, lease and retry pipeline. The strict owner identifies a repository or organization; organization probes do not invent a repository. Ping bypasses subscriptions only, and still requires an active endpoint, permitted current destination, signing and live source. GitCafe POSTs an immutable version 1 snapshot to an eligible active endpoint. Verify the timestamp and HMAC-SHA256 over timestamp + '.' + the unchanged UTF-8 request body using the indicated current signing-key generation. The signature value is sha256=<lowercase hex>. Retries reuse body and delivery identity but refresh timestamp and signing key. Delivery attempts are at least once; deduplicate by the signed body event id within each receiver subscription. The delivery header is an inspection identifier and is not covered by the signature. No ordering is promised. A 2xx response acknowledges acceptance. Network failures, 408, 425, 429 and 5xx retry within eight attempts or 24 hours; redirects and other statuses terminate. Retry-After is capped at one hour. See /docs/integrations/webhooks for configuration and failure recovery. This contract does not prove deployed transport qualification.","parameters":[{"name":"X-GitCafe-Event","in":"header","required":true,"schema":{"type":"string","const":"webhook.ping"},"description":"The supported event type."},{"name":"X-GitCafe-Delivery","in":"header","required":true,"schema":{"type":"string"},"description":"Stable delivery identifier for inspection. Deduplicate using the signed body event id."},{"name":"X-GitCafe-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Unix seconds for this attempt. Check an appropriate receiver replay window before acceptance."},{"name":"X-GitCafe-Key-Version","in":"header","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]*$"},"description":"Current signing-key generation used for this attempt."},{"name":"X-GitCafe-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of timestamp + '.' + exact request body bytes. Compare in constant time."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookPingPayload"},{"type":"object","properties":{"type":{"const":"webhook.ping"}},"required":["type"]}]},"example":{"id":"evt_00000000000000000000000001","version":"1","createdAt":"2026-09-30T12:00:00.000Z","actor":{"id":"act_00000000000000000000000001"},"type":"webhook.ping","endpoint":{"id":"whep_00000000000000000000000001"},"owner":{"kind":"org","orgId":"org_00000000000000000000000001"}}}}},"responses":{"200":{"description":"The receiver accepted the event. Any 2xx status has this meaning."},"429":{"description":"Retry within the delivery budget; Retry-After is capped at one hour.","headers":{"Retry-After":{"description":"Delay in seconds or an HTTP date.","schema":{"type":"string"}}}},"503":{"description":"Temporary receiver failure; retry within the delivery budget."},"default":{"description":"408, 425 and other 5xx are retryable. Redirects and all other non-2xx statuses terminate this delivery."}}}}}}
