{"components":{"responses":{"Forbidden":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Forbidden - authenticated but not permitted to perform this action. Do not retry."},"Gone":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Gone - endpoint permanently removed. Do not retry; migrate to the documented replacement."},"InternalError":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Internal server error. Safe to retry with backoff; quote error.id when reporting it."},"NotFound":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Not found - the resource does not exist, or the caller is not entitled to know that it does."},"TooManyRequests":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Too many requests - rate limited. Wait the Retry-After header's seconds, then retry with backoff."},"Unauthorized":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Unauthorized - missing, invalid or expired token. Do not retry without a new token."}},"schemas":{"Error":{"properties":{"detail":{"description":"Human-readable explanation specific to this occurrence.","type":"string"},"id":{"description":"Unique identifier for this occurrence. Include it when reporting the problem so support can find the failure.","type":"string"},"source":{"description":"Identifies the origin of the error in the request.","properties":{"error":{"description":"Underlying parser/validation error message.","type":"string"},"offset":{"description":"Byte offset in the JSON input where the error was detected.","format":"int64","type":"integer"},"pointer":{"description":"JSON Pointer (RFC 6901) to the field that caused the error.","type":"string"}},"type":"object"},"title":{"description":"Short, human-readable summary of the problem.","type":"string"},"type":{"description":"Low-cardinality machine-readable error type, present only where an operation sets one explicitly - absent is normal, so branch on the HTTP status first and use this to tell causes apart within one status. A bare token, never a URI to dereference. The value set is open, so treat an unrecognised value as a generic failure for the status. Request-parsing errors use: syntax_error, empty_input, unknown_field, invalid_structure, invalid_format, type_mismatch, validation_error, invalid_route, invalid_path_param.","type":"string"}},"type":"object"}},"securitySchemes":{"bearer_token":{"scheme":"bearer","type":"http"}}},"info":{"description":"CircleCI's V3 API. Every route is served under `/api/v3` on `https://circleci.com`.\n\nNo standard is implemented. V3 takes the ideas that work from established API designs and\ncombines them into one coherent whole, but it is not JSON:API, not `problem+json`, and not HAL.\nFamiliar names like `data`, `attributes`, `source.pointer` and `filter[...]` carry no behaviour\nfrom those specs. Take everything from this document, and do not use a standard-conformant client\nlibrary.\n\n## Conventions\n\n### Auth\n\n`Authorization: Bearer \u003ctoken\u003e`. A token in a query parameter is rejected.\n\n### Ids\n\nIds are UUIDs, never slugs or names. Some collections resolve a slug via `filter[slug]`.\n\n### One resource\n\n`{\"data\": {\"id\", \"attributes\", \"references\"}}`. Each entry in `references` is an `id`, or an array\nof them, sometimes carrying a nested `attributes` object of denormalised fields from the referenced\nresource. Read the operation's schema for which fields those are, and fetch the resource itself for\nanything not listed - there is no way to request more inline.\n\n### A collection\n\n`{\"data\": [...], \"page\": {\"next\", \"prev\"}}`. `page.next` and `page.prev` are opaque cursor values,\nnot URLs - send one back as `page[cursor]`, unmodified, and stop when `page.next` is `null`.\n`page[limit]` bounds are per-operation, and out of range is a 400, not a clamp.\n\n### Scoping\n\nScoping uses `filter[...]`. Most list operations require a scope filter such as `filter[org_id]` or\n`filter[project_id]` and return 400 without it, so read the operation's parameters.\n\n### Methods\n\n`GET` reads, `POST` creates and performs named actions and partial updates, `PUT` replaces in full,\n`DELETE` removes. There is no `PATCH`.\n\n### Retrying\n\n`GET`, `PUT` and `DELETE` are idempotent. V3 aims for idempotent `POST` wherever an operation\nallows it, but never assume a given `POST` is replayable: retrying one that timed out can create a\nsecond resource or fire an action twice. Retry a `POST` only if its own description says it is\nidempotent - otherwise re-read the collection to find out whether the first attempt landed.\n\n### Destructive operations\n\n`DELETE`, and `POST` actions such as `cancel`, `delete`, `revoke` and `purge`, take effect\nimmediately and normally cannot be undone. Treat them as irreversible: no operation here reverses\nanother, and there is no dry-run mode. Where recovery is possible at all it is a support matter,\nnot an API call.\n\n### Errors\n\nErrors return a single `error` object, never an `errors` array:\n`{\"error\": {\"type\", \"id\", \"title\", \"detail\", \"source\"}}`. Branch on the status code; every member\nis optional. `error.type`, where present, separates causes within one status and is a bare token,\nnot a URI. Never branch on `title` or `detail`. Quote `error.id` in support requests. Invalid input\nis always 400, never 422.\n\n### Rate limits\n\nOn 429, wait the `Retry-After` seconds, then back off exponentially. Responses carry\n`RateLimit-Policy` and `RateLimit`, the policy and the current state against it\n(IETF draft-ietf-httpapi-ratelimit-headers). Limits are per route and are not published: read the\nheaders rather than assuming a figure.\n\n### Caching\n\nResponses carry an `ETag` and a `Cache-Control` directive. Where a response has an `ETag`, send it\nback as `If-None-Match` to make the request conditional and get a 304 when nothing has changed.\n\n### Deprecation\n\nA deprecated operation is marked `deprecated: true` and its responses carry `Deprecation`, whose\nvalue is `true` (RFC 9745), `Sunset`, the HTTP-date when the endpoint will be removed (RFC 8594),\nand `Link` with `rel=\"deprecation\"`, pointing at the migration documentation (RFC 8288). Migrate\nbefore the `Sunset` date. A removed route returns 410, permanently.\n\n### Additions\n\nResponse fields are added without a version change. Ignore members you do not recognise rather\nthan failing to parse.\n","title":"CircleCI API V3","version":"3.0"},"openapi":"3.0.3","paths":{"/api/v3/analysis/charges":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nReturns a paginated list of charge totals scoped to one or more projects within a time window. The required analysis field selects what charges are grouped by: charge.job, charge.workflow or charge.pipeline.\n\nEach result is one entity name within one project, carrying the credits it was charged, the number of runs those credits are spread across, and the credits per run. A run is one instance of the entity: charge.job counts jobs, charge.workflow counts workflows, charge.pipeline counts pipelines.\n\nOther dimensions of a charge are filters rather than groupings, so slice by them through filter: actor.id, actor.external_slug, resource.class and charge.type, alongside job, workflow and pipeline values.\n\nThe optional order_by field accepts an expression of the form  [asc|desc]. The direction is optional and falls back to a per-field default. When order_by is omitted or empty, results are sorted by credits desc. Supported fields and their default directions: credits (desc), runs (desc), credits_per_run (desc), name (asc).","operationId":"post-analysis-charges","requestBody":{"content":{"application/json":{"schema":{"properties":{"analysis":{"type":"string"},"filter":{"type":"string"},"order_by":{"type":"string"},"page":{"properties":{"cursor":{"type":"string"},"limit":{"type":"integer"}},"required":["cursor","limit"],"type":"object"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["analysis","filter","order_by","page","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"credits":{"type":"integer"},"credits_per_run":{"type":"number"},"name":{"type":"string"},"runs":{"type":"integer"}},"required":["credits","credits_per_run","name","runs"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns entities ranked by what they were charged.","tags":["Analysis"]}},"/api/v3/analysis/jobs":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nReturns a paginated list of aggregated job results scoped to one or more projects within a time window. Each result represents a unique job (identified by project + workflow + job name) and includes per-job duration quantiles, success rate, and distinct test counts across the window.\n\nThe optional order_by field accepts an expression of the form  [asc|desc]. The direction is optional and falls back to a per-field default. When order_by is omitted or empty, results are sorted by name asc. Supported fields and their default directions: name (asc), workflow_name (asc), duration (desc), test_count (desc), flaky_test_count (desc), success_rate (desc).","operationId":"post-analysis-jobs","requestBody":{"content":{"application/json":{"schema":{"properties":{"filter":{"type":"string"},"order_by":{"type":"string"},"page":{"properties":{"cursor":{"type":"string"},"limit":{"type":"integer"}},"required":["cursor","limit"],"type":"object"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["filter","order_by","page","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"duration":{"properties":{"avg_ms":{"type":"integer"},"p50_ms":{"type":"integer"},"p95_ms":{"type":"integer"}},"required":["avg_ms","p50_ms","p95_ms"],"type":"object"},"flaky_test_count":{"type":"integer"},"name":{"type":"string"},"success_rate":{"type":"number"},"test_count":{"type":"integer"},"workflow_name":{"type":"string"}},"required":["duration","flaky_test_count","name","success_rate","test_count","workflow_name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns aggregated job results across runs.","tags":["Analysis"]}},"/api/v3/analysis/tests":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nReturns a paginated list of aggregated test results scoped to one or more projects within a time window. Each result represents a unique test (identified by project + workflow + job + classname + file + name) and includes per-test success rate and average duration over the window.\n\ntotal_count is the number of non-skipped executions of the test in the window. flaky_count is the number of those executions that failed or errored within a pipeline where the same test also passed, matching the test_flake.pipeline metric. Skipped executions are excluded from every attribute, so a test that only ever skipped in the window is omitted.\n\nThe optional order_by field accepts an expression of the form  [asc|desc]. The direction is optional and falls back to a per-field default. When order_by is omitted or empty, results are sorted by name asc. Supported fields and their default directions: name (asc), job_name (asc), duration (desc), flaky_count (desc), success_rate (desc).","operationId":"post-analysis-tests","requestBody":{"content":{"application/json":{"schema":{"properties":{"filter":{"type":"string"},"order_by":{"type":"string"},"page":{"properties":{"cursor":{"type":"string"},"limit":{"type":"integer"}},"required":["cursor","limit"],"type":"object"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["filter","order_by","page","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"classname":{"type":"string"},"duration":{"properties":{"avg_ms":{"type":"integer"}},"required":["avg_ms"],"type":"object"},"file":{"type":"string"},"flaky_count":{"type":"integer"},"job_name":{"type":"string"},"name":{"type":"string"},"success_rate":{"type":"number"},"total_count":{"type":"integer"},"workflow_name":{"type":"string"}},"required":["classname","duration","file","flaky_count","job_name","name","success_rate","total_count","workflow_name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns aggregated test results across runs.","tags":["Analysis"]}},"/api/v3/analysis/usage":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nReturns a paginated list of resource usage scoped to one or more projects within a time window, which selects the jobs that completed inside it. The required analysis field picks the granularity: usage.job, usage.workflow or usage.pipeline.\n\nEach result is one entity name within one project. avg_cpu_used and avg_memory_bytes are means over that entity's samples, so they weight by run duration; peak_cpu_used and peak_memory_bytes are the largest single sample, not a concurrent total. cpu_utilization and ram_utilization are those means over what was allocated, where 1 is fully consumed and a low value means over-provisioned. network_bytes_received and network_bytes_transmitted are totals across runs. runs counts the entity's instances — jobs, workflows or pipelines per the granularity.\n\nA pipeline is named only by its configuration, so usage.pipeline reports pipelines that carry no name together under an empty name.\n\nOther dimensions are filters rather than groupings, so slice by them through filter: resource.class, resource.executor, resource.cpu (cores), resource.ram (mebibytes, unlike the *_memory_bytes attributes), parallel_execution.number, and job, workflow and pipeline values.\n\nThe optional order_by takes  [asc|desc], defaulting to peak_memory_bytes desc. Supported fields and their default directions: peak_memory_bytes (desc), avg_memory_bytes (desc), peak_cpu_used (desc), avg_cpu_used (desc), cpu_utilization (asc), ram_utilization (asc), network_bytes_received (desc), network_bytes_transmitted (desc), runs (desc), name (asc). The utilizations default ascending because the least utilized entities are the over-provisioned ones.","operationId":"post-analysis-usage","requestBody":{"content":{"application/json":{"schema":{"properties":{"analysis":{"type":"string"},"filter":{"type":"string"},"order_by":{"type":"string"},"page":{"properties":{"cursor":{"type":"string"},"limit":{"type":"integer"}},"required":["cursor","limit"],"type":"object"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["analysis","filter","order_by","page","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"avg_cpu_used":{"type":"number"},"avg_memory_bytes":{"type":"number"},"cpu_utilization":{"type":"number"},"name":{"type":"string"},"network_bytes_received":{"type":"integer"},"network_bytes_transmitted":{"type":"integer"},"peak_cpu_used":{"type":"number"},"peak_memory_bytes":{"type":"integer"},"ram_utilization":{"type":"number"},"runs":{"type":"integer"}},"required":["avg_cpu_used","avg_memory_bytes","cpu_utilization","name","network_bytes_received","network_bytes_transmitted","peak_cpu_used","peak_memory_bytes","ram_utilization","runs"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns entities ranked by the resources they consumed.","tags":["Analysis"]}},"/api/v3/catalog/offerings":{"get":{"operationId":"get-catalog-offerings","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"deprecated":{"type":"string"},"linux":{"type":"string"},"macos":{"type":"string"},"windows":{"type":"string"}},"required":["deprecated","linux","macos","windows"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"tags":["Catalog"]}},"/api/v3/configs/compile":{"post":{"description":"A config that fails to compile is reported as outcome \"failed\" with the reasons in meta.messages - still HTTP 200, since the request itself succeeded. The error envelope is reserved for request-level failures (malformed body, bad org, unauthorized).","operationId":"post-configs-compile","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"config":{"type":"string"},"pipeline_parameters":{"additionalProperties":{},"nullable":true,"type":"object"},"pipeline_values":{"additionalProperties":{},"nullable":true,"type":"object"},"should_preview_next":{"nullable":true,"type":"boolean"}},"required":["config"],"type":"object"},"references":{"properties":{"org":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"compiled_config":{"nullable":true,"type":"string"},"outcome":{"type":"string"},"phase":{"type":"string"}},"required":["outcome","phase"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Compiles the supplied pipeline config, expanding orbs and resolving parameters.","tags":["Configs"]}},"/api/v3/context-restrictions":{"get":{"operationId":"get-context-restrictions","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"match_pattern":{"type":"string"},"restriction_type":{"type":"string"}},"required":["created_at","match_pattern","restriction_type"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"context":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["context"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the restrictions applied to a context.","tags":["Context Restrictions"]},"post":{"operationId":"post-context-restrictions","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"match_pattern":{"type":"string"},"restriction_type":{"type":"string"}},"required":["match_pattern","restriction_type"],"type":"object"},"references":{"properties":{"context":{"properties":{"attributes":{"nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"rel":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"}},"required":["context"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"match_pattern":{"type":"string"},"restriction_type":{"type":"string"}},"required":["created_at","match_pattern","restriction_type"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"context":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["context"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Invalid restriction type."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a restriction for the context referenced in the request body.","tags":["Context Restrictions"]}},"/api/v3/context-restrictions/{id}":{"delete":{"operationId":"delete-context-restrictions-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes a context restriction by id, scoped to the required context_id filter.","tags":["Context Restrictions"]}},"/api/v3/contexts":{"get":{"operationId":"get-contexts","parameters":[{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"name":{"type":"string"}},"required":["created_at","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"groups":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"nullable":true,"type":"array"},"org":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the contexts owned by an organization.","tags":["Contexts"]},"post":{"operationId":"post-contexts","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"references":{"properties":{"org":{"properties":{"attributes":{"nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"rel":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"name":{"type":"string"}},"required":["created_at","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"groups":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"nullable":true,"type":"array"},"org":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a context owned by an organization.","tags":["Contexts"]}},"/api/v3/contexts/{id}":{"delete":{"operationId":"delete-contexts-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes a context by id.","tags":["Contexts"]},"get":{"operationId":"get-contexts-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"name":{"type":"string"}},"required":["created_at","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"groups":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"nullable":true,"type":"array"},"org":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a single context by id.","tags":["Contexts"]}},"/api/v3/contexts/{id}/env-vars":{"delete":{"operationId":"delete-contexts-by-id-env-vars","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[name]","required":true,"schema":{"type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes an environment variable from a context by name.","tags":["Contexts"]},"get":{"operationId":"get-contexts-by-id-env-vars","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"name":{"type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["created_at","name","updated_at"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"context":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["context"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the environment variables of a context.","tags":["Contexts"]}},"/api/v3/contexts/{id}/env-vars/set":{"post":{"operationId":"post-contexts-by-id-env-vars-set","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"],"type":"object"}}},"required":true},"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates or updates an environment variable in a context.","tags":["Contexts"]}},"/api/v3/deploy/components":{"get":{"description":"filter[org_id] is required — there is no unscoped listing of components across organizations. filter[project_id] optionally narrows the result to the components owned by one CircleCI project. Results are paginated with page[limit] and page[cursor].\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-components","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[project_id]","schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns an organization's deploy components, ordered by name.","tags":["Deploy Components"]}},"/api/v3/deploy/components/{id}":{"get":{"description":"A component the caller may not view is reported as not found, so the response does not reveal whether the id exists.\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-components-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"archived_at":{"format":"date-time","nullable":true,"type":"string"},"created_at":{"format":"date-time","type":"string"},"labels":{"items":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"type":"object"},"type":"array"},"name":{"type":"string"},"release_count":{"type":"integer"},"updated_at":{"format":"date-time","type":"string"}},"required":["created_at","labels","name","release_count","updated_at"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns a single deploy component by id.","tags":["Deploy Components"]}},"/api/v3/deploy/components/{id}/versions":{"get":{"description":"Versions stay a sub-collection of their component because they have no identity of their own: a version is keyed by its name and the component instance it was deployed to, so collection items carry no id. filter[environment_id] narrows the result to one deploy environment. Results are paginated with page[limit] and page[cursor].\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-components-by-id-versions","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[environment_id]","schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns a component's versions, most recently deployed first.","tags":["Deploy Components"]}},"/api/v3/deploy/config-suggestions":{"post":{"description":"generates a suggested config of the requested kind (deploy markers, deploy pipeline, or rollback pipeline). It stores the request and returns a 202 with a request ID; the client polls GET .../:id until phase=ended.","operationId":"post-deploy-config-suggestions","requestBody":{"content":{"application/json":{"schema":{"properties":{"config":{"type":"string"},"is_auto_rollback_on_failure":{"nullable":true,"type":"boolean"},"is_validation_enabled":{"nullable":true,"type":"boolean"},"kind":{"type":"string"},"org_id":{"type":"string"},"project_id":{"type":"string"}},"required":["config","kind","org_id","project_id"],"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"config":{"nullable":true,"type":"string"},"detail":{"nullable":true,"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"summary":{"nullable":true,"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Validates a CircleCI config and asynchronously","tags":["Deploy Config Suggestions"]}},"/api/v3/deploy/config-suggestions/{id}":{"get":{"operationId":"get-deploy-config-suggestions-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"config":{"nullable":true,"type":"string"},"detail":{"nullable":true,"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"summary":{"nullable":true,"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns the status of an async config suggestion request.","tags":["Deploy Config Suggestions"]}},"/api/v3/deploy/deployments":{"get":{"description":"filter[org_id] is required — there is no unscoped listing of deployments across organizations, and the caller's permission to read that organization's deployments is what authorizes the request. The remaining filters narrow the result within the organization: by project, component, environment, the job that ran the deployment, a label, and a created-at window via filter[from] and filter[to].\n\nResults are paginated with page[limit] and page[cursor]; the cursor carries its own direction, so page.prev walks back towards newer deployments.\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-deployments","parameters":[{"in":"query","name":"filter[label]","schema":{"type":"string"}},{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns an organization's deployments, most recently created first.","tags":["Deploy Deployments"]}},"/api/v3/deploy/diff-summaries":{"post":{"operationId":"post-deploy-diff-summaries","requestBody":{"content":{"application/json":{"schema":{"properties":{"diff":{"properties":{"commit_messages":{"items":{"type":"string"},"type":"array"},"files":{"items":{"properties":{"additions":{"type":"integer"},"deletions":{"type":"integer"},"filename":{"type":"string"},"patch":{"nullable":true,"type":"string"},"status":{"type":"string"}},"required":["additions","deletions","filename","status"],"type":"object"},"type":"array"}},"required":["commit_messages","files"],"type":"object"},"org_id":{"type":"string"},"project_id":{"type":"string"}},"required":["diff","org_id","project_id"],"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"config":{"nullable":true,"type":"string"},"detail":{"nullable":true,"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"summary":{"nullable":true,"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Request Entity Too Large"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Generates a summary of a diff asynchronously.","tags":["Deploy Diff Summaries"]}},"/api/v3/deploy/diff-summaries/{id}":{"get":{"operationId":"get-deploy-diff-summaries-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"config":{"nullable":true,"type":"string"},"detail":{"nullable":true,"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"summary":{"nullable":true,"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Gets the status of an async diff summary request.","tags":["Deploy Diff Summaries"]}},"/api/v3/deploy/environments":{"get":{"description":"filter[org_id] is required — there is no unscoped listing of environments across organizations. Results are paginated with page[limit] and page[cursor].\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-environments","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns an organization's deploy environments, ordered by name.","tags":["Deploy Environments"]}},"/api/v3/deploy/environments/{id}":{"get":{"description":"An environment the caller may not view is reported as not found, so the response does not reveal whether the id exists.\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-environments-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"kind":{"type":"string"},"labels":{"items":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"type":"object"},"type":"array"},"name":{"type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["created_at","kind","labels","name","updated_at"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns a single deploy environment by id.","tags":["Deploy Environments"]}},"/api/v3/deploy/settings":{"get":{"description":"Deploy settings are a singleton per project rather than an independently addressable resource, so they are selected with a required filter[project_id] instead of a path id, and the returned data.id is the project's own UUID.\n\nA project that has never had deploy settings saved reports empty settings rather than a 404, matching the V2 behaviour: not having configured a deploy pipeline is a normal state, not a missing resource. A project the caller may not view is reported as not found.\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"get-deploy-settings","parameters":[{"in":"query","name":"filter[project_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["created_at","updated_at"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"pipelines":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipelines","project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Service unavailable."}},"summary":"Returns a project's deploy settings.","tags":["Deploy Settings"]}},"/api/v3/jobs":{"get":{"operationId":"get-jobs","parameters":[{"in":"query","name":"filter[workflow_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"ended_at":{"format":"date-time","nullable":true,"type":"string"},"name":{"type":"string"},"number":{"type":"integer"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"started_at":{"format":"date-time","nullable":true,"type":"string"},"type":{"type":"string"}},"required":["name","number","phase","type"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"workflow":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project","workflow"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the jobs in a workflow.","tags":["Jobs"]}},"/api/v3/jobs/{id}":{"get":{"operationId":"get-jobs-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"ended_at":{"format":"date-time","nullable":true,"type":"string"},"name":{"type":"string"},"outcome":{"nullable":true,"type":"string"},"parallel_executions":{"items":{"properties":{"steps":{"items":{"properties":{"command":{"nullable":true,"type":"string"},"ended_at":{"format":"date-time","nullable":true,"type":"string"},"exit_code":{"nullable":true,"type":"integer"},"name":{"type":"string"},"num":{"type":"integer"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"started_at":{"format":"date-time","nullable":true,"type":"string"},"stderr_bytes":{"nullable":true,"type":"integer"},"stdout_bytes":{"nullable":true,"type":"integer"},"type":{"type":"string"}},"required":["name","num","phase","type"],"type":"object"},"type":"array"}},"required":["steps"],"type":"object"},"nullable":true,"type":"array"},"phase":{"type":"string"},"started_at":{"format":"date-time","nullable":true,"type":"string"},"type":{"type":"string"}},"required":["name","phase","type"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"workflow":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline","project","workflow"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Fetches a single job, including its steps and parallel executions.","tags":["Jobs"]}},"/api/v3/jobs/{id}/artifacts":{"get":{"operationId":"get-jobs-by-id-artifacts","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"execution":{"type":"integer"},"path":{"type":"string"},"url":{"type":"string"}},"required":["execution","path","url"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the artifacts produced by a job's parallel executions.","tags":["Jobs"]}},"/api/v3/jobs/{id}/resource-usage":{"get":{"description":"Each execution reports ordered CPU, memory and network samples taken interval_ms apart, alongside the resource class the job was dispatched to. Samples carry no timestamps: the first sample is the first collection tick after the execution started.\n\nOnly Docker executions record samples, so machine and runner jobs return an empty parallel_executions list. Recordings expire after 90 days, and an execution that recorded nothing is absent from the list rather than empty, so a missing execution is not an execution that did not run.","operationId":"get-jobs-by-id-resource-usage","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"parallel_executions":{"items":{"properties":{"cpu_cores":{"items":{"type":"number"},"type":"array"},"execution":{"type":"integer"},"interval_ms":{"type":"integer"},"memory_bytes":{"items":{"type":"integer"},"type":"array"},"network_rx_bytes":{"type":"integer"},"network_tx_bytes":{"type":"integer"}},"required":["cpu_cores","execution","interval_ms","memory_bytes","network_rx_bytes","network_tx_bytes"],"type":"object"},"type":"array"},"resource_class":{"nullable":true,"properties":{"cpu_count":{"type":"integer"},"memory_limit_bytes":{"type":"integer"},"name":{"type":"string"}},"required":["cpu_count","memory_limit_bytes","name"],"type":"object"}},"required":["parallel_executions"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a job's recorded resource usage per parallel execution.","tags":["Jobs"]}},"/api/v3/jobs/{id}/stderr":{"get":{"operationId":"get-jobs-by-id-stderr","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[execution]","required":true,"schema":{"type":"integer"}},{"in":"query","name":"filter[step_num]","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns the stderr of a job step for a given parallel execution.","tags":["Jobs"]}},"/api/v3/jobs/{id}/stdout":{"get":{"operationId":"get-jobs-by-id-stdout","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[execution]","required":true,"schema":{"type":"integer"}},{"in":"query","name":"filter[step_num]","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns the stdout of a job step for a given parallel execution.","tags":["Jobs"]}},"/api/v3/jobs/{id}/stdout/condensed":{"get":{"operationId":"get-jobs-by-id-stdout-condensed","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[execution]","required":true,"schema":{"type":"integer"}},{"in":"query","name":"filter[step_num]","required":true,"schema":{"type":"integer"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a step's stdout condensed to its most error-relevant lines, suitable for AI-agent consumption.","tags":["Jobs"]}},"/api/v3/jobs/{id}/tests":{"get":{"operationId":"get-jobs-by-id-tests","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a job's structured test results as JSON Lines.","tags":["Jobs"]}},"/api/v3/metric/counts":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and supported metrics are not yet stable. Do not depend on this endpoint in production clients.\n\nReturns count metrics (test result counts and test flake counts) over a time window, split into fixed-width buckets. Each bucket contains one or more groups when group_by dimensions are supplied. Each group's key is a positional array whose entries align 1:1 with the request's group_by expressions (so key[i] is the value for group_by[i]), and is null when no group_by is supplied.\n\nBuckets with no matching rows are omitted rather than zero-filled — including the single bucket of an interval=none request over an empty window, which returns an empty buckets array. Clients should treat an absent bucket as zero.","operationId":"post-metric-counts","requestBody":{"content":{"application/json":{"schema":{"properties":{"filter":{"type":"string"},"group_by":{"items":{"type":"string"},"type":"array"},"interval":{"type":"string"},"metric":{"type":"string"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["filter","group_by","interval","metric","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"buckets":{"items":{"properties":{"groups":{"items":{"properties":{"key":{"items":{},"type":"array"},"metrics":{"properties":{"count":{"type":"integer"}},"required":["count"],"type":"object"}},"required":["key","metrics"],"type":"object"},"type":"array"},"is_truncated":{"type":"boolean"},"start_at":{"format":"date-time","type":"string"}},"required":["groups","is_truncated","start_at"],"type":"object"},"type":"array"},"group_by":{"items":{"type":"string"},"type":"array"},"interval_ms":{"type":"integer"}},"required":["buckets","group_by","interval_ms"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns time-bucketed counts for a named metric.","tags":["Metric"]}},"/api/v3/metric/distributions":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and supported metrics are not yet stable. Do not depend on this endpoint in production clients.\n\nReturns distribution metrics (e.g. test result duration percentiles) over a time window, split into fixed-width buckets. Each bucket contains one or more groups when group_by dimensions are supplied. Each group's key is a positional array whose entries align 1:1 with the request's group_by expressions (so key[i] is the value for group_by[i]), and is null when no group_by is supplied.\n\nBuckets with no matching rows are omitted rather than zero-filled — including the single bucket of an interval=none request over an empty window, which returns an empty buckets array. An absent bucket means no observations in that slice; do not invent zero averages or percentiles.","operationId":"post-metric-distributions","requestBody":{"content":{"application/json":{"schema":{"properties":{"filter":{"type":"string"},"group_by":{"items":{"type":"string"},"type":"array"},"interval":{"type":"string"},"metric":{"type":"string"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["filter","group_by","interval","metric","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"buckets":{"items":{"properties":{"groups":{"items":{"properties":{"key":{"items":{},"type":"array"},"metrics":{"properties":{"avg":{"type":"integer"},"count":{"type":"integer"},"p5":{"type":"integer"},"p50":{"type":"integer"},"p90":{"type":"integer"},"p95":{"type":"integer"},"p99":{"type":"integer"},"sum":{"type":"integer"}},"required":["avg","count","p5","p50","p90","p95","p99","sum"],"type":"object"}},"required":["key","metrics"],"type":"object"},"type":"array"},"is_truncated":{"type":"boolean"},"start_at":{"format":"date-time","type":"string"}},"required":["groups","is_truncated","start_at"],"type":"object"},"type":"array"},"group_by":{"items":{"type":"string"},"type":"array"},"interval_ms":{"type":"integer"}},"required":["buckets","group_by","interval_ms"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns time-bucketed distribution metrics for a named metric.","tags":["Metric"]}},"/api/v3/namespaces":{"get":{"operationId":"get-namespaces","parameters":[{"in":"query","name":"filter[name]","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"List namespaces.","tags":["Namespaces"]},"post":{"operationId":"post-namespaces","requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"},"org_id":{"format":"uuid","type":"string"}},"required":["name","org_id"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Create a new namespace.","tags":["Namespaces"]}},"/api/v3/namespaces/import":{"post":{"operationId":"post-namespaces-import","requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"},"org_id":{"format":"uuid","type":"string"}},"required":["name","org_id"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Import a namespace.","tags":["Namespaces"]}},"/api/v3/namespaces/{id}":{"delete":{"operationId":"delete-namespaces-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Delete a namespace.","tags":["Namespaces"]},"get":{"operationId":"get-namespaces-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieve a single namespace by its ID.","tags":["Namespaces"]}},"/api/v3/namespaces/{id}/rename":{"post":{"operationId":"post-namespaces-by-id-rename","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Rename a namespace.","tags":["Namespaces"]}},"/api/v3/notification/channel-configs":{"get":{"description":"filter[scope] selects user or project scope; project scope also requires filter[project_id] and filter[org_id].","operationId":"get-notification-channel-configs","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[project_id]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[scope]","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Filter[scope] must be \"user\" or \"project\""},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Serves the V3 channel-config collection.","tags":["Notification Channel Configs"]},"post":{"description":"Scope comes from data.attributes.scope; user scope requires an org reference, project scope requires project + org references.","operationId":"post-notification-channel-configs","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"channel_type":{"type":"string"},"is_enabled":{"type":"boolean"},"scope":{"type":"string"},"target":{"nullable":true,"type":"string"}},"required":["channel_type","is_enabled","scope"],"type":"object"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","project"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"channel_name":{"nullable":true,"type":"string"},"channel_type":{"type":"string"},"is_enabled":{"type":"boolean"},"target":{"nullable":true,"type":"string"}},"required":["channel_type","is_enabled"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","project","user"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Invalid channel_type"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates (or replaces) a channel config.","tags":["Notification Channel Configs"]}},"/api/v3/notification/channel-configs/{id}":{"delete":{"operationId":"delete-notification-channel-configs-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes the channel config addressed by id.","tags":["Notification Channel Configs"]},"get":{"operationId":"get-notification-channel-configs-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"channel_name":{"nullable":true,"type":"string"},"channel_type":{"type":"string"},"is_enabled":{"type":"boolean"},"target":{"nullable":true,"type":"string"}},"required":["channel_type","is_enabled"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","project","user"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a single channel config addressed by its row id.","tags":["Notification Channel Configs"]}},"/api/v3/notification/channel-configs/{id}/update":{"post":{"description":"Only target and/or is_enabled may change; the config is addressed by id.","operationId":"post-notification-channel-configs-by-id-update","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"is_enabled":{"nullable":true,"type":"boolean"},"target":{"nullable":true,"type":"string"}},"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"channel_name":{"nullable":true,"type":"string"},"channel_type":{"type":"string"},"is_enabled":{"type":"boolean"},"target":{"nullable":true,"type":"string"}},"required":["channel_type","is_enabled"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","project","user"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Applies a partial update to the channel config.","tags":["Notification Channel Configs"]}},"/api/v3/notification/integrations":{"get":{"operationId":"get-notification-integrations","parameters":[{"in":"query","name":"filter[org_id]","schema":{"type":"string"}},{"in":"query","name":"filter[type]","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Filter[org_id] must be a UUID"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"List notification integrations.","tags":["Notification Integrations"]}},"/api/v3/notification/integrations/{id}":{"delete":{"operationId":"delete-notification-integrations-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Delete a notification integration.","tags":["Notification Integrations"]},"get":{"operationId":"get-notification-integrations-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"status":{"type":"string"},"team_id":{"type":"string"},"type":{"type":"string"},"updated_at":{"format":"date-time","type":"string"},"workspace_name":{"type":"string"}},"required":["created_at","status","team_id","type","updated_at","workspace_name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieve a single notification integration by its ID.","tags":["Notification Integrations"]}},"/api/v3/notification/integrations/{id}/set-status":{"post":{"operationId":"post-notification-integrations-by-id-set-status","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"status":{"type":"string"},"team_id":{"type":"string"},"type":{"type":"string"},"updated_at":{"format":"date-time","type":"string"},"workspace_name":{"type":"string"}},"required":["created_at","status","team_id","type","updated_at","workspace_name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Status must be \"active\" or \"disabled\""},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Set status.","tags":["Notification Integrations"]}},"/api/v3/notification/links":{"delete":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names and request shape are not yet stable. Do not depend on this endpoint in production clients.\n\nfilter[user_id] (\"me\" or the caller's own UUID), filter[connection_type], and filter[team_id] are all required — together they form the CIAM link key. Idempotent: returns 204 whether or not a matching link exists.","operationId":"delete-notification-links","parameters":[{"in":"query","name":"filter[connection_type]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[team_id]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[user_id]","required":true,"schema":{"type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Unsupported connection_type"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Removes a single external identity link.","tags":["Notification Links"]},"get":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nfilter[user_id] is required (\"me\" or the caller's own UUID). filter[connection_type] is optional (omitted lists all known connection types); filter[team_id] is optional and narrows results to a single external scope.","operationId":"get-notification-links","parameters":[{"in":"query","name":"filter[connection_type]","schema":{"type":"string"}},{"in":"query","name":"filter[team_id]","schema":{"type":"string"}},{"in":"query","name":"filter[user_id]","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"connection_type":{"type":"string"},"display_name":{"type":"string"},"external_id":{"type":"string"},"external_scope_id":{"type":"string"}},"required":["connection_type","display_name","external_id","external_scope_id"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"user":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["user"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Filter[user_id] must be \"me\" or a user UUID"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the authenticated caller's external identity links.","tags":["Notification Links"]}},"/api/v3/notification/preferences":{"get":{"description":"filter[scope] selects user or project scope; project scope also requires filter[project_id] and filter[org_id].","operationId":"get-notification-preferences","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[project_id]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[scope]","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Filter[scope] must be \"user\" or \"project\""},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Serves the V3 preference matrix.","tags":["Notification Preferences"]},"post":{"description":"It returns the refreshed matrix. Partial and non-idempotent, hence POST. Scope comes from data.attributes.scope; project scope also requires project + org references.","operationId":"post-notification-preferences","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"scope":{"type":"string"},"updates":{"items":{"properties":{"is_enabled":{"type":"boolean"},"preference_id":{"format":"uuid","type":"string"}},"required":["is_enabled","preference_id"],"type":"object"},"type":"array"}},"required":["scope","updates"],"type":"object"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","project"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Bulk-updates the changed subset of the matrix.","tags":["Notification Preferences"]}},"/api/v3/orb/categories":{"get":{"operationId":"get-orb-categories","parameters":[{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns all orb categories with pagination.","tags":["Orb Categories"]}},"/api/v3/orb/packages":{"get":{"operationId":"get-orb-packages","parameters":[{"in":"query","name":"filter[certified]","schema":{"type":"boolean"}},{"in":"query","name":"filter[name]","schema":{"type":"string"}},{"in":"query","name":"filter[namespace_id]","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[visibility]","schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a list of packages limited by the given filter.","tags":["Orb Packages"]},"post":{"operationId":"post-orb-packages","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"is_private":{"nullable":true,"type":"boolean"},"name":{"type":"string"}},"required":["name"],"type":"object"},"references":{"properties":{"namespace":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["namespace"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"home_url":{"nullable":true,"type":"string"},"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a new orb package in the given namespace.","tags":["Orb Packages"]}},"/api/v3/orb/packages/import":{"post":{"operationId":"post-orb-packages-import","requestBody":{"content":{"application/json":{"schema":{"properties":{"is_private":{"nullable":true,"type":"boolean"},"name":{"type":"string"},"namespace_id":{"format":"uuid","type":"string"}},"required":["name","namespace_id"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"home_url":{"nullable":true,"type":"string"},"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a new orb package via admin import.","tags":["Orb Packages"]}},"/api/v3/orb/packages/validate":{"post":{"description":"The data entity does not include an id because validate is not scoped to an existing entity.","operationId":"post-orb-packages-validate","requestBody":{"content":{"application/json":{"schema":{"properties":{"org_id":{"format":"uuid","nullable":true,"type":"string"},"yaml":{"type":"string"}},"required":["yaml"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"errors":{"items":{"type":"string"},"nullable":true,"type":"array"},"is_valid":{"type":"boolean"},"output_yaml":{"nullable":true,"type":"string"}},"required":["is_valid"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Checks whether the given orb YAML is valid.","tags":["Orb Packages"]}},"/api/v3/orb/packages/{id}":{"get":{"operationId":"get-orb-packages-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"home_url":{"nullable":true,"type":"string"},"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieves a single package by its ID.","tags":["Orb Packages"]}},"/api/v3/orb/packages/{id}/add-category":{"post":{"operationId":"post-orb-packages-by-id-add-category","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"category_id":{"format":"uuid","type":"string"}},"required":["category_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"home_url":{"nullable":true,"type":"string"},"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Adds a category to the package.","tags":["Orb Packages"]}},"/api/v3/orb/packages/{id}/remove-category":{"post":{"operationId":"post-orb-packages-by-id-remove-category","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"category_id":{"format":"uuid","type":"string"}},"required":["category_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"home_url":{"nullable":true,"type":"string"},"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Removes a category from a package.","tags":["Orb Packages"]}},"/api/v3/orb/packages/{id}/set-listed":{"post":{"operationId":"post-orb-packages-by-id-set-listed","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"is_listed":{"nullable":true,"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"home_url":{"nullable":true,"type":"string"},"is_listed":{"type":"boolean"},"is_private":{"type":"boolean"},"last_30_days_build_count":{"type":"integer"},"last_30_days_org_count":{"type":"integer"},"last_30_days_project_count":{"type":"integer"},"name":{"type":"string"}},"required":["is_listed","is_private","last_30_days_build_count","last_30_days_org_count","last_30_days_project_count","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"namespace":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"orb_categories":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"},"orb_versions":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"nullable":true,"type":"array"}},"required":["namespace"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Marks a package as listed or unlisted.","tags":["Orb Packages"]}},"/api/v3/orb/versions":{"get":{"operationId":"get-orb-versions","parameters":[{"in":"query","name":"filter[channel]","schema":{"type":"string"}},{"in":"query","name":"filter[orb_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[ref]","schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"orb_package":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["orb_package"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns orb versions matching the given filters.","tags":["Orb Versions"]},"post":{"operationId":"post-orb-versions","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"orb_id":{"format":"uuid","type":"string"},"version":{"type":"string"},"yaml":{"type":"string"}},"required":["orb_id","version","yaml"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"orb_package":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["orb_package"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a new orb version with the given YAML source.","tags":["Orb Versions"]}},"/api/v3/orb/versions/import":{"post":{"operationId":"post-orb-versions-import","requestBody":{"content":{"application/json":{"schema":{"properties":{"orb_id":{"format":"uuid","type":"string"},"orb_yaml":{"type":"string"},"version":{"type":"string"}},"required":["orb_id","orb_yaml","version"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"orb_package":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["orb_package"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a new orb version via admin import.","tags":["Orb Versions"]}},"/api/v3/orb/versions/{id}":{"get":{"operationId":"get-orb-versions-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"include","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"orb_package":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["orb_package"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieves a single orb version by its ID.","tags":["Orb Versions"]}},"/api/v3/orb/versions/{id}/promote":{"post":{"operationId":"post-orb-versions-by-id-promote","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"segment":{"nullable":true,"type":"string"},"semantic_version":{"nullable":true,"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"orb_package":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["orb_package"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Either 'segment' or 'semantic_version' must be provided."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Promote a orb version.","tags":["Orb Versions"]}},"/api/v3/orb/versions/{id}/source":{"get":{"operationId":"get-orb-versions-by-id-source","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns the raw YAML source of an orb version as text/plain.","tags":["Orb Versions"]}},"/api/v3/orgs":{"get":{"description":"filter[slug] is optional. With it, a single org is resolved by its slug; a slug matching no org is an empty collection rather than a 404. Without it, the orgs the calling user belongs to are listed.","operationId":"get-orgs","parameters":[{"in":"query","name":"filter[slug]","schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"avatar":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"name":{"type":"string"},"vcs":{"nullable":true,"properties":{"provider":{"type":"string"}},"required":["provider"],"type":"object"}},"required":["avatar","name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Resolves orgs matching the given filters.","tags":["Orgs"]}},"/api/v3/orgs/{id}":{"get":{"operationId":"get-orgs-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"avatar":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"name":{"type":"string"},"vcs":{"nullable":true,"properties":{"provider":{"type":"string"}},"required":["provider"],"type":"object"}},"required":["avatar","name"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Fetches an org by its UUID.","tags":["Orgs"]}},"/api/v3/orgs/{id}/settings":{"get":{"description":"Settings are a singleton sub-resource of the org, so the data entity does not include an id - the org's id is in the path.","operationId":"get-orgs-by-id-settings","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"enable_ai_agents":{"type":"boolean"},"enable_ai_error_summarization":{"type":"boolean"},"enable_certified_public_orbs":{"type":"boolean"},"enable_chunk_ip_ranges":{"type":"boolean"},"enable_image_brownouts":{"type":"boolean"},"enable_marketing_tracking":{"type":"boolean"},"enable_minor_ai_features":{"type":"boolean"},"enable_preferences_tracking":{"type":"boolean"},"enable_private_orbs":{"type":"boolean"},"enable_resource_class_brownouts":{"type":"boolean"},"enable_statistics_tracking":{"type":"boolean"},"enable_uncertified_public_orbs":{"type":"boolean"},"enable_unversioned_config":{"type":"boolean"},"is_bitbucket_workspace_member_org_member":{"type":"boolean"},"is_context_group_restriction_required":{"type":"boolean"},"is_privacy_optout_enforced":{"type":"boolean"},"is_runner_terms_of_service_accepted":{"type":"boolean"},"is_running_disabled":{"type":"boolean"},"is_user_checkout_keys_disabled":{"type":"boolean"}},"required":["enable_ai_agents","enable_ai_error_summarization","enable_certified_public_orbs","enable_chunk_ip_ranges","enable_image_brownouts","enable_marketing_tracking","enable_minor_ai_features","enable_preferences_tracking","enable_private_orbs","enable_resource_class_brownouts","enable_statistics_tracking","enable_uncertified_public_orbs","enable_unversioned_config","is_bitbucket_workspace_member_org_member","is_context_group_restriction_required","is_privacy_optout_enforced","is_runner_terms_of_service_accepted","is_running_disabled","is_user_checkout_keys_disabled"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns settings for an org.","tags":["Orgs"]}},"/api/v3/orgs/{id}/update-settings":{"post":{"description":"Settings are a singleton sub-resource of the org, so the data entity does not include an id - the org's id is in the path.","operationId":"post-orgs-by-id-update-settings","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"enable_ai_agents":{"nullable":true,"type":"boolean"},"enable_ai_error_summarization":{"nullable":true,"type":"boolean"},"enable_certified_public_orbs":{"nullable":true,"type":"boolean"},"enable_chunk_ip_ranges":{"nullable":true,"type":"boolean"},"enable_image_brownouts":{"nullable":true,"type":"boolean"},"enable_marketing_tracking":{"nullable":true,"type":"boolean"},"enable_minor_ai_features":{"nullable":true,"type":"boolean"},"enable_preferences_tracking":{"nullable":true,"type":"boolean"},"enable_private_orbs":{"nullable":true,"type":"boolean"},"enable_resource_class_brownouts":{"nullable":true,"type":"boolean"},"enable_statistics_tracking":{"nullable":true,"type":"boolean"},"enable_uncertified_public_orbs":{"nullable":true,"type":"boolean"},"enable_unversioned_config":{"nullable":true,"type":"boolean"},"is_bitbucket_workspace_member_org_member":{"nullable":true,"type":"boolean"},"is_context_group_restriction_required":{"nullable":true,"type":"boolean"},"is_privacy_optout_enforced":{"nullable":true,"type":"boolean"},"is_runner_terms_of_service_accepted":{"nullable":true,"type":"boolean"},"is_running_disabled":{"nullable":true,"type":"boolean"},"is_user_checkout_keys_disabled":{"nullable":true,"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"enable_ai_agents":{"type":"boolean"},"enable_ai_error_summarization":{"type":"boolean"},"enable_certified_public_orbs":{"type":"boolean"},"enable_chunk_ip_ranges":{"type":"boolean"},"enable_image_brownouts":{"type":"boolean"},"enable_marketing_tracking":{"type":"boolean"},"enable_minor_ai_features":{"type":"boolean"},"enable_preferences_tracking":{"type":"boolean"},"enable_private_orbs":{"type":"boolean"},"enable_resource_class_brownouts":{"type":"boolean"},"enable_statistics_tracking":{"type":"boolean"},"enable_uncertified_public_orbs":{"type":"boolean"},"enable_unversioned_config":{"type":"boolean"},"is_bitbucket_workspace_member_org_member":{"type":"boolean"},"is_context_group_restriction_required":{"type":"boolean"},"is_privacy_optout_enforced":{"type":"boolean"},"is_runner_terms_of_service_accepted":{"type":"boolean"},"is_running_disabled":{"type":"boolean"},"is_user_checkout_keys_disabled":{"type":"boolean"}},"required":["enable_ai_agents","enable_ai_error_summarization","enable_certified_public_orbs","enable_chunk_ip_ranges","enable_image_brownouts","enable_marketing_tracking","enable_minor_ai_features","enable_preferences_tracking","enable_private_orbs","enable_resource_class_brownouts","enable_statistics_tracking","enable_uncertified_public_orbs","enable_unversioned_config","is_bitbucket_workspace_member_org_member","is_context_group_restriction_required","is_privacy_optout_enforced","is_runner_terms_of_service_accepted","is_running_disabled","is_user_checkout_keys_disabled"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Modifies settings for an org.","tags":["Orgs"]}},"/api/v3/pipelines":{"get":{"description":"filter[project_id] is required — there is no unscoped/global listing. A pipeline that can be fetched via Get must also appear in this listing.","operationId":"get-pipelines","parameters":[{"in":"query","name":"filter[project_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists a project's pipelines, including its synthetic OAuth pipeline.","tags":["Pipelines"]},"post":{"description":"Returns the full created entity (shape-identical to Get).","operationId":"post-pipelines","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"type":"string"},"repo_id":{"type":"string"}},"required":["provider","repo_full_name","repo_id"],"type":"object"}},"required":["vcs"],"type":"object"},"config":{"properties":{"file_path":{"type":"string"},"hosted":{"properties":{"provider":{"type":"string"}},"required":["provider"],"type":"object"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"type":"string"},"repo_id":{"type":"string"}},"required":["provider","repo_full_name","repo_id"],"type":"object"}},"required":["file_path","hosted","type","vcs"],"type":"object"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"}},"required":["checkout","config","name"],"type":"object"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["type","vcs"],"type":"object"},"config":{"properties":{"file_path":{"type":"string"},"hosted":{"properties":{"provider":{"type":"string"}},"required":["provider"],"type":"object"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["file_path","hosted","type","vcs"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"}},"required":["checkout","config","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a pipeline (config source) under the project named by project_id.","tags":["Pipelines"]}},"/api/v3/pipelines/{id}":{"delete":{"description":"The optional filter[project_id] query parameter scopes the lookup; it is required to identify synthetic OAuth pipelines, which have no stored row and are derived from the project.","operationId":"delete-pipelines-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes a pipeline by ID.","tags":["Pipelines"]},"get":{"description":"The optional filter[project_id] query parameter scopes the lookup; it is required to resolve synthetic OAuth pipelines, which have no stored row and are derived from the project.","operationId":"get-pipelines-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["type","vcs"],"type":"object"},"config":{"properties":{"file_path":{"type":"string"},"hosted":{"properties":{"provider":{"type":"string"}},"required":["provider"],"type":"object"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["file_path","hosted","type","vcs"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"}},"required":["checkout","config","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Gets a pipeline by ID.","tags":["Pipelines"]}},"/api/v3/pipelines/{id}/update":{"post":{"description":"Only the fields present in the request body (name, description, config.file_path) are changed. The optional filter[project_id] query parameter scopes the lookup; synthetic OAuth pipelines have no stored row and cannot be updated.","operationId":"post-pipelines-by-id-update","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"config":{"properties":{"file_path":{"type":"string"}},"required":["file_path"],"type":"object"},"description":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"}},"required":["config"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["type","vcs"],"type":"object"},"config":{"properties":{"file_path":{"type":"string"},"hosted":{"properties":{"provider":{"type":"string"}},"required":["provider"],"type":"object"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["file_path","hosted","type","vcs"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"}},"required":["checkout","config","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Partially updates a pipeline by ID.","tags":["Pipelines"]}},"/api/v3/projects":{"get":{"description":"Exactly one of filter[slug] (resolving a single project) or filter[org_id] (listing an org's projects) must be supplied. Neither an unfiltered list nor both filters together is supported, so either is a 400.\n\nfilter[name] is optional and applies only to the filter[org_id] form, where it narrows the org's projects by a case-insensitive name search. Combining it with filter[slug] is a 400.\n\nAn org that does not exist, or that the caller cannot see, is a 404. A slug that matches no project is an empty collection.\n\nNotes on pagination:","operationId":"get-projects","parameters":[{"in":"query","name":"filter[name]","schema":{"type":"string"}},{"in":"query","name":"filter[org_id]","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[slug]","schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Resolves projects matching the given filters.","tags":["Projects"]}},"/api/v3/projects/{id}":{"get":{"operationId":"get-projects-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Fetches a project by its UUID.","tags":["Projects"]}},"/api/v3/projects/{id}/environment-variables":{"get":{"operationId":"get-projects-by-id-environment-variables","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns environment variables for a project.","tags":["Projects"]},"post":{"description":"An environment variable is keyed by name within its project, so the data entity does not include an id.","operationId":"post-projects-by-id-environment-variables","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Sets a project environment variable.","tags":["Projects"]}},"/api/v3/projects/{id}/environment-variables/{name}":{"delete":{"operationId":"delete-projects-by-id-environment-variables-by-name","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The name.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Removes a project environment variable.","tags":["Projects"]}},"/api/v3/projects/{id}/rollback":{"post":{"description":"The component and the environment identify what is running the version being rolled back; current_version must match the version deployed there, so a caller working from stale state cannot roll back a version that has since been superseded.\n\nHow the rollback runs depends on the project's deploy settings: a project with a rollback pipeline configured gets a pipeline run, and one without gets a restore-version command sent to the release agent deployed in that environment. data.id is that run or that command and rollback_type says which, since the two are polled in different places.\n\nThe response is 200 rather than 202 because data.id is a handle to work in progress, not a resource newly created at a V3 address there would be a Location to point at.\n\nA component or environment the caller may not deploy to is reported as not found, as is a component and environment that do not describe one deployed thing in this project, so the response does not reveal whether the ids exist.\n\nEXPERIMENTAL — this endpoint is experimental and may change without notice. Field names and response shapes are not yet stable, and the deploy API as a whole is still under review. Do not depend on it in production clients.","operationId":"post-projects-by-id-rollback","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"checkout_ref":{"type":"string"},"component_id":{"format":"uuid","type":"string"},"config_ref":{"type":"string"},"current_version":{"type":"string"},"environment_id":{"format":"uuid","type":"string"},"namespace":{"type":"string"},"parameters":{"nullable":true,"type":"string"},"reason":{"type":"string"},"target_version":{"type":"string"}},"required":["checkout_ref","component_id","config_ref","current_version","environment_id","namespace","reason","target_version"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"rollback_type":{"type":"string"}},"required":["rollback_type"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"deploy_component":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"deploy_environment":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["deploy_component","deploy_environment","project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"The current version is not the version deployed there."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"A command for that component instance is already being handled."},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Rolls a deployed component back to an earlier version.","tags":["Projects"]}},"/api/v3/projects/{id}/settings":{"get":{"description":"Settings are a singleton sub-resource of the project, so the data entity does not include an id - the project's id is in the path.","operationId":"get-projects-by-id-settings","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"can_pass_secrets_to_fork_pr_jobs":{"type":"boolean"},"can_set_github_status":{"type":"boolean"},"enable_ai_error_summarization":{"type":"boolean"},"enable_auto_cancel_redundant_workflows":{"type":"boolean"},"enable_building_fork_prs":{"type":"boolean"},"enable_dynamic_config":{"type":"boolean"},"enable_unversioned_config":{"type":"boolean"},"is_admin_required_for_writing_settings":{"type":"boolean"},"is_build_prs_only":{"type":"boolean"},"is_oss":{"type":"boolean"},"is_running_disabled":{"type":"boolean"},"is_ssh_disabled":{"type":"boolean"},"pr_only_branch_overrides":{"items":{"type":"string"},"type":"array"}},"required":["can_pass_secrets_to_fork_pr_jobs","can_set_github_status","enable_ai_error_summarization","enable_auto_cancel_redundant_workflows","enable_building_fork_prs","enable_dynamic_config","enable_unversioned_config","is_admin_required_for_writing_settings","is_build_prs_only","is_oss","is_running_disabled","is_ssh_disabled","pr_only_branch_overrides"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns settings for a project.","tags":["Projects"]}},"/api/v3/projects/{id}/update-settings":{"post":{"description":"Settings are a singleton sub-resource of the project, so the data entity does not include an id - the project's id is in the path.","operationId":"post-projects-by-id-update-settings","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"can_pass_secrets_to_fork_pr_jobs":{"nullable":true,"type":"boolean"},"can_set_github_status":{"nullable":true,"type":"boolean"},"enable_ai_error_summarization":{"nullable":true,"type":"boolean"},"enable_auto_cancel_redundant_workflows":{"nullable":true,"type":"boolean"},"enable_building_fork_prs":{"nullable":true,"type":"boolean"},"enable_dynamic_config":{"nullable":true,"type":"boolean"},"enable_unversioned_config":{"nullable":true,"type":"boolean"},"is_admin_required_for_writing_settings":{"nullable":true,"type":"boolean"},"is_build_prs_only":{"nullable":true,"type":"boolean"},"is_oss":{"nullable":true,"type":"boolean"},"is_running_disabled":{"nullable":true,"type":"boolean"},"is_ssh_disabled":{"nullable":true,"type":"boolean"},"pr_only_branch_overrides":{"items":{"type":"string"},"nullable":true,"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"can_pass_secrets_to_fork_pr_jobs":{"type":"boolean"},"can_set_github_status":{"type":"boolean"},"enable_ai_error_summarization":{"type":"boolean"},"enable_auto_cancel_redundant_workflows":{"type":"boolean"},"enable_building_fork_prs":{"type":"boolean"},"enable_dynamic_config":{"type":"boolean"},"enable_unversioned_config":{"type":"boolean"},"is_admin_required_for_writing_settings":{"type":"boolean"},"is_build_prs_only":{"type":"boolean"},"is_oss":{"type":"boolean"},"is_running_disabled":{"type":"boolean"},"is_ssh_disabled":{"type":"boolean"},"pr_only_branch_overrides":{"items":{"type":"string"},"type":"array"}},"required":["can_pass_secrets_to_fork_pr_jobs","can_set_github_status","enable_ai_error_summarization","enable_auto_cancel_redundant_workflows","enable_building_fork_prs","enable_dynamic_config","enable_unversioned_config","is_admin_required_for_writing_settings","is_build_prs_only","is_oss","is_running_disabled","is_ssh_disabled","pr_only_branch_overrides"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Modifies settings for a project.","tags":["Projects"]}},"/api/v3/provider/branches":{"get":{"description":"Requires filter[org_id] (the organization), filter[provider] (the integration provider), and filter[repo_id] (the external repository id). Supports cursor pagination via page[limit] and page[cursor]. The cursor encodes the limit from the originating request; sending page[limit] alongside page[cursor] is rejected with 400.","operationId":"get-provider-branches","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[provider]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[repo_id]","required":true,"schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists branches for a repository.","tags":["Provider Branches"]}},"/api/v3/provider/connections":{"get":{"description":"Returns every connection that authorizes CircleCI to act for the organization — a GitHub App installation, a GitHub Server installation, an Origin installation — with the provider's live view of each. Custom webhook connections are not included. Requires filter[org_id] and view-org on that organization.\n\nEach item always carries its stored fields. The provider is also asked for the installation as it currently stands and for the calling user's identity there; either failing degrades that item rather than the response, populating connection_error or authorization_error and omitting the fields it could not fill. An organization with no connections is an empty list, not a 404.\n\nA connection appears only once the customer has finished authorizing it at the provider. A setup that has been started and not completed is not listed, and is indistinguishable here from one that was never started.","operationId":"get-provider-connections","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists an organization's provider connections.","tags":["Provider Connections"]}},"/api/v3/provider/connections/setup":{"post":{"description":"Returns where to send the user to finish the connection at the provider. next_step \"redirect\" carries the url that connects an app CircleCI has already registered with the provider; \"register\" carries a manifest and state_token for the user to register one first. Nothing is connected when this returns. Requires filter[org_id] and manage-org on that organization. Each call mints and stores a fresh state token, valid for one hour, so this endpoint is deliberately not idempotent.","operationId":"post-provider-connections-setup","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"return_url":{"nullable":true,"type":"string"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"url":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"}},"required":["type","vcs"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"manifest":{"nullable":true,"type":"string"},"next_step":{"type":"string"},"state_token":{"nullable":true,"type":"string"},"url":{"nullable":true,"type":"string"}},"required":["next_step"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Starts connecting a provider to an organization.","tags":["Provider Connections"]}},"/api/v3/provider/repositories":{"get":{"description":"Returns the repositories accessible for the specified organization's installation. Requires filter[org_id] and filter[provider], which must be one of github_app, github_server or origin. Supports cursor pagination via page[limit] and page[cursor]. The cursor encodes the limit from the originating request; sending page[limit] alongside page[cursor] with a different value is rejected with 400.\n\nWhat \"accessible\" means depends on the provider. For github_app and github_server the results are what the calling user's own credential can see, so two members of one organization may get different lists. Origin authorizes by installation rather than by user, so every member with view-org gets the whole installation.\n\nOrigin reports neither repository visibility nor a web URL, so origin items omit html_url and report is_private as true — a conservative default rather than a value read from the provider.","operationId":"get-provider-repositories","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[provider]","required":true,"schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists repositories for an installation.","tags":["Provider Repositories"]}},"/api/v3/runner/agents":{"get":{"operationId":"get-runner-agents","parameters":[{"in":"query","name":"filter[resource_class]","required":true,"schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Resource_class is not valid."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Unable to determine agent status."}},"summary":"Lists the runner agents for a resource class.","tags":["Runner Agents"]}},"/api/v3/runner/resource-classes":{"get":{"operationId":"get-runner-resource-classes","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Lists the runner resource classes for an organization.","tags":["Runner Resource Classes"]},"post":{"operationId":"post-runner-resource-classes","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"description":{"type":"string"},"resource_class":{"type":"string"}},"required":["description","resource_class"],"type":"object"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"References.org.id is required."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Resource class already exists."},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Creates a runner resource class in the organization.","tags":["Runner Resource Classes"]}},"/api/v3/runner/resource-classes/{id}":{"delete":{"description":"With ?force=true it first removes any tokens; without it, a resource class that still has tokens is rejected.","operationId":"delete-runner-resource-classes-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"force","required":true,"schema":{"type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Force must be a boolean."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Conflict"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Deletes a runner resource class.","tags":["Runner Resource Classes"]},"get":{"operationId":"get-runner-resource-classes-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Returns a single runner resource class by id.","tags":["Runner Resource Classes"]}},"/api/v3/runner/resource-classes/{id}/update":{"post":{"operationId":"post-runner-resource-classes-by-id-update","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"type":"string"}},"required":["description"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Performs a partial update of the mutable fields.","tags":["Runner Resource Classes"]}},"/api/v3/runner/tokens":{"get":{"operationId":"get-runner-tokens","parameters":[{"in":"query","name":"filter[resource_class]","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Resource_class is not valid."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Lists the tokens for a runner resource class.","tags":["Runner Tokens"]},"post":{"description":"The raw token value is returned once in this response and never again.","operationId":"post-runner-tokens","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"nickname":{"type":"string"}},"required":["nickname"],"type":"object"},"references":{"properties":{"resource_class":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["resource_class"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"nickname":{"type":"string"},"token":{"type":"string"}},"required":["created_at","nickname","token"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"resource_class":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["resource_class"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"References.resource_class.id is required."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Creates a runner resource-class token.","tags":["Runner Tokens"]}},"/api/v3/runner/tokens/{id}":{"delete":{"operationId":"delete-runner-tokens-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Deletes a runner resource-class token by id.","tags":["Runner Tokens"]},"get":{"operationId":"get-runner-tokens-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"nickname":{"type":"string"}},"required":["created_at","nickname"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"resource_class":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["resource_class"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Permission check unavailable."}},"summary":"Returns a single runner resource-class token by id.","tags":["Runner Tokens"]}},"/api/v3/runs":{"get":{"description":"The returned list can be for a single project, or the caller's own recent runs when filter[user_id]=me.","operationId":"get-runs","parameters":[{"in":"query","name":"filter[project_id]","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[user_id]","schema":{"type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"current_outcome":{"nullable":true,"type":"string"},"errors":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"type":"object"},"nullable":true,"type":"array"},"number":{"type":"integer"},"phase":{"type":"string"},"warnings":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"type":"object"},"nullable":true,"type":"array"},"workflows":{"nullable":true,"properties":{"count_by_outcome":{"additionalProperties":{"type":"integer"},"type":"object"},"count_by_phase":{"additionalProperties":{"type":"integer"},"type":"object"},"is_truncated":{"type":"boolean"},"items":{"items":{"properties":{"auto_rerun":{"nullable":true,"properties":{"max_reruns":{"type":"integer"},"number":{"type":"integer"}},"required":["max_reruns","number"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"current_outcome":{"nullable":true,"type":"string"},"ended_at":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"jobs":{"nullable":true,"properties":{"count_by_outcome":{"additionalProperties":{"type":"integer"},"type":"object"},"count_by_phase":{"additionalProperties":{"type":"integer"},"type":"object"},"is_truncated":{"type":"boolean"},"items":{"items":{"properties":{"ended_at":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"nullable":true,"type":"string"},"number":{"nullable":true,"type":"integer"},"outcome":{"nullable":true,"type":"string"},"phase":{"nullable":true,"type":"string"},"started_at":{"format":"date-time","nullable":true,"type":"string"},"type":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"},"type":"array"},"total_count":{"type":"integer"}},"required":["count_by_outcome","count_by_phase","is_truncated","items","total_count"],"type":"object"},"name":{"nullable":true,"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"},"type":"array"},"total_count":{"type":"integer"}},"required":["count_by_outcome","count_by_phase","is_truncated","items","total_count"],"type":"object"}},"required":["created_at","number","phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"event":{"properties":{"attributes":{"properties":{"action":{"nullable":true,"type":"string"},"type":{"nullable":true,"type":"string"},"vcs":{"nullable":true,"properties":{"branch":{"nullable":true,"type":"string"},"commit":{"nullable":true,"properties":{"author":{"nullable":true,"properties":{"avatar_url":{"nullable":true,"type":"string"},"login":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"}},"type":"object"},"body":{"nullable":true,"type":"string"},"subject":{"nullable":true,"type":"string"},"url":{"nullable":true,"type":"string"}},"type":"object"},"origin_repository_url":{"nullable":true,"type":"string"},"provider_name":{"nullable":true,"type":"string"},"revision":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"},"target_repository_url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"}},"required":["attributes"],"type":"object"},"pipeline":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"trigger":{"properties":{"attributes":{"properties":{"event_source":{"properties":{"type":{"nullable":true,"type":"string"}},"type":"object"},"name":{"nullable":true,"type":"string"}},"required":["event_source"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"user":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["event","pipeline","project","trigger"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a paginated list of runs.","tags":["Runs"]},"post":{"description":"run. The optional filter[project_id] scopes the pipeline to a project directly (mirroring Get/Delete); DB-backed pipelines omit it and derive the project from pipeline_id.","operationId":"post-runs","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"branch":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"}},"type":"object"},"config":{"properties":{"branch":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"}},"type":"object"},"parameters":{"nullable":true,"type":"string"}},"required":["checkout","config"],"type":"object"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline","project","user"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Fires a run for the pipeline named by pipeline_id, returning the created","tags":["Runs"]}},"/api/v3/runs/facet-values":{"get":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nValues are ordered by most-recently-seen (the most recent pipeline that carried the value). Supported facet keys are actor.id, pipeline.status, pipeline.phase, pipeline.current_outcome, and indexed pipeline values (for example pipeline.git.branch).","operationId":"get-runs-facet-values","parameters":[{"in":"query","name":"filter[facet]","required":true,"schema":{"type":"string"}},{"in":"query","name":"filter[project_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"count":{"type":"integer"},"value":{"type":"string"}},"required":["count","value"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a paginated list of distinct values for a single run facet within one project.","tags":["Runs"]}},"/api/v3/runs/facet-values/search":{"post":{"description":"EXPERIMENTAL — This endpoint is experimental and may change without notice. Field names, request and response shapes, and pagination semantics are not yet stable. Do not depend on this endpoint in production clients.\n\nValues are ordered by most-recently-seen (the most recent pipeline that carried the value). Supported facet keys are actor.id, pipeline.status, pipeline.phase, pipeline.current_outcome, and indexed pipeline values (for example pipeline.git.branch).\n\nThe optional filter expression pre-filters which pipelines contribute values (same expression grammar as api/v3/runs/search). The optional matches string is a case-insensitive substring match against the facet values themselves. When scope.from or scope.to are omitted, the same default two-week window used by other v3 search endpoints is applied.","operationId":"post-runs-facet-values-search","requestBody":{"content":{"application/json":{"schema":{"properties":{"facet":{"type":"string"},"filter":{"nullable":true,"type":"string"},"matches":{"nullable":true,"type":"string"},"page":{"properties":{"cursor":{"type":"string"},"limit":{"type":"integer"}},"required":["cursor","limit"],"type":"object"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["facet","page","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"count":{"type":"integer"},"value":{"type":"string"}},"required":["count","value"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a paginated list of distinct values for a single run facet across one or more projects.","tags":["Runs"]}},"/api/v3/runs/search":{"post":{"description":"The optional include field requests nested entities on each run. Allowed values are workflows (truncated nested workflows) and workflows.jobs (workflows plus a truncated nested jobs list per workflow). Unknown values are rejected with 400. When include is omitted or empty, attributes.workflows is omitted from each item. Nested workflow lists are capped at 5 items and nested job lists at 20; is_truncated is true when more exist, and total_count / count_by_phase / count_by_outcome cover the full uncapped set.","operationId":"post-runs-search","requestBody":{"content":{"application/json":{"schema":{"properties":{"filter":{"type":"string"},"include":{"items":{"type":"string"},"nullable":true,"type":"array"},"order_by":{"type":"string"},"page":{"properties":{"cursor":{"type":"string"},"limit":{"type":"integer"}},"required":["cursor","limit"],"type":"object"},"scope":{"properties":{"from":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"to":{"format":"date-time","type":"string"}},"required":["from","project_ids","to"],"type":"object"}},"required":["filter","order_by","page","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"current_outcome":{"nullable":true,"type":"string"},"errors":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"type":"object"},"nullable":true,"type":"array"},"number":{"type":"integer"},"phase":{"type":"string"},"warnings":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"type":"object"},"nullable":true,"type":"array"},"workflows":{"nullable":true,"properties":{"count_by_outcome":{"additionalProperties":{"type":"integer"},"type":"object"},"count_by_phase":{"additionalProperties":{"type":"integer"},"type":"object"},"is_truncated":{"type":"boolean"},"items":{"items":{"properties":{"auto_rerun":{"nullable":true,"properties":{"max_reruns":{"type":"integer"},"number":{"type":"integer"}},"required":["max_reruns","number"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"current_outcome":{"nullable":true,"type":"string"},"ended_at":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"jobs":{"nullable":true,"properties":{"count_by_outcome":{"additionalProperties":{"type":"integer"},"type":"object"},"count_by_phase":{"additionalProperties":{"type":"integer"},"type":"object"},"is_truncated":{"type":"boolean"},"items":{"items":{"properties":{"ended_at":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"nullable":true,"type":"string"},"number":{"nullable":true,"type":"integer"},"outcome":{"nullable":true,"type":"string"},"phase":{"nullable":true,"type":"string"},"started_at":{"format":"date-time","nullable":true,"type":"string"},"type":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"},"type":"array"},"total_count":{"type":"integer"}},"required":["count_by_outcome","count_by_phase","is_truncated","items","total_count"],"type":"object"},"name":{"nullable":true,"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"},"type":"array"},"total_count":{"type":"integer"}},"required":["count_by_outcome","count_by_phase","is_truncated","items","total_count"],"type":"object"}},"required":["created_at","number","phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"event":{"properties":{"attributes":{"properties":{"action":{"nullable":true,"type":"string"},"type":{"nullable":true,"type":"string"},"vcs":{"nullable":true,"properties":{"branch":{"nullable":true,"type":"string"},"commit":{"nullable":true,"properties":{"author":{"nullable":true,"properties":{"avatar_url":{"nullable":true,"type":"string"},"login":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"}},"type":"object"},"body":{"nullable":true,"type":"string"},"subject":{"nullable":true,"type":"string"},"url":{"nullable":true,"type":"string"}},"type":"object"},"origin_repository_url":{"nullable":true,"type":"string"},"provider_name":{"nullable":true,"type":"string"},"revision":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"},"target_repository_url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"}},"required":["attributes"],"type":"object"},"pipeline":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"trigger":{"properties":{"attributes":{"properties":{"event_source":{"properties":{"type":{"nullable":true,"type":"string"}},"type":"object"},"name":{"nullable":true,"type":"string"}},"required":["event_source"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"user":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["event","pipeline","project","trigger"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Search a run.","tags":["Runs"]}},"/api/v3/runs/{id}":{"get":{"description":"A run uses current_outcome (not outcome) because reruns can change the outcome at any time, it is never truly final.\n\nphase: \"queued\", \"started\", \"ended\" current_outcome: \"succeeded\", \"failed\", \"canceled\", \"errored\", \"not_run\", \"unauthorized\"","operationId":"get-runs-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"current_outcome":{"nullable":true,"type":"string"},"errors":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"type":"object"},"nullable":true,"type":"array"},"number":{"type":"integer"},"phase":{"type":"string"},"warnings":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type"],"type":"object"},"nullable":true,"type":"array"}},"required":["created_at","number","phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"event":{"properties":{"attributes":{"properties":{"action":{"nullable":true,"type":"string"},"type":{"nullable":true,"type":"string"},"vcs":{"nullable":true,"properties":{"branch":{"nullable":true,"type":"string"},"commit":{"nullable":true,"properties":{"author":{"nullable":true,"properties":{"avatar_url":{"nullable":true,"type":"string"},"login":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"}},"type":"object"},"body":{"nullable":true,"type":"string"},"subject":{"nullable":true,"type":"string"},"url":{"nullable":true,"type":"string"}},"type":"object"},"origin_repository_url":{"nullable":true,"type":"string"},"provider_name":{"nullable":true,"type":"string"},"revision":{"nullable":true,"type":"string"},"tag":{"nullable":true,"type":"string"},"target_repository_url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"}},"required":["attributes"],"type":"object"},"pipeline":{"properties":{"attributes":{"properties":{"name":{"nullable":true,"type":"string"}},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"trigger":{"properties":{"attributes":{"properties":{"event_source":{"properties":{"type":{"nullable":true,"type":"string"}},"type":"object"},"name":{"nullable":true,"type":"string"}},"required":["event_source"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"user":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["event","pipeline","project","trigger"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieve a single run by its ID.","tags":["Runs"]}},"/api/v3/sidecar/commands/{id}":{"get":{"operationId":"get-sidecar-commands-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"created_at":{"format":"date-time","type":"string"},"ended_at":{"format":"date-time","nullable":true,"type":"string"},"exit_code":{"nullable":true,"type":"integer"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"pid":{"nullable":true,"type":"integer"},"started_at":{"format":"date-time","nullable":true,"type":"string"}},"required":["created_at","phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"sidecar_instance":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["sidecar_instance"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"504":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Sidecar did not respond in time"}},"summary":"Retrieve a single sidecar command by its ID.","tags":["Sidecar Commands"]}},"/api/v3/sidecar/commands/{id}/output":{"get":{"description":"Output arrives as stdout and stderr events whose data is the base64 of the raw bytes, so carriage returns, ANSI escapes and invalid UTF-8 reach the client exactly as the command wrote them. A start event opens the stream and : comments keep it warm while a command is silent.\n\nEvery event carries an opaque id. Send the last one back in the Last-Event-ID header to resume precisely where a dropped connection stopped; the stdout_offset and stderr_offset query parameters do the same for callers that cannot set headers. Last-Event-ID wins if both are supplied.\n\nThe stream ends with exactly one exit or error event, or with nothing at all. Nothing at all means the connection was interrupted and the client should resume — it is the only way to distinguish a finished command from a truncated stream.","operationId":"get-sidecar-commands-by-id-output","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"stderr_offset","schema":{"type":"string"}},{"in":"query","name":"stdout_offset","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Invalid stdout_offset"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"410":{"$ref":"#/components/responses/Gone"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Could not reach the sidecar"},"504":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"The sidecar stopped responding"}},"summary":"Streams a command's output as Server-Sent Events.","tags":["Sidecar Commands"]}},"/api/v3/sidecar/instances":{"get":{"operationId":"get-sidecar-instances","parameters":[{"in":"query","name":"all","required":true,"schema":{"type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"List sidecar instances.","tags":["Sidecar Instances"]},"post":{"operationId":"post-sidecar-instances","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"image":{"type":"string"},"name":{"type":"string"}},"required":["image","name"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org","user"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Name is reserved"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Create a new sidecar instance.","tags":["Sidecar Instances"]}},"/api/v3/sidecar/instances/prune":{"post":{"description":"Instances created before scope.to are deleted; scope.to defaults to now minus 1h when scope is omitted.","operationId":"post-sidecar-instances-prune","requestBody":{"content":{"application/json":{"schema":{"properties":{"org_id":{"format":"uuid","type":"string"},"scope":{"nullable":true,"properties":{"to":{"format":"date-time","type":"string"}},"required":["to"],"type":"object"}},"required":["org_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"deleted_count":{"type":"integer"}},"required":["deleted_count"],"type":"object"}},"required":["attributes"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes caller-owned sidecar instances in orgID.","tags":["Sidecar Instances"]}},"/api/v3/sidecar/instances/{id}":{"delete":{"operationId":"delete-sidecar-instances-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Delete a sidecar instance.","tags":["Sidecar Instances"]},"get":{"operationId":"get-sidecar-instances-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"domain":{"type":"string"},"name":{"type":"string"},"phase":{"nullable":true,"type":"string"}},"required":["domain","name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieve a single sidecar instance by its ID.","tags":["Sidecar Instances"]}},"/api/v3/sidecar/instances/{id}/exec":{"post":{"description":"Clients poll the command for its outcome and stream its output separately.","operationId":"post-sidecar-instances-by-id-exec","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"args":{"items":{"type":"string"},"type":"array"},"command":{"type":"string"},"contexts":{"items":{"type":"string"},"type":"array"},"env":{"type":"string"},"working_dir":{"type":"string"}},"required":["args","command","contexts","env","working_dir"],"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"phase":{"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"sidecar_instance":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["sidecar_instance"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Sidecar is changing state; try again"},"410":{"$ref":"#/components/responses/Gone"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"504":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Sidecar did not respond in time"}},"summary":"Starts a command asynchronously and returns 202.","tags":["Sidecar Instances"]}},"/api/v3/sidecar/instances/{id}/ssh/add-key":{"post":{"operationId":"post-sidecar-instances-by-id-ssh-add-key","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"public_key":{"type":"string"}},"required":["public_key"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Sidecar is changing state; try again"},"410":{"$ref":"#/components/responses/Gone"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"504":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Sidecar did not respond in time"}},"summary":"Adds an ssh key to the instance.","tags":["Sidecar Instances"]}},"/api/v3/sidecar/snapshots":{"get":{"operationId":"get-sidecar-snapshots","responses":{"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"List sidecar snapshots.","tags":["Sidecar Snapshots"]},"post":{"operationId":"post-sidecar-snapshots","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["name"],"type":"object"},"references":{"properties":{"sidecar_instance":{"properties":{"attributes":{"nullable":true},"id":{"format":"uuid","type":"string"},"rel":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"}},"required":["sidecar_instance"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Name must not exceed 255 characters"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"A snapshot with that name already exists"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Create a new sidecar snapshot.","tags":["Sidecar Snapshots"]}},"/api/v3/sidecar/snapshots/{id}":{"get":{"operationId":"get-sidecar-snapshots-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["name"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieve a single sidecar snapshot by its ID.","tags":["Sidecar Snapshots"]}},"/api/v3/signing/certificates":{"get":{"operationId":"get-signing-certificates","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"cert_type":{"type":"string"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"expires_at":{"format":"date-time","nullable":true,"type":"string"},"file_name":{"type":"string"},"fingerprint":{"type":"string"}},"required":["cert_type","file_name","fingerprint"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the iOS signing certificates for an organization.","tags":["Signing Certificates"]},"post":{"operationId":"post-signing-certificates","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"cert_blob":{"type":"string"},"cert_password":{"type":"string"},"file_name":{"type":"string"}},"required":["cert_blob","cert_password","file_name"],"type":"object"},"references":{"properties":{"org":{"properties":{"attributes":{"nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"rel":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Uploads an iOS signing certificate to an organization.","tags":["Signing Certificates"]}},"/api/v3/signing/certificates/{id}":{"delete":{"operationId":"delete-signing-certificates-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes an iOS signing certificate.","tags":["Signing Certificates"]},"get":{"operationId":"get-signing-certificates-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"cert_type":{"type":"string"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"expires_at":{"format":"date-time","nullable":true,"type":"string"},"file_name":{"type":"string"},"fingerprint":{"type":"string"}},"required":["cert_type","file_name","fingerprint"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a single iOS signing certificate by ID.","tags":["Signing Certificates"]}},"/api/v3/signing/configs":{"get":{"operationId":"get-signing-configs","parameters":[{"in":"query","name":"filter[org_id]","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"provisioning_profiles":{"items":{"properties":{"file_name":{"type":"string"},"id":{"type":"string"}},"required":["file_name","id"],"type":"object"},"type":"array"}},"required":["name","provisioning_profiles"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"signing_certificate":{"properties":{"attributes":{"properties":{},"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"}},"required":["signing_certificate"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the iOS signing configurations for an organization.","tags":["Signing Configs"]},"post":{"operationId":"post-signing-configs","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"name":{"type":"string"},"provisioning_profiles":{"items":{"properties":{"blob":{"type":"string"},"file_name":{"type":"string"}},"required":["blob","file_name"],"type":"object"},"type":"array"}},"required":["name","provisioning_profiles"],"type":"object"},"references":{"properties":{"org":{"properties":{"attributes":{"nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"rel":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"},"signing_certificate":{"properties":{"attributes":{"nullable":true,"type":"string"},"id":{"format":"uuid","type":"string"},"rel":{"nullable":true,"type":"string"}},"required":["id"],"type":"object"}},"required":["org","signing_certificate"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates an iOS signing configuration for an organization.","tags":["Signing Configs"]}},"/api/v3/signing/configs/{id}":{"delete":{"operationId":"delete-signing-configs-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes an iOS signing configuration.","tags":["Signing Configs"]}},"/api/v3/signing/configs/{id}/remove-profile":{"post":{"operationId":"post-signing-configs-by-id-remove-profile","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"profile_id":{"format":"uuid","type":"string"}},"required":["profile_id"],"type":"object"}}},"required":true},"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Removes a provisioning profile from an iOS signing configuration.","tags":["Signing Configs"]}},"/api/v3/signing/configs/{id}/update-profile":{"post":{"operationId":"post-signing-configs-by-id-update-profile","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"blob":{"type":"string"},"file_name":{"type":"string"}},"required":["blob","file_name"],"type":"object"}}},"required":true},"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Updates a provisioning profile in an iOS signing configuration.","tags":["Signing Configs"]}},"/api/v3/tool/releases":{"get":{"operationId":"get-tool-releases","responses":{"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"List tool releases.","tags":["Tool Releases"]}},"/api/v3/triggers":{"get":{"description":"At least one of filter[project_id] or filter[pipeline_id] is required; both may be given to require triggers to match both. The result includes the project's synthetic OAuth trigger whenever it satisfies the supplied filters (a list not scoped by pipeline, or a filter[pipeline_id] pointing at the synthetic pipeline). A synthetic pipeline id cannot be resolved from the id alone, so a pipeline-only request for it returns 404; supply project_id to surface the synthetic trigger.","operationId":"get-triggers","parameters":[{"in":"query","name":"filter[pipeline_id]","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filter[project_id]","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists a project's triggers.","tags":["Triggers"]},"post":{"description":"Returns the full created entity (shape-identical to Get, plus the one-time webhook secret).","operationId":"post-triggers","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"config":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"event":{"properties":{"filter":{"properties":{"preset":{"nullable":true,"type":"string"},"rules":{"items":{"properties":{"event_ref":{"nullable":true,"type":"string"},"event_type":{"nullable":true,"type":"string"},"rule":{"type":"string"}},"required":["rule"],"type":"object"},"type":"array"}},"required":["rules"],"type":"object"},"schedule":{"items":{"type":"integer"},"nullable":true,"type":"array"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"type":"string"},"repo_id":{"type":"string"}},"required":["provider","repo_full_name","repo_id"],"type":"object"},"webhook":{"properties":{"name":{"nullable":true,"type":"string"},"secret":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"}},"type":"object"}},"required":["filter","type","vcs","webhook"],"type":"object"},"is_disabled":{"type":"boolean"}},"required":["checkout","config","event","is_disabled"],"type":"object"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"config":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"event":{"properties":{"filter":{"properties":{"preset":{"nullable":true,"type":"string"},"rules":{"items":{"properties":{"event_ref":{"nullable":true,"type":"string"},"event_type":{"nullable":true,"type":"string"},"rule":{"type":"string"}},"required":["rule"],"type":"object"},"type":"array"}},"required":["rules"],"type":"object"},"schedule":{"items":{"type":"integer"},"nullable":true,"type":"array"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"},"webhook":{"properties":{"name":{"nullable":true,"type":"string"},"secret":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"}},"type":"object"}},"required":["filter","type","vcs","webhook"],"type":"object"},"is_disabled":{"type":"boolean"}},"required":["checkout","config","event","is_disabled"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline","project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Creates a trigger under the pipeline named by pipeline_id.","tags":["Triggers"]}},"/api/v3/triggers/{id}":{"delete":{"description":"The optional filter[project_id] query parameter scopes the lookup; it is required to resolve synthetic OAuth triggers, which have no stored row and are derived from the project.","operationId":"delete-triggers-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Deletes a trigger by ID.","tags":["Triggers"]},"get":{"description":"The optional filter[project_id] query parameter scopes the lookup; it is required to resolve synthetic OAuth triggers, which have no stored row and are derived from the project.","operationId":"get-triggers-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"config":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"event":{"properties":{"filter":{"properties":{"preset":{"nullable":true,"type":"string"},"rules":{"items":{"properties":{"event_ref":{"nullable":true,"type":"string"},"event_type":{"nullable":true,"type":"string"},"rule":{"type":"string"}},"required":["rule"],"type":"object"},"type":"array"}},"required":["rules"],"type":"object"},"schedule":{"items":{"type":"integer"},"nullable":true,"type":"array"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"},"webhook":{"properties":{"name":{"nullable":true,"type":"string"},"secret":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"}},"type":"object"}},"required":["filter","type","vcs","webhook"],"type":"object"},"is_disabled":{"type":"boolean"}},"required":["checkout","config","event","is_disabled"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline","project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Gets a trigger by ID.","tags":["Triggers"]}},"/api/v3/triggers/{id}/update":{"post":{"description":"The optional filter[project_id] query parameter scopes the lookup; it is required to resolve synthetic OAuth triggers.","operationId":"post-triggers-by-id-update","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"checkout":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"config":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"event":{"properties":{"filter":{"properties":{"preset":{"nullable":true,"type":"string"},"rules":{"items":{"properties":{"event_ref":{"nullable":true,"type":"string"},"event_type":{"nullable":true,"type":"string"},"rule":{"type":"string"}},"required":["rule"],"type":"object"},"type":"array"}},"required":["rules"],"type":"object"},"schedule":{"items":{"type":"integer"},"nullable":true,"type":"array"},"webhook":{"properties":{"name":{"nullable":true,"type":"string"},"secret":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"}},"type":"object"}},"required":["filter","webhook"],"type":"object"},"is_disabled":{"nullable":true,"type":"boolean"}},"required":["checkout","config","event"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"checkout":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"config":{"properties":{"ref":{"nullable":true,"type":"string"}},"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"event":{"properties":{"filter":{"properties":{"preset":{"nullable":true,"type":"string"},"rules":{"items":{"properties":{"event_ref":{"nullable":true,"type":"string"},"event_type":{"nullable":true,"type":"string"},"rule":{"type":"string"}},"required":["rule"],"type":"object"},"type":"array"}},"required":["rules"],"type":"object"},"schedule":{"items":{"type":"integer"},"nullable":true,"type":"array"},"type":{"type":"string"},"vcs":{"properties":{"provider":{"type":"string"},"repo_full_name":{"nullable":true,"type":"string"},"repo_id":{"nullable":true,"type":"string"}},"required":["provider"],"type":"object"},"webhook":{"properties":{"name":{"nullable":true,"type":"string"},"secret":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"}},"type":"object"}},"required":["filter","type","vcs","webhook"],"type":"object"},"is_disabled":{"type":"boolean"}},"required":["checkout","config","event","is_disabled"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"pipeline":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["pipeline","project"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Partially updates a trigger by ID.","tags":["Triggers"]}},"/api/v3/usage/exports":{"post":{"operationId":"post-usage-exports","requestBody":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"from":{"format":"date-time","type":"string"},"to":{"format":"date-time","type":"string"}},"required":["from","to"],"type":"object"},"references":{"properties":{"child_orgs":{"items":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"parent_org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["child_orgs","parent_org"],"type":"object"}},"required":["attributes","references"],"type":"object"}},"required":["data"],"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"download_urls":{"items":{"type":"string"},"nullable":true,"type":"array"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"tags":["Usage"]}},"/api/v3/usage/exports/{id}":{"get":{"operationId":"get-usage-exports-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"download_urls":{"items":{"type":"string"},"nullable":true,"type":"array"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"}},"required":["phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"org":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["org"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"tags":["Usage"]}},"/api/v3/users":{"get":{"description":"Only filter[user_id]=me is supported currently - returning a single-element collection for the authenticated identity.","operationId":"get-users","parameters":[{"in":"query","name":"filter[user_id]","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"avatar_url":{"type":"string"},"login":{"type":"string"},"name":{"nullable":true,"type":"string"}},"required":["avatar_url","login"],"type":"object"},"id":{"format":"uuid","type":"string"}},"required":["attributes","id"],"type":"object"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Returns a list of users limited by filter query parameters.","tags":["Users"]}},"/api/v3/workflows":{"get":{"description":"V2: GET /pipelines/:id/workflows","operationId":"get-workflows","parameters":[{"in":"query","name":"filter[run_id]","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Opaque cursor for the next or previous page. Send back the value of page.next or page.prev from a previous response on this operation, verbatim - it is a cursor value, not a URL, and must not be constructed or decoded. Omit for the first page.","in":"query","name":"page[cursor]","schema":{"type":"string"}},{"description":"Maximum items in one page. Out-of-range values are rejected with 400 rather than clamped.","in":"query","name":"page[limit]","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"attributes":{"properties":{"auto_rerun":{"nullable":true,"properties":{"max_reruns":{"type":"integer"},"number":{"type":"integer"}},"required":["max_reruns","number"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"current_outcome":{"nullable":true,"type":"string"},"ended_at":{"format":"date-time","nullable":true,"type":"string"},"name":{"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["name","phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"run":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project","run"],"type":"object"}},"required":["attributes","id","references"],"type":"object"},"type":"array"},"page":{"properties":{"next":{"nullable":true,"type":"string"},"prev":{"nullable":true,"type":"string"}},"type":"object"}},"required":["data","page"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Lists the workflows in a run.","tags":["Workflows"]}},"/api/v3/workflows/{id}":{"get":{"operationId":"get-workflows-by-id","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"attributes":{"properties":{"auto_rerun":{"nullable":true,"properties":{"max_reruns":{"type":"integer"},"number":{"type":"integer"}},"required":["max_reruns","number"],"type":"object"},"created_at":{"format":"date-time","nullable":true,"type":"string"},"current_outcome":{"nullable":true,"type":"string"},"ended_at":{"format":"date-time","nullable":true,"type":"string"},"name":{"type":"string"},"outcome":{"nullable":true,"type":"string"},"phase":{"type":"string"},"tag":{"nullable":true,"type":"string"}},"required":["name","phase"],"type":"object"},"id":{"format":"uuid","type":"string"},"references":{"properties":{"project":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"run":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"user":{"nullable":true,"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["project","run"],"type":"object"}},"required":["attributes","id","references"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Retrieve a single workflow by its ID.","tags":["Workflows"]}},"/api/v3/workflows/{id}/cancel":{"post":{"description":"Cancellation is processed asynchronously, so the endpoint returns 202 Accepted with the workflow's id rather than a representation of its final state.","operationId":"post-workflows-by-id-cancel","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Requests cancellation of a workflow.","tags":["Workflows"]}},"/api/v3/workflows/{id}/rerun":{"post":{"description":"By default every job is rerun; set is_from_failed to rerun only the failed jobs and their dependents. The source workflow is not modified.","operationId":"post-workflows-by-id-rerun","parameters":[{"description":"The id.","in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"is_from_failed":{"nullable":true,"type":"boolean"},"is_sparse_tree":{"nullable":true,"type":"boolean"},"is_ssh_enabled":{"nullable":true,"type":"boolean"},"jobs":{"items":{"format":"uuid","type":"string"},"nullable":true,"type":"array"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"}},"required":["data"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}},"required":["error"],"type":"object"}}},"description":"Bad Request"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Reruns an existing workflow, creating and returning a new workflow.","tags":["Workflows"]}}},"security":[{"bearer_token":[]}],"servers":[{"url":"https://circleci.com"}],"tags":[{"description":"Credit spend aggregated by job, workflow or pipeline.","name":"Analysis"},{"description":"Marketplace catalog of available products and add-ons.","name":"Catalog"},{"description":"Configuration compilation and validation.","name":"Configs"},{"description":"Restrictions that limit which projects, groups, or expressions may use a context.","name":"Context Restrictions"},{"description":"Secret contexts that provide environment variables to jobs at runtime.","name":"Contexts"},{"description":"Release tracker components representing deployable units.","name":"Deploy Components"},{"description":"Async requests to validate a CircleCI config and generate a suggested deploy config.","name":"Deploy Config Suggestions"},{"description":"A deployment is one attempt to move a deploy component to a target version in an environment. Read in the scope of an organization via filter[org_id].","name":"Deploy Deployments"},{"description":"Async requests to generate a human-readable summary of a code diff.","name":"Deploy Diff Summaries"},{"description":"Release tracker environments for deployment management.","name":"Deploy Environments"},{"description":"Per-project deploy configuration — the pipeline definitions run to deploy and to roll back. A singleton per project rather than an independently addressable resource.","name":"Deploy Settings"},{"description":"Individual units of work within a workflow. Each job runs in its own execution environment and produces artifacts, test results, and logs.","name":"Jobs"},{"description":"Time-bucketed count metrics (test result counts and test flake counts) over a time window.","name":"Metric"},{"description":"Scoping containers that group orbs under an organization. An orb's full name is namespace/orb-name.","name":"Namespaces"},{"description":"Per-user and per-project notification channel configuration — the email address or Slack channel a notification is delivered to.","name":"Notification Channel Configs"},{"description":"Currently Slack workspace integrations for an organization. Manage the connection used to deliver CircleCI notifications.","name":"Notification Integrations"},{"description":"Links between a CircleCI user and an external identity on a third-party connection (e.g. a Slack user). Used to deliver notifications, enable interactivity, and tag authors on that identity. Keyed by user, connection type, and external scope; not UUID-addressable.","name":"Notification Links"},{"description":"Per-user and per-project notification preference matrix. Read the matrix or bulk-toggle entries; scoped via filter[scope]=user|project.","name":"Notification Preferences"},{"description":"Taxonomy labels for organizing and discovering orbs in the registry.","name":"Orb Categories"},{"description":"Reusable configuration packages published to the orb registry. Each orb belongs to a namespace and has one or more versioned releases.","name":"Orb Packages"},{"description":"Individual published releases of an orb, identified by semantic version. Each version contains the orb's source configuration.","name":"Orb Versions"},{"description":"Organizations are the top-level account entity. All projects, pipelines, and billing belong to an org.","name":"Orgs"},{"description":"Pipeline definitions describe how to build, test, and deploy a project.","name":"Pipelines"},{"description":"Projects represent a source code repository connected to CircleCI. A project typically contains pipelines, environment variables, and settings.","name":"Projects"},{"description":"VCS provider branches available to a project.","name":"Provider Branches"},{"description":"Connections between an organization and a VCS provider. Setup returns where to send the user; nothing is connected until they finish at the provider.","name":"Provider Connections"},{"description":"Repositories an organization's provider installation can reach, as the calling user sees them. Scoped via filter[org_id] and filter[provider]; cursor-paged.","name":"Provider Repositories"},{"description":"Self-hosted runner agents connected to a resource class. Read-only, scoped via filter[resource_class].","name":"Runner Agents"},{"description":"Self-hosted runner resource classes — the pool identifier agents register against and jobs request work from.","name":"Runner Resource Classes"},{"description":"Authentication tokens for self-hosted runners.","name":"Runner Tokens"},{"description":"Runs record each trigger firing and group the workflows they produce. A run carries VCS context, parameter overrides, and pre-workflow errors.","name":"Runs"},{"description":"Commands sent to a sidecar instance for execution.","name":"Sidecar Commands"},{"description":"Lightweight microVM environments that mirror a project's stack for inner-loop validation.","name":"Sidecar Instances"},{"description":"Point-in-time snapshots of a sidecar instance's filesystem and state.","name":"Sidecar Snapshots"},{"description":"Apple code-signing certificates used to sign iOS builds.","name":"Signing Certificates"},{"description":"iOS signing configurations pairing a certificate with provisioning profiles.","name":"Signing Configs"},{"description":"Released versions of the tools CircleCI distributes, such as circleci-cli and chunk-cli. Requires filter[tool], whose values are the tools' GitHub repository names, and returns that tool's latest release.","name":"Tool Releases"},{"description":"A trigger defines what causes a pipeline to run: a VCS event, a custom webhook, or a cron schedule.","name":"Triggers"},{"description":"Usage and billing data exports.","name":"Usage"},{"description":"Authenticated identities (human or machine). Use ?filter[user_id]=me to resolve the authenticated identity.","name":"Users"},{"description":"Workflows organise jobs into a dependency graph. A run may produce multiple workflows that execute in parallel or sequence.","name":"Workflows"}]}