{
	"components": {
		"schemas": {
			"AcceptRequest": {
				"properties": {
					"token": {
						"type": "string"
					}
				},
				"required": [
					"token"
				],
				"title": "AcceptRequest",
				"type": "object"
			},
			"AiCapRequest": {
				"properties": {
					"cap_usd": {
						"maximum": 10000.0,
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"member_cap_usd": {
						"maximum": 10000.0,
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "AiCapRequest",
				"type": "object"
			},
			"AnswerCheckRead": {
				"properties": {
					"charged_usd": {
						"type": "number"
					},
					"created_at": {
						"type": "string"
					},
					"error": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"finished_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"questions": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"results": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"charged_usd",
					"created_at",
					"id",
					"questions",
					"state"
				],
				"title": "AnswerCheckRead",
				"type": "object"
			},
			"AnswerCheckRequest": {
				"properties": {
					"questions": {
						"items": {
							"type": "string"
						},
						"maxItems": 5,
						"minItems": 1,
						"type": "array"
					}
				},
				"required": [
					"questions"
				],
				"title": "AnswerCheckRequest",
				"type": "object"
			},
			"AnswerCheckResponse": {
				"properties": {
					"check": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/AnswerCheckRead"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "AnswerCheckResponse",
				"type": "object"
			},
			"AnswerEstimateRead": {
				"properties": {
					"base_usd": {
						"type": "number"
					},
					"drafted": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"headroom_usd": {
						"type": "number"
					},
					"max_questions": {
						"type": "integer"
					},
					"max_usd": {
						"type": "number"
					},
					"per_question_usd": {
						"type": "number"
					},
					"questions": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"runs_left": {
						"type": "integer"
					}
				},
				"required": [
					"base_usd",
					"drafted",
					"headroom_usd",
					"max_questions",
					"max_usd",
					"per_question_usd",
					"questions",
					"runs_left"
				],
				"title": "AnswerEstimateRead",
				"type": "object"
			},
			"AppDeploymentListItem": {
				"properties": {
					"created_at": {
						"type": "string"
					},
					"error": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"finished_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"share_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"went_live": {
						"type": "boolean"
					}
				},
				"required": [
					"created_at",
					"id",
					"status",
					"went_live"
				],
				"title": "AppDeploymentListItem",
				"type": "object"
			},
			"AppDeploymentRead": {
				"properties": {
					"created_at": {
						"type": "string"
					},
					"error_cause": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"error_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"error_message": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"finished_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"created_at",
					"id",
					"status"
				],
				"title": "AppDeploymentRead",
				"type": "object"
			},
			"AppDeploymentsRead": {
				"properties": {
					"deployments": {
						"items": {
							"$ref": "#/components/schemas/AppDeploymentListItem"
						},
						"type": "array"
					}
				},
				"required": [
					"deployments"
				],
				"title": "AppDeploymentsRead",
				"type": "object"
			},
			"AppListItem": {
				"properties": {
					"accounts": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"publication": {
						"$ref": "#/components/schemas/AppPublicationRead"
					},
					"repository_id": {
						"type": "string"
					},
					"repository_name": {
						"type": "string"
					},
					"search_visible": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"updated_at": {
						"type": "string"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"usd_this_month": {
						"type": "number"
					}
				},
				"required": [
					"publication",
					"repository_id",
					"repository_name",
					"updated_at",
					"usd_this_month"
				],
				"title": "AppListItem",
				"type": "object"
			},
			"AppPublicationRead": {
				"properties": {
					"accounts": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"auto_redeploy": {
						"type": "boolean"
					},
					"feature_requests": {
						"default": "off",
						"type": "string"
					},
					"feature_requests_autostart_on": {
						"default": false,
						"type": "boolean"
					},
					"feature_requests_min_votes": {
						"default": 6,
						"type": "integer"
					},
					"generation": {
						"type": "integer"
					},
					"hosting": {
						"default": "syndai",
						"type": "string"
					},
					"hosting_over_limit": {
						"default": false,
						"type": "boolean"
					},
					"hosting_paid_cap_usd": {
						"default": 20.0,
						"type": "number"
					},
					"hosting_paid_on": {
						"default": false,
						"type": "boolean"
					},
					"hosting_usd_this_month": {
						"type": "number"
					},
					"id": {
						"type": "string"
					},
					"latest_deployment": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/AppDeploymentRead"
							},
							{
								"type": "null"
							}
						]
					},
					"members": {
						"type": "boolean"
					},
					"operation_error_cause": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"operation_error_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"operation_error_message": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pinned_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"search_visible": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"signup": {
						"type": "string"
					},
					"site_languages_consent_current": {
						"default": false,
						"type": "boolean"
					},
					"site_languages_max_usd": {
						"default": 0.0,
						"type": "number"
					},
					"site_languages_paid_on": {
						"default": false,
						"type": "boolean"
					},
					"site_languages_terms": {
						"default": "",
						"type": "string"
					},
					"site_languages_usage_markup": {
						"default": 0.0,
						"type": "number"
					},
					"slug": {
						"type": "string"
					},
					"state": {
						"type": "string"
					},
					"taps_counted": {
						"type": "boolean"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"visitors": {
						"type": "boolean"
					},
					"writes_paused": {
						"type": "boolean"
					}
				},
				"required": [
					"auto_redeploy",
					"generation",
					"hosting_usd_this_month",
					"id",
					"members",
					"signup",
					"slug",
					"state",
					"taps_counted",
					"visitors",
					"writes_paused"
				],
				"title": "AppPublicationRead",
				"type": "object"
			},
			"AppRuntimeResponse": {
				"properties": {
					"ai": {
						"$ref": "#/components/schemas/RuntimeAiRead"
					},
					"changes": {
						"oneOf": [
							{
								"items": {
									"$ref": "#/components/schemas/SiteChangeRead"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"errors": {
						"oneOf": [
							{
								"items": {
									"$ref": "#/components/schemas/ErrorGroupRead"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"jobs": {
						"items": {
							"$ref": "#/components/schemas/RuntimeJobRead"
						},
						"type": "array"
					},
					"mail": {
						"$ref": "#/components/schemas/RuntimeMailRead"
					},
					"members_revenue": {
						"oneOf": [
							{
								"items": {
									"$ref": "#/components/schemas/RuntimeRevenueRead"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"missing_secrets": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"outcomes": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/RuntimeOutcomesRead"
							},
							{
								"type": "null"
							}
						]
					},
					"since": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/RuntimeSinceRead"
							},
							{
								"type": "null"
							}
						]
					},
					"traffic": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/RuntimeTrafficRead"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"ai",
					"jobs",
					"mail",
					"missing_secrets"
				],
				"title": "AppRuntimeResponse",
				"type": "object"
			},
			"AppsListResponse": {
				"properties": {
					"items": {
						"items": {
							"$ref": "#/components/schemas/AppListItem"
						},
						"type": "array"
					}
				},
				"required": [
					"items"
				],
				"title": "AppsListResponse",
				"type": "object"
			},
			"ArtifactIngestRequest": {
				"properties": {
					"data_base64": {
						"type": "string"
					},
					"expected_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"data_base64"
				],
				"title": "ArtifactIngestRequest",
				"type": "object"
			},
			"ArtifactIngestResponse": {
				"properties": {
					"artifact": {
						"type": "string"
					},
					"format": {
						"type": "string"
					},
					"size": {
						"type": "integer"
					}
				},
				"required": [
					"artifact",
					"format",
					"size"
				],
				"title": "ArtifactIngestResponse",
				"type": "object"
			},
			"BacklogDismissRequest": {
				"properties": {
					"note": {
						"oneOf": [
							{
								"maxLength": 2000,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reason": {
						"enum": [
							"not_a_bug",
							"wont_fix",
							"duplicate",
							"wrong_approach",
							"too_big",
							"other",
							null
						],
						"type": [
							"null",
							"string"
						]
					}
				},
				"required": [],
				"title": "BacklogDismissRequest",
				"type": "object"
			},
			"BacklogOfferListResponse": {
				"properties": {
					"tasks": {
						"items": {
							"$ref": "#/components/schemas/BacklogOfferRead"
						},
						"type": "array"
					}
				},
				"required": [
					"tasks"
				],
				"title": "BacklogOfferListResponse",
				"type": "object"
			},
			"BacklogOfferRead": {
				"properties": {
					"accepted_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"action": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"added_by_syndai": {
						"default": false,
						"type": "boolean"
					},
					"coding_repository_id": {
						"format": "uuid",
						"type": "string"
					},
					"compile": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/CompileOfferFacts"
							},
							{
								"type": "null"
							}
						]
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"link": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/OfferLinkRead"
							},
							{
								"type": "null"
							}
						]
					},
					"price_label": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"price_usd": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"prompt": {
						"type": "string"
					},
					"reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repo_name": {
						"type": "string"
					},
					"seo": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoOfferFacts"
							},
							{
								"type": "null"
							}
						]
					},
					"source": {
						"type": "string"
					},
					"standing": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"steps": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"synthesized": {
						"default": false,
						"type": "boolean"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"coding_repository_id",
					"created_at",
					"id",
					"prompt",
					"repo_name",
					"source",
					"title"
				],
				"title": "BacklogOfferRead",
				"type": "object"
			},
			"BugFindingListResponse": {
				"properties": {
					"items": {
						"items": {
							"$ref": "#/components/schemas/BugFindingRead"
						},
						"type": "array"
					}
				},
				"required": [
					"items"
				],
				"title": "BugFindingListResponse",
				"type": "object"
			},
			"BugFindingRead": {
				"properties": {
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"dismiss_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"expected": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"finding": {
						"additionalProperties": true,
						"type": "object"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"media": {
						"items": {
							"$ref": "#/components/schemas/EvidenceMedia"
						},
						"type": "array"
					},
					"pr_state": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"priority": {
						"type": "integer"
					},
					"prompt": {
						"type": "string"
					},
					"repository_id": {
						"format": "uuid",
						"type": "string"
					},
					"run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					},
					"title": {
						"type": "string"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"created_at",
					"finding",
					"id",
					"priority",
					"prompt",
					"repository_id",
					"state",
					"title",
					"updated_at"
				],
				"title": "BugFindingRead",
				"type": "object"
			},
			"BugScanLastScan": {
				"properties": {
					"app": {
						"default": false,
						"type": "boolean"
					},
					"app_check": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"charged_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"completed_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"files_planned": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"first_scan_areas": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"funded_by": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"groups_planned": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"limit_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"over_limit_groups": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"run_id": {
						"format": "uuid",
						"type": "string"
					},
					"stats": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"stopped_at_ceiling": {
						"default": false,
						"type": "boolean"
					},
					"top_up_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"waiting_on": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"run_id",
					"status"
				],
				"title": "BugScanLastScan",
				"type": "object"
			},
			"BugScanRead": {
				"properties": {
					"enabled": {
						"type": "boolean"
					},
					"free_scan_state": {
						"default": "used",
						"type": "string"
					},
					"free_scan_usd": {
						"type": "number"
					},
					"full_subscription": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"full_until": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"funding": {
						"default": "credits",
						"type": "string"
					},
					"last_scan": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/BugScanLastScan"
							},
							{
								"type": "null"
							}
						]
					},
					"limit_usd": {
						"type": "number"
					},
					"next_run_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"paused": {
						"default": false,
						"type": "boolean"
					},
					"paused_no_credits": {
						"default": false,
						"type": "boolean"
					},
					"scanning": {
						"default": false,
						"type": "boolean"
					},
					"schedule_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"enabled",
					"free_scan_usd",
					"limit_usd"
				],
				"title": "BugScanRead",
				"type": "object"
			},
			"BugScanRunNowResponse": {
				"properties": {
					"occurrence_id": {
						"format": "uuid",
						"type": "string"
					}
				},
				"required": [
					"occurrence_id"
				],
				"title": "BugScanRunNowResponse",
				"type": "object"
			},
			"BugScanUpdateRequest": {
				"properties": {
					"enabled": {
						"type": "boolean"
					},
					"limit_usd": {
						"maximum": 300.0,
						"minimum": 5.0,
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"enabled"
				],
				"title": "BugScanUpdateRequest",
				"type": "object"
			},
			"BuildRecipe": {
				"properties": {
					"build_args": {
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"configuration": {
						"oneOf": [
							{
								"maxLength": 200,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"env": {
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"flavor": {
						"oneOf": [
							{
								"maxLength": 200,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"flutter_version": {
						"oneOf": [
							{
								"maxLength": 200,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"scheme": {
						"oneOf": [
							{
								"maxLength": 200,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"target": {
						"oneOf": [
							{
								"maxLength": 200,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "BuildRecipe",
				"type": "object"
			},
			"BuiltinCapabilityRead": {
				"properties": {
					"capability_id": {
						"type": "string"
					},
					"summary": {
						"type": "string"
					}
				},
				"required": [
					"capability_id",
					"summary"
				],
				"title": "BuiltinCapabilityRead",
				"type": "object"
			},
			"ChangeEvidence": {
				"properties": {
					"criteria": {
						"items": {
							"$ref": "#/components/schemas/EvidenceCriterion"
						},
						"type": "array"
					},
					"missing_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pages": {
						"items": {
							"$ref": "#/components/schemas/EvidencePage"
						},
						"type": "array"
					},
					"ui_fix": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceUiFix"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"criteria",
					"pages"
				],
				"title": "ChangeEvidence",
				"type": "object"
			},
			"ChangeHeldRead": {
				"properties": {
					"can_retry": {
						"type": "boolean"
					},
					"head_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"message": {
						"type": "string"
					},
					"paths": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"review_url": {
						"type": "string"
					}
				},
				"required": [
					"can_retry",
					"message",
					"paths",
					"review_url"
				],
				"title": "ChangeHeldRead",
				"type": "object"
			},
			"ChangeProjectRead": {
				"properties": {
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"live_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"name"
				],
				"title": "ChangeProjectRead",
				"type": "object"
			},
			"ChangeQuestionRead": {
				"properties": {
					"hitl_request_id": {
						"format": "uuid",
						"type": "string"
					},
					"inputs": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingHitlInputRead"
						},
						"type": "array"
					},
					"kind": {
						"type": "string"
					},
					"summary": {
						"type": "string"
					}
				},
				"required": [
					"hitl_request_id",
					"inputs",
					"kind",
					"summary"
				],
				"title": "ChangeQuestionRead",
				"type": "object"
			},
			"ChangeStateResponse": {
				"properties": {
					"cursor": {
						"type": "string"
					},
					"done": {
						"type": "boolean"
					},
					"exit_code": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"headline": {
						"type": "string"
					},
					"held": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ChangeHeldRead"
							},
							{
								"type": "null"
							}
						]
					},
					"live_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"needs_input": {
						"items": {
							"$ref": "#/components/schemas/ChangeQuestionRead"
						},
						"type": "array"
					},
					"pr_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"project": {
						"$ref": "#/components/schemas/ChangeProjectRead"
					},
					"queue_position": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"receipt_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"run_id": {
						"format": "uuid",
						"type": "string"
					},
					"run_url": {
						"type": "string"
					},
					"state": {
						"type": "string"
					},
					"verified": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"cursor",
					"done",
					"headline",
					"needs_input",
					"project",
					"run_id",
					"run_url",
					"state"
				],
				"title": "ChangeStateResponse",
				"type": "object"
			},
			"ChangeWindowRead": {
				"properties": {
					"outcomes": {
						"type": "integer"
					},
					"visits": {
						"type": "integer"
					}
				},
				"required": [
					"outcomes",
					"visits"
				],
				"title": "ChangeWindowRead",
				"type": "object"
			},
			"CliDeviceStartRequest": {
				"properties": {
					"client_name": {
						"oneOf": [
							{
								"maxLength": 200,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"host": {
						"oneOf": [
							{
								"maxLength": 200,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"scopes": {
						"maxItems": 64,
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "CliDeviceStartRequest",
				"type": "object"
			},
			"CliDeviceStartResponse": {
				"properties": {
					"device_code": {
						"type": "string"
					},
					"expires_in": {
						"type": "integer"
					},
					"interval": {
						"type": "integer"
					},
					"user_code": {
						"type": "string"
					},
					"verification_uri": {
						"type": "string"
					},
					"verification_uri_complete": {
						"type": "string"
					}
				},
				"required": [
					"device_code",
					"expires_in",
					"interval",
					"user_code",
					"verification_uri",
					"verification_uri_complete"
				],
				"title": "CliDeviceStartResponse",
				"type": "object"
			},
			"CliDeviceTokenError": {
				"properties": {
					"error": {
						"type": "string"
					}
				},
				"required": [
					"error"
				],
				"title": "CliDeviceTokenError",
				"type": "object"
			},
			"CliDeviceTokenRequest": {
				"properties": {
					"device_code": {
						"maxLength": 200,
						"minLength": 1,
						"type": "string"
					}
				},
				"required": [
					"device_code"
				],
				"title": "CliDeviceTokenRequest",
				"type": "object"
			},
			"CliDeviceTokenResponse": {
				"properties": {
					"api_key": {
						"format": "password",
						"type": "string"
					},
					"customer_id": {
						"format": "uuid",
						"type": "string"
					},
					"expires_at": {
						"format": "date-time",
						"type": "string"
					},
					"key_id": {
						"format": "uuid",
						"type": "string"
					}
				},
				"required": [
					"api_key",
					"customer_id",
					"expires_at",
					"key_id"
				],
				"title": "CliDeviceTokenResponse",
				"type": "object"
			},
			"CliProductionAccessRequest": {
				"properties": {
					"client_name": {
						"oneOf": [
							{
								"maxLength": 200,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"host": {
						"oneOf": [
							{
								"maxLength": 200,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "CliProductionAccessRequest",
				"type": "object"
			},
			"CliProductionAccessResponse": {
				"properties": {
					"allowed_until": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"allowed_until"
				],
				"title": "CliProductionAccessResponse",
				"type": "object"
			},
			"CliProductionAccessTokenRequest": {
				"properties": {
					"device_code": {
						"maxLength": 200,
						"minLength": 1,
						"type": "string"
					}
				},
				"required": [
					"device_code"
				],
				"title": "CliProductionAccessTokenRequest",
				"type": "object"
			},
			"CodingArtifactOpenResponse": {
				"properties": {
					"artifact_id": {
						"format": "uuid",
						"type": "string"
					},
					"content_size": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"mime_type": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"open_mode": {
						"type": "string"
					},
					"sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"signed_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"signed_url_expires_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					},
					"text_content": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"artifact_id",
					"open_mode",
					"state",
					"title"
				],
				"title": "CodingArtifactOpenResponse",
				"type": "object"
			},
			"CodingArtifactRefRead": {
				"properties": {
					"artifact_id": {
						"format": "uuid",
						"type": "string"
					},
					"display_name": {
						"type": "string"
					},
					"expires_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"kind": {
						"type": "string"
					},
					"mime_type": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"open_state": {
						"type": "string"
					},
					"retention_tag": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"section": {
						"type": "string"
					},
					"sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"size_bytes": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"source_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source_type": {
						"type": "string"
					}
				},
				"required": [
					"artifact_id",
					"display_name",
					"kind",
					"open_state",
					"section",
					"source_type"
				],
				"title": "CodingArtifactRefRead",
				"type": "object"
			},
			"CodingCriterionProofRead": {
				"properties": {
					"duration_ms": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"failure_classification": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"flaky": {
						"default": false,
						"type": "boolean"
					},
					"not_run_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"runner": {
						"type": "string"
					},
					"status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"test_origin": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"tests": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"tests_collected": {
						"type": "integer"
					},
					"tests_failed": {
						"type": "integer"
					}
				},
				"required": [
					"runner",
					"tests",
					"tests_collected",
					"tests_failed"
				],
				"title": "CodingCriterionProofRead",
				"type": "object"
			},
			"CodingCriterionRead": {
				"properties": {
					"bound_validator_count": {
						"type": "integer"
					},
					"criterion_key": {
						"format": "uuid",
						"type": "string"
					},
					"failed_validators": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"label": {
						"type": "string"
					},
					"not_run_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"proof": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/CodingCriterionProofRead"
							},
							{
								"type": "null"
							}
						]
					},
					"proven_validator_count": {
						"type": "integer"
					},
					"proven_validators": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"ratified_by": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"text": {
						"type": "string"
					},
					"text_hash": {
						"type": "string"
					},
					"tree_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"verdict": {
						"type": "string"
					}
				},
				"required": [
					"bound_validator_count",
					"criterion_key",
					"id",
					"label",
					"proven_validator_count",
					"status",
					"text",
					"text_hash",
					"verdict"
				],
				"title": "CodingCriterionRead",
				"type": "object"
			},
			"CodingHitlResponseEntry": {
				"properties": {
					"approved": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"input_id": {
						"type": "string"
					},
					"selected_option_ids": {
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"text": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"input_id"
				],
				"title": "CodingHitlResponseEntry",
				"type": "object"
			},
			"CodingImageRef": {
				"properties": {
					"content_type": {
						"type": "string"
					},
					"object_key": {
						"type": "string"
					}
				},
				"required": [
					"content_type",
					"object_key"
				],
				"title": "CodingImageRef",
				"type": "object"
			},
			"CodingRepositoryRead": {
				"properties": {
					"allow_automation_changes": {
						"default": false,
						"type": "boolean"
					},
					"capabilities": {
						"additionalProperties": true,
						"type": "object"
					},
					"clone_url": {
						"type": "string"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"customer_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"default_branch": {
						"type": "string"
					},
					"display_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"full_name": {
						"type": "string"
					},
					"github_deploy": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/RepositoryGithubDeployRead"
							},
							{
								"type": "null"
							}
						]
					},
					"html_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"protected_paths": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"provider": {
						"type": "string"
					},
					"repo_url": {
						"type": "string"
					},
					"status": {
						"type": "string"
					},
					"store": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/RepositoryStoreRead"
							},
							{
								"type": "null"
							}
						]
					},
					"trust_owner_changes": {
						"default": true,
						"type": "boolean"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"capabilities",
					"clone_url",
					"created_at",
					"default_branch",
					"full_name",
					"id",
					"protected_paths",
					"provider",
					"repo_url",
					"status",
					"updated_at"
				],
				"title": "CodingRepositoryRead",
				"type": "object"
			},
			"CodingRepositoryUpdateRequest": {
				"properties": {
					"allow_automation_changes": {
						"oneOf": [
							{
								"type": "boolean"
							}
						]
					},
					"display_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"expected_updated_at": {
						"oneOf": [
							{
								"type": "string"
							}
						]
					},
					"protected_paths": {
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							}
						]
					},
					"trust_owner_changes": {
						"oneOf": [
							{
								"type": "boolean"
							}
						]
					}
				},
				"required": [],
				"title": "CodingRepositoryUpdateRequest",
				"type": "object"
			},
			"CodingReviewGateStatus": {
				"description": "Lifecycle state for a structured coding review/playbook gate.",
				"enum": [
					"pending",
					"running",
					"passed",
					"failed",
					"waived",
					"blocked",
					"cancelled"
				],
				"title": "CodingReviewGateStatus",
				"type": "string"
			},
			"CodingRunArtifactBundleRead": {
				"properties": {
					"coding_run_id": {
						"format": "uuid",
						"type": "string"
					},
					"effective_resolution_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_contract_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"provenance": {
						"additionalProperties": true,
						"type": "object"
					},
					"sections": {
						"additionalProperties": {
							"items": {
								"$ref": "#/components/schemas/CodingArtifactRefRead"
							},
							"type": "array"
						},
						"type": "object"
					}
				},
				"required": [
					"coding_run_id",
					"provenance",
					"sections"
				],
				"title": "CodingRunArtifactBundleRead",
				"type": "object"
			},
			"CodingRunCancelRequest": {
				"properties": {},
				"required": [],
				"title": "CodingRunCancelRequest",
				"type": "object"
			},
			"CodingValidationStatus": {
				"description": "Lifecycle state for a validator or review execution.",
				"enum": [
					"pending",
					"running",
					"passed",
					"failed",
					"skipped",
					"blocked",
					"cancelled"
				],
				"title": "CodingValidationStatus",
				"type": "string"
			},
			"CodingWebhookDeliveryStatus": {
				"description": "Lifecycle state for outbound coding webhook delivery attempts.",
				"enum": [
					"pending",
					"delivered",
					"failed"
				],
				"title": "CodingWebhookDeliveryStatus",
				"type": "string"
			},
			"CodingWebhookEventType": {
				"description": "External webhook and SSE event taxonomy for Coding-as-a-Service.",
				"enum": [
					"coding.webhook.test",
					"coding.run.created",
					"coding.run.phase_changed",
					"coding.run.route_changed",
					"coding.run.question_required",
					"coding.run.liveness_changed",
					"coding.execution.attempt.started",
					"coding.execution.attempt.completed",
					"coding.validation.completed",
					"coding.review_gate.completed",
					"coding.artifact.created",
					"coding.pr.opened",
					"coding.pr.merged",
					"coding.run.completed",
					"coding.run.failed",
					"coding.run.cancelled",
					"coding.run.delivery_marked",
					"coding.run.ac_contested",
					"coding.run.final_response_ready",
					"coding.run.final_response_failed",
					"coding.run.capability.started",
					"coding.run.capability.finished",
					"coding.run.capability.governance_required",
					"coding.run.preview_ready",
					"coding.run.steer_received",
					"coding.run.steer_applied",
					"coding.run.steer_orphaned",
					"coding.run.spec_review_ready",
					"coding.run.loop_breaker_fired",
					"coding.run.notice",
					"coding.run.land_changed"
				],
				"title": "CodingWebhookEventType",
				"type": "string"
			},
			"CompileOfferFacts": {
				"properties": {
					"agent_month_usd": {
						"type": "number"
					},
					"build_usd": {
						"type": "number"
					},
					"fix_the_job": {
						"default": false,
						"type": "boolean"
					},
					"goal_id": {
						"format": "uuid",
						"type": "string"
					},
					"payback_months": {
						"type": "integer"
					},
					"update_site_first": {
						"default": false,
						"type": "boolean"
					}
				},
				"required": [
					"agent_month_usd",
					"build_usd",
					"goal_id",
					"payback_months"
				],
				"title": "CompileOfferFacts",
				"type": "object"
			},
			"ConfirmRequest": {
				"properties": {
					"owner_email": {
						"oneOf": [
							{
								"maxLength": 254,
								"minLength": 3,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "ConfirmRequest",
				"type": "object"
			},
			"CustomToolCreateRequest": {
				"properties": {
					"auth_mode": {
						"enum": [
							"oauth",
							"token",
							"none",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"config": {
						"additionalProperties": true,
						"type": "object"
					},
					"description": {
						"type": "string"
					},
					"kind": {
						"enum": [
							"mcp_server",
							"skill"
						],
						"type": "string"
					},
					"manual_client": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/CustomToolManualClient"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					},
					"repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"config",
					"description",
					"kind",
					"name"
				],
				"title": "CustomToolCreateRequest",
				"type": "object"
			},
			"CustomToolListResponse": {
				"properties": {
					"builtin_capabilities": {
						"items": {
							"$ref": "#/components/schemas/BuiltinCapabilityRead"
						},
						"type": "array"
					},
					"tools": {
						"items": {
							"$ref": "#/components/schemas/CustomToolRead"
						},
						"type": "array"
					}
				},
				"required": [
					"builtin_capabilities",
					"tools"
				],
				"title": "CustomToolListResponse",
				"type": "object"
			},
			"CustomToolManualClient": {
				"properties": {
					"client_id": {
						"type": "string"
					},
					"client_secret": {
						"oneOf": [
							{
								"format": "password",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"client_id"
				],
				"title": "CustomToolManualClient",
				"type": "object"
			},
			"CustomToolOAuthRead": {
				"properties": {
					"connected_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"connected_by_left": {
						"type": "boolean"
					},
					"connected_by_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"issuer_host": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"redirect_uri": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"requested_scopes": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"scopes": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"connected_by_left",
					"requested_scopes",
					"scopes"
				],
				"title": "CustomToolOAuthRead",
				"type": "object"
			},
			"CustomToolRead": {
				"properties": {
					"auth_mode": {
						"default": "token",
						"enum": [
							"oauth",
							"token",
							"none"
						],
						"type": "string"
					},
					"auth_status": {
						"enum": [
							"pending",
							"connected",
							"reconnect",
							"more_access",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"config": {
						"additionalProperties": true,
						"type": "object"
					},
					"description": {
						"type": "string"
					},
					"description_hint": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"enabled": {
						"type": "boolean"
					},
					"has_token": {
						"type": "boolean"
					},
					"id": {
						"type": "string"
					},
					"kind": {
						"enum": [
							"mcp_server",
							"skill"
						],
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"not_ready_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"oauth": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/CustomToolOAuthRead"
							},
							{
								"type": "null"
							}
						]
					},
					"repository_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"run_ready": {
						"type": "boolean"
					},
					"scan_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"scan_status": {
						"enum": [
							"scanned",
							"unscanned",
							"flagged",
							"acknowledged"
						],
						"type": "string"
					},
					"scanned_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"config",
					"description",
					"enabled",
					"has_token",
					"id",
					"kind",
					"name",
					"run_ready",
					"scan_status"
				],
				"title": "CustomToolRead",
				"type": "object"
			},
			"CustomToolResponse": {
				"properties": {
					"tool": {
						"$ref": "#/components/schemas/CustomToolRead"
					}
				},
				"required": [
					"tool"
				],
				"title": "CustomToolResponse",
				"type": "object"
			},
			"CustomToolUpdateRequest": {
				"properties": {
					"auth_mode": {
						"enum": [
							"oauth",
							"token",
							"none",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"config": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"description": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"enabled": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"manual_client": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/CustomToolManualClient"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "CustomToolUpdateRequest",
				"type": "object"
			},
			"CustomerSecretImportItem": {
				"properties": {
					"key_name": {
						"type": "string"
					},
					"value": {
						"format": "password",
						"type": "string"
					}
				},
				"required": [
					"key_name",
					"value"
				],
				"title": "CustomerSecretImportItem",
				"type": "object"
			},
			"CustomerWebhookDeliveryKind": {
				"description": "Source kind for one customer webhook delivery row.",
				"enum": [
					"event",
					"test"
				],
				"title": "CustomerWebhookDeliveryKind",
				"type": "string"
			},
			"CustomerWebhookDeliveryListResponse": {
				"properties": {
					"deliveries": {
						"items": {
							"$ref": "#/components/schemas/CustomerWebhookDeliveryRead"
						},
						"type": "array"
					}
				},
				"required": [
					"deliveries"
				],
				"title": "CustomerWebhookDeliveryListResponse",
				"type": "object"
			},
			"CustomerWebhookDeliveryRead": {
				"properties": {
					"attempts": {
						"type": "integer"
					},
					"coding_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"customer_id": {
						"format": "uuid",
						"type": "string"
					},
					"delivered_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"delivery_kind": {
						"$ref": "#/components/schemas/CustomerWebhookDeliveryKind"
					},
					"endpoint_id": {
						"format": "uuid",
						"type": "string"
					},
					"event_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"event_name": {
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"last_error": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"next_retry_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"response_body_excerpt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"response_status": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"$ref": "#/components/schemas/CodingWebhookDeliveryStatus"
					},
					"target_url": {
						"type": "string"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"attempts",
					"created_at",
					"customer_id",
					"delivery_kind",
					"endpoint_id",
					"event_name",
					"id",
					"status",
					"target_url",
					"updated_at"
				],
				"title": "CustomerWebhookDeliveryRead",
				"type": "object"
			},
			"CustomerWebhookDeliveryRedeliverResponse": {
				"properties": {
					"delivery": {
						"$ref": "#/components/schemas/CustomerWebhookDeliveryRead"
					}
				},
				"required": [
					"delivery"
				],
				"title": "CustomerWebhookDeliveryRedeliverResponse",
				"type": "object"
			},
			"DnsRecordRead": {
				"properties": {
					"name": {
						"type": "string"
					},
					"type": {
						"type": "string"
					},
					"value": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"type",
					"value"
				],
				"title": "DnsRecordRead",
				"type": "object"
			},
			"DocsSettingsUpdate": {
				"properties": {
					"enabled": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"published": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "DocsSettingsUpdate",
				"type": "object"
			},
			"DocsStatusRead": {
				"properties": {
					"adapter_marker": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"checked_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"commits_since": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"enabled": {
						"type": "boolean"
					},
					"examples_checked": {
						"type": "integer"
					},
					"examples_not_checked": {
						"type": "integer"
					},
					"has_bundle": {
						"type": "boolean"
					},
					"head_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"llms_txt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"mode": {
						"type": "string"
					},
					"public_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"publish_blocked": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"published": {
						"type": "boolean"
					},
					"reference_md": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repo_readable": {
						"type": "boolean"
					},
					"source_tree_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"enabled",
					"examples_checked",
					"examples_not_checked",
					"has_bundle",
					"mode",
					"published",
					"repo_readable"
				],
				"title": "DocsStatusRead",
				"type": "object"
			},
			"DomainAddRequest": {
				"properties": {
					"hostname": {
						"type": "string"
					}
				},
				"required": [
					"hostname"
				],
				"title": "DomainAddRequest",
				"type": "object"
			},
			"DomainRead": {
				"properties": {
					"delete_records": {
						"items": {
							"$ref": "#/components/schemas/DnsRecordRead"
						},
						"type": "array"
					},
					"dns_provider": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"dns_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"domain_connect_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"hostname": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"records": {
						"items": {
							"$ref": "#/components/schemas/DnsRecordRead"
						},
						"type": "array"
					},
					"status": {
						"type": "string"
					}
				},
				"required": [
					"records",
					"status"
				],
				"title": "DomainRead",
				"type": "object"
			},
			"ErrorFrameRead": {
				"properties": {
					"line": {
						"type": "integer"
					},
					"path": {
						"type": "string"
					}
				},
				"required": [
					"line",
					"path"
				],
				"title": "ErrorFrameRead",
				"type": "object"
			},
			"ErrorGroupRead": {
				"properties": {
					"count_7d": {
						"type": "integer"
					},
					"count_total": {
						"type": "integer"
					},
					"fingerprint": {
						"type": "string"
					},
					"first_seen": {
						"type": "string"
					},
					"frames": {
						"items": {
							"$ref": "#/components/schemas/ErrorFrameRead"
						},
						"type": "array"
					},
					"last_seen": {
						"type": "string"
					},
					"message": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					},
					"new_in_live": {
						"type": "boolean"
					},
					"route": {
						"type": "string"
					}
				},
				"required": [
					"count_7d",
					"count_total",
					"fingerprint",
					"first_seen",
					"frames",
					"last_seen",
					"name",
					"new_in_live",
					"route"
				],
				"title": "ErrorGroupRead",
				"type": "object"
			},
			"EvidenceCriterion": {
				"properties": {
					"before_card": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"card": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"criterion_id": {
						"format": "uuid",
						"type": "string"
					},
					"flow": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceFlow"
							},
							{
								"type": "null"
							}
						]
					},
					"flow_missing": {
						"type": "boolean"
					},
					"label": {
						"type": "string"
					},
					"replay": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"surface": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"text": {
						"type": "string"
					}
				},
				"required": [
					"criterion_id",
					"flow_missing",
					"label",
					"text"
				],
				"title": "EvidenceCriterion",
				"type": "object"
			},
			"EvidenceFlow": {
				"properties": {
					"before": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceFlow"
							},
							{
								"type": "null"
							}
						]
					},
					"clip": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"duration_ms": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"failed_step": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"failure": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"poster": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"received": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"steps": {
						"items": {
							"$ref": "#/components/schemas/EvidenceFlowStep"
						},
						"type": "array"
					}
				},
				"required": [
					"status",
					"steps"
				],
				"title": "EvidenceFlow",
				"type": "object"
			},
			"EvidenceFlowStep": {
				"properties": {
					"index": {
						"type": "integer"
					},
					"status": {
						"type": "string"
					},
					"still": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"index",
					"status",
					"title"
				],
				"title": "EvidenceFlowStep",
				"type": "object"
			},
			"EvidenceMedia": {
				"properties": {
					"alt": {
						"type": "string"
					},
					"height": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"kind": {
						"type": "string"
					},
					"truncated": {
						"type": "boolean"
					},
					"url": {
						"type": "string"
					},
					"url_expires_at": {
						"format": "date-time",
						"type": "string"
					},
					"width": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"alt",
					"id",
					"kind",
					"truncated",
					"url",
					"url_expires_at"
				],
				"title": "EvidenceMedia",
				"type": "object"
			},
			"EvidencePage": {
				"properties": {
					"before_desktop": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"before_phone": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"change": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"desktop": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"phone": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/EvidenceMedia"
							},
							{
								"type": "null"
							}
						]
					},
					"route": {
						"type": "string"
					}
				},
				"required": [
					"route"
				],
				"title": "EvidencePage",
				"type": "object"
			},
			"EvidenceUiFix": {
				"properties": {
					"after": {
						"$ref": "#/components/schemas/EvidenceMedia"
					},
					"before": {
						"$ref": "#/components/schemas/EvidenceMedia"
					}
				},
				"required": [
					"after",
					"before"
				],
				"title": "EvidenceUiFix",
				"type": "object"
			},
			"ExternalApiKeyMeResponse": {
				"examples": [
					{
						"customer_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
						"expires_at": null,
						"key_id": "0f1e2d3c-4b5a-4968-8776-655443322110",
						"key_name": "CI deploy bot",
						"scopes": [
							"coding:runs:create",
							"coding:runs:read"
						]
					}
				],
				"properties": {
					"customer_id": {
						"format": "uuid",
						"type": "string"
					},
					"expires_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"key_id": {
						"format": "uuid",
						"type": "string"
					},
					"key_name": {
						"type": "string"
					},
					"scopes": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"customer_id",
					"key_id",
					"key_name",
					"scopes"
				],
				"title": "ExternalApiKeyMeResponse",
				"type": "object"
			},
			"ExternalCodingConnectionAskRead": {
				"properties": {
					"kind": {
						"type": "string"
					},
					"link": {
						"type": "string"
					},
					"names": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"kind",
					"link",
					"names"
				],
				"title": "ExternalCodingConnectionAskRead",
				"type": "object"
			},
			"ExternalCodingFinalResponseRead": {
				"properties": {
					"content": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"error_code": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"message_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"published_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					}
				},
				"required": [
					"status"
				],
				"title": "ExternalCodingFinalResponseRead",
				"type": "object"
			},
			"ExternalCodingHitlFreeTextPolicyRead": {
				"properties": {
					"enabled": {
						"type": "boolean"
					},
					"max_length": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"placeholder": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"required_policy": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"ui_mode": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"enabled"
				],
				"title": "ExternalCodingHitlFreeTextPolicyRead",
				"type": "object"
			},
			"ExternalCodingHitlInputRead": {
				"properties": {
					"context": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"default_assumption": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"default_option_ids": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"free_text": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingHitlFreeTextPolicyRead"
							},
							{
								"type": "null"
							}
						]
					},
					"input_id": {
						"type": "string"
					},
					"kind": {
						"type": "string"
					},
					"options": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingHitlOptionRead"
						},
						"type": "array"
					},
					"prompt": {
						"type": "string"
					},
					"required": {
						"type": "boolean"
					}
				},
				"required": [
					"input_id",
					"kind",
					"prompt",
					"required"
				],
				"title": "ExternalCodingHitlInputRead",
				"type": "object"
			},
			"ExternalCodingHitlOptionRead": {
				"properties": {
					"id": {
						"type": "string"
					},
					"label": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"label"
				],
				"title": "ExternalCodingHitlOptionRead",
				"type": "object"
			},
			"ExternalCodingLandRead": {
				"properties": {
					"can_merge_anyway": {
						"default": false,
						"type": "boolean"
					},
					"commit_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"deploy_status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"head_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"landed_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"live_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"owner_step": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"revert_of_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reverted_by_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"security": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalLandSecurityRead"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					},
					"strategy": {
						"type": "string"
					},
					"verified": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"state",
					"strategy"
				],
				"title": "ExternalCodingLandRead",
				"type": "object"
			},
			"ExternalCodingPendingHitlRequestRead": {
				"properties": {
					"connection": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingConnectionAskRead"
							},
							{
								"type": "null"
							}
						]
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"defaults_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"expires_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"hitl_request_id": {
						"format": "uuid",
						"type": "string"
					},
					"inputs": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingHitlInputRead"
						},
						"type": "array"
					},
					"request_kind": {
						"type": "string"
					},
					"schema_version": {
						"type": "integer"
					},
					"summary": {
						"type": "string"
					},
					"website_details": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/WebsiteApprovalDetails"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"created_at",
					"hitl_request_id",
					"inputs",
					"request_kind",
					"schema_version",
					"summary"
				],
				"title": "ExternalCodingPendingHitlRequestRead",
				"type": "object"
			},
			"ExternalCodingProjectRead": {
				"properties": {
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"default_branch": {
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"large_repo_detected": {
						"type": "boolean"
					},
					"last_head_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"last_synced_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"last_tree_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repo_manifest_generated_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repo_name": {
						"type": "string"
					},
					"repo_owner": {
						"type": "string"
					},
					"repo_size_kb": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"repo_tree_entry_count": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"repo_url": {
						"type": "string"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"created_at",
					"default_branch",
					"id",
					"large_repo_detected",
					"repo_name",
					"repo_owner",
					"repo_url",
					"updated_at"
				],
				"title": "ExternalCodingProjectRead",
				"type": "object"
			},
			"ExternalCodingReviewGateRead": {
				"properties": {
					"artifact_refs": {
						"items": {
							"additionalProperties": true,
							"type": "object"
						},
						"type": "array"
					},
					"blocking": {
						"type": "boolean"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"findings": {
						"items": {
							"additionalProperties": true,
							"type": "object"
						},
						"type": "array"
					},
					"gate_name": {
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"iteration": {
						"type": "integer"
					},
					"reviewed_diff_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reviewed_head_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"$ref": "#/components/schemas/CodingReviewGateStatus"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"artifact_refs",
					"blocking",
					"created_at",
					"findings",
					"gate_name",
					"id",
					"iteration",
					"status",
					"updated_at"
				],
				"title": "ExternalCodingReviewGateRead",
				"type": "object"
			},
			"ExternalCodingRunCreateRequest": {
				"examples": [
					{
						"coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50",
						"external_request_id": "ticket-4812",
						"prompt": "Add a dark mode toggle to the header and remember the choice.",
						"title": "Add a dark mode toggle to the header"
					}
				],
				"properties": {
					"accounts": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"backlog_task_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"base_branch": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"economy": {
						"default": false,
						"type": "boolean"
					},
					"environment_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"external_request_id": {
						"type": "string"
					},
					"image_refs": {
						"default": [],
						"items": {
							"$ref": "#/components/schemas/CodingImageRef"
						},
						"type": "array"
					},
					"local_pickup": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/LocalPickupRef"
							},
							{
								"type": "null"
							}
						]
					},
					"metadata": {
						"additionalProperties": true,
						"type": "object"
					},
					"new_repository": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/NewRepositorySpec"
							},
							{
								"type": "null"
							}
						]
					},
					"parent_coding_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_config": {
						"additionalProperties": true,
						"type": "object"
					},
					"prompt": {
						"type": "string"
					},
					"reference_product": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ReferenceProductSpec"
							},
							{
								"type": "null"
							}
						]
					},
					"requested_budget_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"external_request_id",
					"prompt"
				],
				"title": "ExternalCodingRunCreateRequest",
				"type": "object"
			},
			"ExternalCodingRunCreateResponse": {
				"examples": [
					{
						"created": true,
						"project": {
							"created_at": "2026-10-27T09:00:00Z",
							"default_branch": "main",
							"id": "c2e5f8a1-3b4d-4e6f-8a9b-1c2d3e4f5a6b",
							"large_repo_detected": false,
							"repo_name": "storefront",
							"repo_owner": "acme",
							"repo_url": "https://github.com/acme/storefront",
							"updated_at": "2026-10-27T09:00:00Z"
						},
						"run": {
							"artifact_retention_profile": "standard",
							"autonomy_mode": "review",
							"base_branch": "main",
							"coding_project_id": "c2e5f8a1-3b4d-4e6f-8a9b-1c2d3e4f5a6b",
							"coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50",
							"created_at": "2026-10-27T09:00:00Z",
							"current_phase": "execute",
							"egress_profile": "managed_default",
							"external_request_id": "ticket-4812",
							"id": "3f9c2b7a-6d1e-4c8b-9a2f-1b7e5d4c3a21",
							"pr_url": null,
							"title": "Add a dark mode toggle to the header",
							"updated_at": "2026-10-27T09:04:12Z",
							"validation_iteration": 0
						}
					}
				],
				"properties": {
					"created": {
						"type": "boolean"
					},
					"project": {
						"$ref": "#/components/schemas/ExternalCodingProjectRead"
					},
					"run": {
						"$ref": "#/components/schemas/ExternalCodingRunRead"
					}
				},
				"required": [
					"created",
					"project",
					"run"
				],
				"title": "ExternalCodingRunCreateResponse",
				"type": "object"
			},
			"ExternalCodingRunListResponse": {
				"examples": [
					{
						"next_cursor": null,
						"runs": [
							{
								"artifact_retention_profile": "standard",
								"autonomy_mode": "review",
								"base_branch": "main",
								"coding_project_id": "c2e5f8a1-3b4d-4e6f-8a9b-1c2d3e4f5a6b",
								"coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50",
								"created_at": "2026-10-27T09:00:00Z",
								"current_phase": "execute",
								"egress_profile": "managed_default",
								"external_request_id": "ticket-4812",
								"id": "3f9c2b7a-6d1e-4c8b-9a2f-1b7e5d4c3a21",
								"pr_url": null,
								"title": "Add a dark mode toggle to the header",
								"updated_at": "2026-10-27T09:04:12Z",
								"validation_iteration": 0
							}
						]
					}
				],
				"properties": {
					"next_cursor": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"runs": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingRunRead"
						},
						"type": "array"
					}
				},
				"required": [
					"runs"
				],
				"title": "ExternalCodingRunListResponse",
				"type": "object"
			},
			"ExternalCodingRunLiveResponse": {
				"properties": {
					"activity": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunActivityEventRead"
						},
						"type": "array"
					},
					"brief": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"earliest_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"goal": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalRunGoalRead"
							},
							{
								"type": "null"
							}
						]
					},
					"liveness": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingRunLivenessRead"
							},
							{
								"type": "null"
							}
						]
					},
					"pause": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingRunPauseRead"
							},
							{
								"type": "null"
							}
						]
					},
					"pending_hitl_requests": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingPendingHitlRequestRead"
						},
						"type": "array"
					},
					"steer_messages": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunSteerMessageRead"
						},
						"type": "array"
					},
					"validation": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunValidationCommandRead"
						},
						"type": "array"
					}
				},
				"required": [],
				"title": "ExternalCodingRunLiveResponse",
				"type": "object"
			},
			"ExternalCodingRunLivenessRead": {
				"properties": {
					"attempt": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"criteria_attention": {
						"default": false,
						"type": "boolean"
					},
					"current_activity": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"last_activity_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"max_attempts": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source_type": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"enum": [
							"running",
							"waiting_on_approval",
							"waiting_on_input",
							"blocked",
							"stuck",
							"terminal",
							"waiting_on_review",
							"queued"
						],
						"type": "string"
					},
					"stuck_detail": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"stuck_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"state"
				],
				"title": "ExternalCodingRunLivenessRead",
				"type": "object"
			},
			"ExternalCodingRunPauseRead": {
				"properties": {
					"cause": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"kind": {
						"description": "Why the run is paused. Current values: \"usage_exhausted\" (provider usage window exhausted; auto-resumes at resume_at when known), \"credential_disconnected\" (a connected credential needs reconnecting), and \"infra_fault\" (a fault on our side; see cause). Additional kinds may be added over time; clients must tolerate unknown values and degrade to a generic paused state.",
						"type": "string"
					},
					"resume_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"resume_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"kind"
				],
				"title": "ExternalCodingRunPauseRead",
				"type": "object"
			},
			"ExternalCodingRunQueuedRead": {
				"properties": {
					"next_retry_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"position": {
						"type": "integer"
					}
				},
				"required": [
					"position"
				],
				"title": "ExternalCodingRunQueuedRead",
				"type": "object"
			},
			"ExternalCodingRunRead": {
				"properties": {
					"api_value_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"artifact_retention_profile": {
						"type": "string"
					},
					"attention": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalRunAttentionRead"
							},
							{
								"type": "null"
							}
						]
					},
					"auto_run_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"autonomy_mode": {
						"default": "review",
						"type": "string"
					},
					"base_branch": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"cap_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"chain": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalSliceChainRead"
							},
							{
								"type": "null"
							}
						]
					},
					"charged_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"coding_project_id": {
						"format": "uuid",
						"type": "string"
					},
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"current_activity_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"current_activity_since": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"current_activity_target": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"current_phase": {
						"type": "string"
					},
					"delivery_status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"economy": {
						"default": false,
						"type": "boolean"
					},
					"effective_resolution_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"egress_profile": {
						"type": "string"
					},
					"environment_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"external_request_id": {
						"type": "string"
					},
					"failure_origin": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"harness_kind": {
						"description": "The harness chosen in the run's policy_config, if any; null when no explicit choice was made. Open set \u2014 clients must tolerate unknown values.",
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"ingress": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalRunIngressRead"
							},
							{
								"type": "null"
							}
						]
					},
					"land": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingLandRead"
							},
							{
								"type": "null"
							}
						]
					},
					"last_stage": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"last_stage_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"lesson": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/RunLessonRead"
							},
							{
								"type": "null"
							}
						]
					},
					"memory_given": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/MemoryGivenRead"
							},
							{
								"type": "null"
							}
						]
					},
					"origin": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"parent_coding_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_contract_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_resolved_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_number": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"preview_urls": {
						"additionalProperties": true,
						"type": "object"
					},
					"prompt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pull_requests": {
						"oneOf": [
							{
								"items": {
									"$ref": "#/components/schemas/ExternalRunPrRead"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"readiness": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalRunReadiness"
							},
							{
								"type": "null"
							}
						]
					},
					"redrive_count": {
						"default": 0,
						"type": "integer"
					},
					"refund_under_review": {
						"default": false,
						"type": "boolean"
					},
					"refunded_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"result_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"schedule_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"schedule_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"service_coverage": {
						"items": {
							"additionalProperties": true,
							"type": "object"
						},
						"type": "array"
					},
					"site_build": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"spec_review_mode": {
						"default": "auto",
						"type": "string"
					},
					"stack_layer": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"stack_total": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"stopped": {
						"default": false,
						"type": "boolean"
					},
					"subscription_share": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalSubscriptionShareRead"
							},
							{
								"type": "null"
							}
						]
					},
					"terminal_summary": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"thread_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					},
					"validated_head_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"validation_iteration": {
						"type": "integer"
					},
					"work_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"artifact_retention_profile",
					"coding_project_id",
					"created_at",
					"current_phase",
					"egress_profile",
					"external_request_id",
					"id",
					"updated_at",
					"validation_iteration"
				],
				"title": "ExternalCodingRunRead",
				"type": "object"
			},
			"ExternalCodingRunRenameRequest": {
				"properties": {
					"title": {
						"type": "string"
					}
				},
				"required": [
					"title"
				],
				"title": "ExternalCodingRunRenameRequest",
				"type": "object"
			},
			"ExternalCodingRunRespondRequest": {
				"properties": {
					"entries": {
						"items": {
							"$ref": "#/components/schemas/CodingHitlResponseEntry"
						},
						"type": "array"
					},
					"hitl_request_id": {
						"format": "uuid",
						"type": "string"
					},
					"idempotency_key": {
						"type": "string"
					}
				},
				"required": [
					"entries",
					"hitl_request_id",
					"idempotency_key"
				],
				"title": "ExternalCodingRunRespondRequest",
				"type": "object"
			},
			"ExternalCodingRunRespondResponse": {
				"properties": {
					"accepted": {
						"type": "boolean"
					},
					"deduped": {
						"default": false,
						"type": "boolean"
					},
					"hitl_request_id": {
						"format": "uuid",
						"type": "string"
					},
					"resolved": {
						"type": "boolean"
					},
					"run": {
						"$ref": "#/components/schemas/ExternalCodingRunRead"
					}
				},
				"required": [
					"accepted",
					"hitl_request_id",
					"resolved",
					"run"
				],
				"title": "ExternalCodingRunRespondResponse",
				"type": "object"
			},
			"ExternalCodingRunStatusResponse": {
				"examples": [
					{
						"has_proposed_diff": false,
						"pause": null,
						"pending_hitl_requests": [],
						"project": {
							"created_at": "2026-10-27T09:00:00Z",
							"default_branch": "main",
							"id": "c2e5f8a1-3b4d-4e6f-8a9b-1c2d3e4f5a6b",
							"large_repo_detected": false,
							"repo_name": "storefront",
							"repo_owner": "acme",
							"repo_url": "https://github.com/acme/storefront",
							"updated_at": "2026-10-27T09:00:00Z"
						},
						"run": {
							"artifact_retention_profile": "standard",
							"autonomy_mode": "review",
							"base_branch": "main",
							"coding_project_id": "c2e5f8a1-3b4d-4e6f-8a9b-1c2d3e4f5a6b",
							"coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50",
							"created_at": "2026-10-27T09:00:00Z",
							"current_phase": "execute",
							"egress_profile": "managed_default",
							"external_request_id": "ticket-4812",
							"id": "3f9c2b7a-6d1e-4c8b-9a2f-1b7e5d4c3a21",
							"pr_url": null,
							"title": "Add a dark mode toggle to the header",
							"updated_at": "2026-10-27T09:04:12Z",
							"validation_iteration": 0
						},
						"stop_requested": false
					}
				],
				"properties": {
					"activity": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunActivityEventRead"
						},
						"type": "array"
					},
					"artifact_bundle": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/CodingRunArtifactBundleRead"
							},
							{
								"type": "null"
							}
						]
					},
					"brief": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"bug_scan_stats": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"criteria": {
						"items": {
							"$ref": "#/components/schemas/CodingCriterionRead"
						},
						"type": "array"
					},
					"criteria_agreement": {
						"default": "pending",
						"type": "string"
					},
					"delivered_diff_stats": {
						"oneOf": [
							{
								"additionalProperties": {
									"type": "integer"
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"engineering_plan": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalEngineeringPlanRead"
							},
							{
								"type": "null"
							}
						]
					},
					"evidence": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ChangeEvidence"
							},
							{
								"type": "null"
							}
						]
					},
					"final_response": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingFinalResponseRead"
							},
							{
								"type": "null"
							}
						]
					},
					"goal": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalRunGoalRead"
							},
							{
								"type": "null"
							}
						]
					},
					"has_proposed_diff": {
						"default": false,
						"type": "boolean"
					},
					"linked_runs": {
						"oneOf": [
							{
								"items": {
									"$ref": "#/components/schemas/ExternalLinkedRunRead"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"liveness": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingRunLivenessRead"
							},
							{
								"type": "null"
							}
						]
					},
					"paid_by": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalRunPaidByRead"
							},
							{
								"type": "null"
							}
						]
					},
					"pause": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingRunPauseRead"
							},
							{
								"type": "null"
							}
						]
					},
					"pending_facts": {
						"items": {
							"$ref": "#/components/schemas/ExternalPendingFactRead"
						},
						"type": "array"
					},
					"pending_hitl_requests": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingPendingHitlRequestRead"
						},
						"type": "array"
					},
					"project": {
						"$ref": "#/components/schemas/ExternalCodingProjectRead"
					},
					"queued": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalCodingRunQueuedRead"
							},
							{
								"type": "null"
							}
						]
					},
					"review_gates": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingReviewGateRead"
						},
						"type": "array"
					},
					"run": {
						"$ref": "#/components/schemas/ExternalCodingRunRead"
					},
					"session_approvals": {
						"items": {
							"$ref": "#/components/schemas/ExternalSessionApprovalRead"
						},
						"type": "array"
					},
					"spec_review": {
						"$ref": "#/components/schemas/ExternalSpecReviewRead"
					},
					"spec_review_expires_at": {
						"oneOf": [
							{
								"type": "string"
							}
						]
					},
					"spec_review_wait_until": {
						"oneOf": [
							{
								"type": "string"
							}
						]
					},
					"steer_messages": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunSteerMessageRead"
						},
						"type": "array"
					},
					"stop_requested": {
						"default": false,
						"type": "boolean"
					},
					"tools_used": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunToolUsedRead"
						},
						"type": "array"
					},
					"validations": {
						"items": {
							"$ref": "#/components/schemas/ExternalCodingValidationRunRead"
						},
						"type": "array"
					}
				},
				"required": [
					"project",
					"run"
				],
				"title": "ExternalCodingRunStatusResponse",
				"type": "object"
			},
			"ExternalCodingValidationRunRead": {
				"properties": {
					"artifacts": {
						"items": {
							"$ref": "#/components/schemas/CodingArtifactRefRead"
						},
						"type": "array"
					},
					"blocking": {
						"type": "boolean"
					},
					"category": {
						"type": "string"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"duration_ms": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"errors": {
						"items": {
							"additionalProperties": true,
							"type": "object"
						},
						"type": "array"
					},
					"failed_count": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"findings": {
						"items": {
							"additionalProperties": true,
							"type": "object"
						},
						"type": "array"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"is_baseline_delta": {
						"default": false,
						"type": "boolean"
					},
					"iteration": {
						"type": "integer"
					},
					"passed_count": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"skipped_count": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"$ref": "#/components/schemas/CodingValidationStatus"
					},
					"tree_sha": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					},
					"validator_name": {
						"type": "string"
					}
				},
				"required": [
					"artifacts",
					"blocking",
					"category",
					"created_at",
					"errors",
					"findings",
					"id",
					"iteration",
					"status",
					"updated_at",
					"validator_name"
				],
				"title": "ExternalCodingValidationRunRead",
				"type": "object"
			},
			"ExternalCriterionEditRequest": {
				"properties": {
					"base_round": {
						"minimum": 1.0,
						"type": "integer"
					},
					"text": {
						"type": "string"
					}
				},
				"required": [
					"base_round",
					"text"
				],
				"title": "ExternalCriterionEditRequest",
				"type": "object"
			},
			"ExternalEngineeringPlanRead": {
				"properties": {
					"annotations": {
						"items": {
							"$ref": "#/components/schemas/ExternalPlanAnnotationRead"
						},
						"type": "array"
					},
					"plan_sha256": {
						"type": "string"
					},
					"previous_plan_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"previous_revision": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"revision": {
						"type": "integer"
					},
					"submitted_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"text": {
						"type": "string"
					},
					"truncated": {
						"default": false,
						"type": "boolean"
					}
				},
				"required": [
					"plan_sha256",
					"revision",
					"text"
				],
				"title": "ExternalEngineeringPlanRead",
				"type": "object"
			},
			"ExternalEnvironmentListResponse": {
				"properties": {
					"environments": {
						"items": {
							"$ref": "#/components/schemas/ExternalEnvironmentRead"
						},
						"type": "array"
					}
				},
				"required": [
					"environments"
				],
				"title": "ExternalEnvironmentListResponse",
				"type": "object"
			},
			"ExternalEnvironmentRead": {
				"properties": {
					"default": {
						"type": "boolean"
					},
					"name": {
						"type": "string"
					},
					"role": {
						"type": "string"
					},
					"slug": {
						"type": "string"
					}
				},
				"required": [
					"default",
					"name",
					"role",
					"slug"
				],
				"title": "ExternalEnvironmentRead",
				"type": "object"
			},
			"ExternalErrorCode": {
				"description": "Stable error codes surfaced to public CaaS clients.",
				"enum": [
					"BUDGET_EXHAUSTED",
					"QUOTA_EXCEEDED",
					"RUN_CONCURRENCY_LIMIT",
					"CUSTOMER_DISABLED",
					"REPO_NOT_BOUND",
					"IDEMPOTENCY_REPLAY",
					"CONFLICT",
					"MISSION_BUSY_RETRY",
					"HITL_REQUEST_CONFLICT",
					"HITL_REQUEST_SETTLED",
					"RUN_TERMINATED_BEFORE_RESPONSE",
					"INVALID_POLICY",
					"INVALID_SCOPE",
					"RATE_LIMITED",
					"INSTALLATION_INCOMPLETE",
					"SUBSCRIPTION_USAGE_UNAVAILABLE",
					"INVALID_TOKEN",
					"ROLE_REQUIRED",
					"PLAN_UPGRADE_REQUIRED",
					"EMAIL_MISMATCH",
					"EXPIRED_TOKEN",
					"NOT_FOUND",
					"OVERSCOPE_ACK_REQUIRED",
					"VERIFY_FAILED",
					"PUBLISH_IN_FLIGHT",
					"PUBLISH_UNSUPPORTED_REPO",
					"PUBLICATION_NOT_LIVE",
					"NO_APP_DATA",
					"FEATURE_REQUESTS_NEEDS_MEMBERS",
					"EMPTY_UPDATE",
					"BAD_CURSOR",
					"HUMAN_APPROVAL_REQUIRED",
					"PROTECTED_PATHS_MANAGED_ONLY",
					"RUN_IN_FLIGHT",
					"TEXT_EDIT_REFUSED",
					"CLI_UPGRADE_REQUIRED",
					"PRODUCTION_STEP_UP_REQUIRED",
					"PRICES_UPDATING",
					"GITHUB_UNAVAILABLE",
					"PUBLISH_NOT_SET_UP",
					"VERSION_NOT_DEPLOYED",
					"INTERNAL_ERROR"
				],
				"title": "ExternalErrorCode",
				"type": "string"
			},
			"ExternalLandAccessRead": {
				"properties": {
					"intended": {
						"items": {
							"$ref": "#/components/schemas/ExternalLandIntendedAccess"
						},
						"type": "array"
					},
					"members_see": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"unchecked": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"visitors_add": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"visitors_see": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [],
				"title": "ExternalLandAccessRead",
				"type": "object"
			},
			"ExternalLandHeldDiffResponse": {
				"properties": {
					"expires_at": {
						"format": "date-time",
						"type": "string"
					},
					"head_sha": {
						"type": "string"
					},
					"paths": {
						"items": {
							"$ref": "#/components/schemas/ExternalLandHeldPath"
						},
						"type": "array"
					},
					"reason": {
						"type": "string"
					},
					"run_id": {
						"format": "uuid",
						"type": "string"
					}
				},
				"required": [
					"expires_at",
					"head_sha",
					"paths",
					"reason",
					"run_id"
				],
				"title": "ExternalLandHeldDiffResponse",
				"type": "object"
			},
			"ExternalLandHeldPath": {
				"properties": {
					"binary": {
						"type": "boolean"
					},
					"change": {
						"enum": [
							"added",
							"modified",
							"deleted",
							"typechange"
						],
						"type": "string"
					},
					"diff": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"new_mode": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"old_mode": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"path": {
						"type": "string"
					}
				},
				"required": [
					"binary",
					"change",
					"path"
				],
				"title": "ExternalLandHeldPath",
				"type": "object"
			},
			"ExternalLandIntendedAccess": {
				"properties": {
					"quote": {
						"type": "string"
					},
					"sentence": {
						"type": "string"
					}
				},
				"required": [
					"quote",
					"sentence"
				],
				"title": "ExternalLandIntendedAccess",
				"type": "object"
			},
			"ExternalLandMergeAnywayRequest": {
				"properties": {
					"head_sha": {
						"pattern": "^[0-9a-f]{40}$|^[0-9a-f]{64}$",
						"type": "string"
					}
				},
				"required": [
					"head_sha"
				],
				"title": "ExternalLandMergeAnywayRequest",
				"type": "object"
			},
			"ExternalLandRevertRequest": {
				"properties": {
					"force": {
						"default": false,
						"type": "boolean"
					}
				},
				"required": [],
				"title": "ExternalLandRevertRequest",
				"type": "object"
			},
			"ExternalLandRevertResponse": {
				"properties": {
					"land": {
						"$ref": "#/components/schemas/ExternalCodingLandRead"
					},
					"run": {
						"$ref": "#/components/schemas/ExternalCodingRunRead"
					}
				},
				"required": [
					"land",
					"run"
				],
				"title": "ExternalLandRevertResponse",
				"type": "object"
			},
			"ExternalLandSecurityFixed": {
				"properties": {
					"proved": {
						"type": "boolean"
					},
					"sentence": {
						"type": "string"
					}
				},
				"required": [
					"proved",
					"sentence"
				],
				"title": "ExternalLandSecurityFixed",
				"type": "object"
			},
			"ExternalLandSecurityHeld": {
				"properties": {
					"file": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"proved": {
						"type": "boolean"
					},
					"sentence": {
						"type": "string"
					},
					"severity": {
						"type": "string"
					}
				},
				"required": [
					"proved",
					"sentence",
					"severity"
				],
				"title": "ExternalLandSecurityHeld",
				"type": "object"
			},
			"ExternalLandSecurityRead": {
				"properties": {
					"access": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalLandAccessRead"
							},
							{
								"type": "null"
							}
						]
					},
					"fixed": {
						"items": {
							"$ref": "#/components/schemas/ExternalLandSecurityFixed"
						},
						"type": "array"
					},
					"held": {
						"items": {
							"$ref": "#/components/schemas/ExternalLandSecurityHeld"
						},
						"type": "array"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"state"
				],
				"title": "ExternalLandSecurityRead",
				"type": "object"
			},
			"ExternalLandStepResponse": {
				"examples": [
					{
						"land": {
							"can_merge_anyway": false,
							"head_sha": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
							"state": "landing",
							"strategy": "merge"
						}
					}
				],
				"properties": {
					"land": {
						"$ref": "#/components/schemas/ExternalCodingLandRead"
					}
				},
				"required": [
					"land"
				],
				"title": "ExternalLandStepResponse",
				"type": "object"
			},
			"ExternalLinkedRunRead": {
				"properties": {
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"relation": {
						"type": "string"
					},
					"run_id": {
						"format": "uuid",
						"type": "string"
					},
					"slice_sequence": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"created_at",
					"relation",
					"run_id"
				],
				"title": "ExternalLinkedRunRead",
				"type": "object"
			},
			"ExternalPendingFactRead": {
				"properties": {
					"fact": {
						"type": "string"
					}
				},
				"required": [
					"fact"
				],
				"title": "ExternalPendingFactRead",
				"type": "object"
			},
			"ExternalPlanAnnotationRead": {
				"properties": {
					"agent_response": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"anchor": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalSpecAnchorRead"
							},
							{
								"type": "null"
							}
						]
					},
					"comment": {
						"type": "string"
					},
					"created_at": {
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"in_reply_to": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"plan_revision": {
						"type": "integer"
					},
					"plan_sha256": {
						"type": "string"
					},
					"status": {
						"enum": [
							"submitted",
							"answered",
							"superseded"
						],
						"type": "string"
					},
					"suggested_text": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"type": {
						"enum": [
							"comment",
							"suggest_edit",
							"flag_remove",
							"global"
						],
						"type": "string"
					}
				},
				"required": [
					"comment",
					"created_at",
					"id",
					"plan_revision",
					"plan_sha256",
					"status",
					"type"
				],
				"title": "ExternalPlanAnnotationRead",
				"type": "object"
			},
			"ExternalPlanRequestChangesRequest": {
				"examples": [
					{
						"idempotency_key": "plan-review-4812-1",
						"overall_comment": "Store the preference in a cookie, not localStorage.",
						"plan_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
					}
				],
				"properties": {
					"annotations": {
						"items": {
							"$ref": "#/components/schemas/PlanAnnotationInput"
						},
						"type": "array"
					},
					"idempotency_key": {
						"maxLength": 160,
						"minLength": 1,
						"type": "string"
					},
					"overall_comment": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"plan_sha256": {
						"pattern": "^[0-9a-f]{64}$",
						"type": "string"
					}
				},
				"required": [
					"idempotency_key",
					"plan_sha256"
				],
				"title": "ExternalPlanRequestChangesRequest",
				"type": "object"
			},
			"ExternalPlanTextRead": {
				"properties": {
					"plan_sha256": {
						"type": "string"
					},
					"revision": {
						"type": "integer"
					},
					"text": {
						"type": "string"
					}
				},
				"required": [
					"plan_sha256",
					"revision",
					"text"
				],
				"title": "ExternalPlanTextRead",
				"type": "object"
			},
			"ExternalRepositoryListResponse": {
				"properties": {
					"repos": {
						"items": {
							"$ref": "#/components/schemas/CodingRepositoryRead"
						},
						"type": "array"
					}
				},
				"required": [
					"repos"
				],
				"title": "ExternalRepositoryListResponse",
				"type": "object"
			},
			"ExternalRunActivityEventRead": {
				"properties": {
					"approx_ts": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"attempt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"family": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"hunk": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"kind": {
						"type": "string"
					},
					"label": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"lines_added": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"lines_removed": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"ms": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"ok": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"op": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"parent": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"phase": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"ref": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"tail": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"target": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"text": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"tokens": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"ts": {
						"format": "date-time",
						"type": "string"
					},
					"wait": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"id",
					"kind",
					"ts"
				],
				"title": "ExternalRunActivityEventRead",
				"type": "object"
			},
			"ExternalRunAttentionRead": {
				"properties": {
					"attention_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"attention_class": {
						"type": "integer"
					},
					"note": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pause_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"resume_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					},
					"state_entered_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"unread": {
						"default": false,
						"type": "boolean"
					}
				},
				"required": [
					"attention_class",
					"state"
				],
				"title": "ExternalRunAttentionRead",
				"type": "object"
			},
			"ExternalRunGoalLayerRead": {
				"properties": {
					"files": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"sequence": {
						"type": "integer"
					},
					"status": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"sequence",
					"status",
					"title"
				],
				"title": "ExternalRunGoalLayerRead",
				"type": "object"
			},
			"ExternalRunGoalRead": {
				"properties": {
					"current_detail": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"layers": {
						"oneOf": [
							{
								"items": {
									"$ref": "#/components/schemas/ExternalRunGoalLayerRead"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"repair_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repair_round": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"steps": {
						"items": {
							"$ref": "#/components/schemas/ExternalRunGoalStepRead"
						},
						"type": "array"
					}
				},
				"required": [
					"steps"
				],
				"title": "ExternalRunGoalRead",
				"type": "object"
			},
			"ExternalRunGoalStepRead": {
				"properties": {
					"key": {
						"type": "string"
					},
					"label": {
						"type": "string"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"key",
					"label",
					"state"
				],
				"title": "ExternalRunGoalStepRead",
				"type": "object"
			},
			"ExternalRunIngressRead": {
				"properties": {
					"category": {
						"type": "string"
					},
					"excerpt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"inherited": {
						"default": false,
						"type": "boolean"
					},
					"source": {
						"type": "string"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"category",
					"source"
				],
				"title": "ExternalRunIngressRead",
				"type": "object"
			},
			"ExternalRunPaidByRead": {
				"properties": {
					"sources": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"subscription_provider": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"sources"
				],
				"title": "ExternalRunPaidByRead",
				"type": "object"
			},
			"ExternalRunPrRead": {
				"properties": {
					"base_branch": {
						"type": "string"
					},
					"branch": {
						"type": "string"
					},
					"draft": {
						"type": "boolean"
					},
					"feature_key": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_number": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"sequence": {
						"type": "integer"
					}
				},
				"required": [
					"base_branch",
					"branch",
					"draft",
					"sequence"
				],
				"title": "ExternalRunPrRead",
				"type": "object"
			},
			"ExternalRunProposedDiffResponse": {
				"properties": {
					"truncated": {
						"default": false,
						"type": "boolean"
					},
					"unified_diff": {
						"type": "string"
					}
				},
				"required": [
					"unified_diff"
				],
				"title": "ExternalRunProposedDiffResponse",
				"type": "object"
			},
			"ExternalRunReadiness": {
				"properties": {
					"clarifying_questions": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"readiness": {
						"type": "string"
					}
				},
				"required": [
					"clarifying_questions",
					"readiness"
				],
				"title": "ExternalRunReadiness",
				"type": "object"
			},
			"ExternalRunSteerCreate": {
				"examples": [
					{
						"message": "Use the existing ThemeContext instead of adding a new store."
					}
				],
				"properties": {
					"message": {
						"type": "string"
					},
					"ui_target": {
						"oneOf": [
							{
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"message"
				],
				"title": "ExternalRunSteerCreate",
				"type": "object"
			},
			"ExternalRunSteerMessageRead": {
				"properties": {
					"applied_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"body": {
						"type": "string"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"orphaned_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"body",
					"created_at",
					"id"
				],
				"title": "ExternalRunSteerMessageRead",
				"type": "object"
			},
			"ExternalRunSteerResponse": {
				"examples": [
					{
						"accepted": true,
						"steer_message": {
							"applied_at": null,
							"body": "Use the existing ThemeContext instead of adding a new store.",
							"created_at": "2026-10-27T09:00:00Z",
							"id": "6c5b4a39-2817-4f6e-8d5c-4b3a29180716"
						}
					}
				],
				"properties": {
					"accepted": {
						"default": true,
						"type": "boolean"
					},
					"steer_message": {
						"$ref": "#/components/schemas/ExternalRunSteerMessageRead"
					}
				},
				"required": [
					"steer_message"
				],
				"title": "ExternalRunSteerResponse",
				"type": "object"
			},
			"ExternalRunToolUsedRead": {
				"properties": {
					"calls": {
						"default": 0,
						"type": "integer"
					},
					"errors": {
						"default": 0,
						"type": "integer"
					},
					"kind": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"state": {
						"type": "string"
					},
					"tool_id": {
						"format": "uuid",
						"type": "string"
					}
				},
				"required": [
					"kind",
					"name",
					"state",
					"tool_id"
				],
				"title": "ExternalRunToolUsedRead",
				"type": "object"
			},
			"ExternalRunValidationCommandRead": {
				"properties": {
					"cwd": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"p50_s": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"cwd",
					"name",
					"state"
				],
				"title": "ExternalRunValidationCommandRead",
				"type": "object"
			},
			"ExternalSecretImportRequest": {
				"properties": {
					"acknowledge_risk": {
						"default": false,
						"type": "boolean"
					},
					"environment": {
						"pattern": "^[a-z][a-z0-9-]{0,31}$",
						"type": "string"
					},
					"items": {
						"items": {
							"$ref": "#/components/schemas/CustomerSecretImportItem"
						},
						"maxItems": 200,
						"minItems": 1,
						"type": "array"
					},
					"repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"environment",
					"items"
				],
				"title": "ExternalSecretImportRequest",
				"type": "object"
			},
			"ExternalSecretListResponse": {
				"properties": {
					"secrets": {
						"items": {
							"$ref": "#/components/schemas/ExternalSecretRead"
						},
						"type": "array"
					}
				},
				"required": [
					"secrets"
				],
				"title": "ExternalSecretListResponse",
				"type": "object"
			},
			"ExternalSecretPutRequest": {
				"examples": [
					{
						"description": "Stripe test key",
						"kind": "env",
						"value": "sk_test_example"
					}
				],
				"properties": {
					"acknowledge_risk": {
						"default": false,
						"type": "boolean"
					},
					"description": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"environment": {
						"oneOf": [
							{
								"pattern": "^[a-z][a-z0-9-]{0,31}$",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"kind": {
						"default": "env",
						"enum": [
							"env",
							"service"
						],
						"type": "string"
					},
					"repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"value": {
						"format": "password",
						"type": "string"
					}
				},
				"required": [
					"value"
				],
				"title": "ExternalSecretPutRequest",
				"type": "object"
			},
			"ExternalSecretRead": {
				"properties": {
					"delivery": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"description": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"environment": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"expires_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"key_name": {
						"type": "string"
					},
					"kind": {
						"type": "string"
					},
					"last_resolved_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"last_verified_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"recipe_key": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"updated_at": {
						"type": "string"
					},
					"verified_account": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"verify_status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"key_name",
					"kind",
					"updated_at"
				],
				"title": "ExternalSecretRead",
				"type": "object"
			},
			"ExternalSecretResolveRequest": {
				"properties": {
					"environment": {
						"oneOf": [
							{
								"pattern": "^[a-z][a-z0-9-]{0,31}$",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"names": {
						"maxItems": 500,
						"minItems": 1,
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"production_grant": {
						"oneOf": [
							{
								"maxLength": 256,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "ExternalSecretResolveRequest",
				"type": "object"
			},
			"ExternalSecretResolveResponse": {
				"properties": {
					"environment": {
						"type": "string"
					},
					"role": {
						"type": "string"
					},
					"values": {
						"additionalProperties": {
							"format": "password",
							"type": "string"
						},
						"type": "object"
					}
				},
				"required": [
					"environment",
					"role",
					"values"
				],
				"title": "ExternalSecretResolveResponse",
				"type": "object"
			},
			"ExternalSecretResponse": {
				"examples": [
					{
						"secret": {
							"description": "Stripe test key",
							"key_name": "STRIPE_SECRET_KEY",
							"kind": "env",
							"updated_at": "2026-10-27T09:00:00Z"
						},
						"verify_detail": null
					}
				],
				"properties": {
					"secret": {
						"$ref": "#/components/schemas/ExternalSecretRead"
					},
					"verify_detail": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"secret"
				],
				"title": "ExternalSecretResponse",
				"type": "object"
			},
			"ExternalSessionApprovalRead": {
				"properties": {
					"action_class": {
						"type": "string"
					},
					"approved_at": {
						"format": "date-time",
						"type": "string"
					},
					"domain": {
						"type": "string"
					},
					"expires_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"action_class",
					"approved_at",
					"domain",
					"expires_at"
				],
				"title": "ExternalSessionApprovalRead",
				"type": "object"
			},
			"ExternalSliceChainRead": {
				"properties": {
					"root_run_id": {
						"type": "string"
					},
					"sequence": {
						"type": "integer"
					},
					"slices": {
						"items": {
							"$ref": "#/components/schemas/ExternalSliceRead"
						},
						"type": "array"
					},
					"total": {
						"type": "integer"
					}
				},
				"required": [
					"root_run_id",
					"sequence",
					"total"
				],
				"title": "ExternalSliceChainRead",
				"type": "object"
			},
			"ExternalSliceRead": {
				"properties": {
					"feature_key": {
						"type": "string"
					},
					"run_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"sequence": {
						"type": "integer"
					},
					"state": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"feature_key",
					"sequence",
					"state",
					"title"
				],
				"title": "ExternalSliceRead",
				"type": "object"
			},
			"ExternalSpecAnchorRead": {
				"properties": {
					"anchor_prefix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"anchor_suffix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"char_end": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"char_start": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"quote": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"resolved_end": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"resolved_start": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"oneOf": [
							{
								"enum": [
									"exact",
									"fuzzy",
									"outdated",
									"target_removed"
								],
								"type": "string"
							}
						]
					}
				},
				"required": [],
				"title": "ExternalSpecAnchorRead",
				"type": "object"
			},
			"ExternalSpecAnnotationRead": {
				"properties": {
					"addressed": {
						"default": false,
						"type": "boolean"
					},
					"addressed_in_round": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"agent_response": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"anchor": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalSpecAnchorRead"
							},
							{
								"type": "null"
							}
						]
					},
					"comment": {
						"type": "string"
					},
					"criterion_key": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							}
						]
					},
					"in_reply_to": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"oneOf": [
							{
								"enum": [
									"draft",
									"submitted",
									"addressed",
									"dismissed",
									"resolved"
								],
								"type": "string"
							}
						]
					},
					"suggested_text": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"target": {
						"enum": [
							"brief",
							"goal",
							"criterion"
						],
						"type": "string"
					},
					"type": {
						"oneOf": [
							{
								"enum": [
									"comment",
									"suggest_edit",
									"flag_remove",
									"global"
								],
								"type": "string"
							}
						]
					},
					"updated_at": {
						"oneOf": [
							{
								"type": "string"
							}
						]
					}
				},
				"required": [
					"comment",
					"target"
				],
				"title": "ExternalSpecAnnotationRead",
				"type": "object"
			},
			"ExternalSpecCriterionSnapshotRead": {
				"properties": {
					"criterion_key": {
						"format": "uuid",
						"type": "string"
					},
					"key": {
						"type": "string"
					},
					"locked": {
						"oneOf": [
							{
								"type": "boolean"
							}
						]
					},
					"text": {
						"type": "string"
					}
				},
				"required": [
					"criterion_key",
					"key",
					"text"
				],
				"title": "ExternalSpecCriterionSnapshotRead",
				"type": "object"
			},
			"ExternalSpecRequestChangesRequest": {
				"examples": [
					{
						"base_round": 1,
						"idempotency_key": "spec-review-4812-1",
						"overall_comment": "Keep the toggle in the header only; no settings page."
					}
				],
				"properties": {
					"annotations": {
						"items": {
							"$ref": "#/components/schemas/SpecAnnotationInput"
						},
						"type": "array"
					},
					"base_round": {
						"minimum": 1.0,
						"type": "integer"
					},
					"idempotency_key": {
						"maxLength": 160,
						"minLength": 1,
						"type": "string"
					},
					"overall_comment": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"base_round",
					"idempotency_key"
				],
				"title": "ExternalSpecRequestChangesRequest",
				"type": "object"
			},
			"ExternalSpecReviewRead": {
				"properties": {
					"acceptance_authoring_model": {
						"oneOf": [
							{
								"type": "string"
							}
						]
					},
					"annotations": {
						"items": {
							"$ref": "#/components/schemas/ExternalSpecAnnotationRead"
						},
						"type": "array"
					},
					"current_snapshot": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalSpecSnapshotRead"
							},
							{
								"type": "null"
							}
						]
					},
					"previous_snapshot": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ExternalSpecSnapshotRead"
							},
							{
								"type": "null"
							}
						]
					},
					"revise_failed": {
						"default": false,
						"type": "boolean"
					},
					"revising": {
						"default": false,
						"type": "boolean"
					},
					"round": {
						"type": "integer"
					}
				},
				"required": [
					"round"
				],
				"title": "ExternalSpecReviewRead",
				"type": "object"
			},
			"ExternalSpecSnapshotRead": {
				"properties": {
					"acceptance_criteria": {
						"items": {
							"$ref": "#/components/schemas/ExternalSpecCriterionSnapshotRead"
						},
						"type": "array"
					},
					"goal": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"round": {
						"type": "integer"
					}
				},
				"required": [
					"round"
				],
				"title": "ExternalSpecSnapshotRead",
				"type": "object"
			},
			"ExternalSubscriptionShareRead": {
				"properties": {
					"account_label": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"final": {
						"type": "boolean"
					},
					"overage": {
						"type": "boolean"
					},
					"pct": {
						"type": "number"
					},
					"provider": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"window": {
						"type": "string"
					}
				},
				"required": [
					"final",
					"overage",
					"pct",
					"window"
				],
				"title": "ExternalSubscriptionShareRead",
				"type": "object"
			},
			"GitHubDeploysRead": {
				"properties": {
					"environments": {
						"items": {
							"$ref": "#/components/schemas/GitHubEnvironmentDeploy"
						},
						"type": "array"
					},
					"packages": {
						"items": {
							"$ref": "#/components/schemas/GitHubPackage"
						},
						"type": "array"
					},
					"release": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/GitHubRelease"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"environments",
					"packages"
				],
				"title": "GitHubDeploysRead",
				"type": "object"
			},
			"GitHubEnvironmentDeploy": {
				"properties": {
					"at": {
						"type": "string"
					},
					"description": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"log_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					},
					"sha": {
						"type": "string"
					},
					"state": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"at",
					"name",
					"sha"
				],
				"title": "GitHubEnvironmentDeploy",
				"type": "object"
			},
			"GitHubPackage": {
				"properties": {
					"at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					},
					"published_version": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"registry": {
						"type": "string"
					},
					"repo_version": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"unavailable": {
						"type": "boolean"
					},
					"url": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"registry",
					"unavailable",
					"url"
				],
				"title": "GitHubPackage",
				"type": "object"
			},
			"GitHubRelease": {
				"properties": {
					"at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"count": {
						"type": "integer"
					},
					"tag": {
						"type": "string"
					},
					"url": {
						"type": "string"
					}
				},
				"required": [
					"count",
					"tag",
					"url"
				],
				"title": "GitHubRelease",
				"type": "object"
			},
			"GithubPrefillRead": {
				"properties": {
					"flagged": {
						"type": "boolean"
					},
					"origin": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reason": {
						"enum": [
							"noindex",
							"no_sitemap",
							null
						],
						"type": [
							"null",
							"string"
						]
					}
				},
				"required": [
					"flagged"
				],
				"title": "GithubPrefillRead",
				"type": "object"
			},
			"GoogleAccessRead": {
				"properties": {
					"permission": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"property": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"enum": [
							"none",
							"pending",
							"restricted",
							"full",
							"lost"
						],
						"type": "string"
					},
					"verification": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/GoogleVerificationRead"
							},
							{
								"type": "null"
							}
						]
					},
					"workspace_email": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"state"
				],
				"title": "GoogleAccessRead",
				"type": "object"
			},
			"GoogleVerificationRead": {
				"properties": {
					"meta_tag": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"method": {
						"const": "github_pr",
						"type": "string"
					},
					"token": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"method"
				],
				"title": "GoogleVerificationRead",
				"type": "object"
			},
			"GroupListResponse": {
				"properties": {
					"groups": {
						"items": {
							"$ref": "#/components/schemas/GroupRead"
						},
						"type": "array"
					}
				},
				"required": [
					"groups"
				],
				"title": "GroupListResponse",
				"type": "object"
			},
			"GroupPartRead": {
				"properties": {
					"after": {
						"items": {
							"type": "integer"
						},
						"type": "array"
					},
					"brief": {
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"needs": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pr_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"seq": {
						"type": "integer"
					},
					"status": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"after",
					"brief",
					"id",
					"seq",
					"status",
					"title"
				],
				"title": "GroupPartRead",
				"type": "object"
			},
			"GroupPartRequest": {
				"properties": {
					"part": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "GroupPartRequest",
				"type": "object"
			},
			"GroupRead": {
				"properties": {
					"blocked_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"bucket": {
						"type": "string"
					},
					"coding_repository_id": {
						"format": "uuid",
						"type": "string"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"parts": {
						"items": {
							"$ref": "#/components/schemas/GroupPartRead"
						},
						"type": "array"
					},
					"started_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"bucket",
					"coding_repository_id",
					"created_at",
					"id",
					"parts",
					"title"
				],
				"title": "GroupRead",
				"type": "object"
			},
			"ImageIngestRequest": {
				"properties": {
					"content_type": {
						"type": "string"
					},
					"data_base64": {
						"type": "string"
					}
				},
				"required": [
					"content_type",
					"data_base64"
				],
				"title": "ImageIngestRequest",
				"type": "object"
			},
			"ImageIngestResponse": {
				"properties": {
					"object_key": {
						"type": "string"
					}
				},
				"required": [
					"object_key"
				],
				"title": "ImageIngestResponse",
				"type": "object"
			},
			"InviteCreateRequest": {
				"properties": {
					"email": {
						"type": "string"
					},
					"role": {
						"default": "member",
						"type": "string"
					}
				},
				"required": [
					"email"
				],
				"title": "InviteCreateRequest",
				"type": "object"
			},
			"InviteCreateResponse": {
				"properties": {
					"expires_at": {
						"format": "date-time",
						"type": "string"
					},
					"invite_id": {
						"format": "uuid",
						"type": "string"
					},
					"token": {
						"type": "string"
					}
				},
				"required": [
					"expires_at",
					"invite_id",
					"token"
				],
				"title": "InviteCreateResponse",
				"type": "object"
			},
			"InviteRead": {
				"properties": {
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"expires_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"role": {
						"type": "string"
					}
				},
				"required": [
					"created_at",
					"email",
					"expires_at",
					"id",
					"role"
				],
				"title": "InviteRead",
				"type": "object"
			},
			"InvitesListResponse": {
				"properties": {
					"invites": {
						"items": {
							"$ref": "#/components/schemas/InviteRead"
						},
						"type": "array"
					}
				},
				"required": [
					"invites"
				],
				"title": "InvitesListResponse",
				"type": "object"
			},
			"LocalPickupRef": {
				"properties": {
					"base_sha": {
						"type": "string"
					},
					"bundle_url": {
						"type": "string"
					},
					"has_untracked": {
						"type": "boolean"
					},
					"secret_scan_clean": {
						"type": "boolean"
					}
				},
				"required": [
					"base_sha",
					"bundle_url",
					"has_untracked",
					"secret_scan_clean"
				],
				"title": "LocalPickupRef",
				"type": "object"
			},
			"MemberRead": {
				"properties": {
					"connected_plans": {
						"default": [],
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"live_api_keys": {
						"default": 0,
						"type": "integer"
					},
					"role": {
						"type": "string"
					},
					"user_email": {
						"type": "string"
					}
				},
				"required": [
					"created_at",
					"id",
					"role",
					"user_email"
				],
				"title": "MemberRead",
				"type": "object"
			},
			"MembersListResponse": {
				"properties": {
					"members": {
						"items": {
							"$ref": "#/components/schemas/MemberRead"
						},
						"type": "array"
					}
				},
				"required": [
					"members"
				],
				"title": "MembersListResponse",
				"type": "object"
			},
			"MemoryGivenRead": {
				"properties": {
					"answers": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"brief": {
						"type": "boolean"
					},
					"notes": {
						"type": "integer"
					}
				},
				"required": [
					"brief",
					"notes"
				],
				"title": "MemoryGivenRead",
				"type": "object"
			},
			"NewRepositorySpec": {
				"properties": {
					"accounts": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"members_only": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"oneOf": [
							{
								"maxLength": 100,
								"minLength": 1,
								"pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_.-]{0,98}[a-zA-Z0-9])?$",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"scaffold": {
						"default": "blank",
						"enum": [
							"blank",
							"syndai-web"
						],
						"type": "string"
					}
				},
				"required": [],
				"title": "NewRepositorySpec",
				"type": "object"
			},
			"OfferLinkRead": {
				"properties": {
					"anchor": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"surface": {
						"type": "string"
					}
				},
				"required": [
					"surface"
				],
				"title": "OfferLinkRead",
				"type": "object"
			},
			"OutputReview": {
				"properties": {
					"artifact_sha256": {
						"type": "string"
					},
					"issues": {
						"items": {
							"$ref": "#/components/schemas/OutputReviewIssue"
						},
						"maxItems": 8,
						"type": "array"
					},
					"language": {
						"type": "string"
					},
					"model": {
						"type": "string"
					},
					"source_sha256": {
						"type": "string"
					},
					"status": {
						"enum": [
							"clear",
							"issues",
							"unavailable"
						],
						"type": "string"
					},
					"version": {
						"type": "integer"
					}
				},
				"required": [
					"artifact_sha256",
					"issues",
					"language",
					"model",
					"source_sha256",
					"status",
					"version"
				],
				"title": "OutputReview",
				"type": "object"
			},
			"OutputReviewIssue": {
				"properties": {
					"category": {
						"type": "string"
					},
					"evidence": {
						"maxLength": 600,
						"minLength": 1,
						"type": "string"
					},
					"suggestion": {
						"maxLength": 300,
						"minLength": 1,
						"type": "string"
					}
				},
				"required": [
					"category",
					"evidence",
					"suggestion"
				],
				"title": "OutputReviewIssue",
				"type": "object"
			},
			"PlanAnnotationInput": {
				"properties": {
					"anchor_prefix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"anchor_suffix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"char_end": {
						"description": "Unicode code point offset (exclusive) into the full plan text.",
						"maximum": 2147483647,
						"minimum": 1,
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"char_start": {
						"description": "Unicode code point offset into the full plan text.",
						"maximum": 2147483647,
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"comment": {
						"type": "string"
					},
					"in_reply_to": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"quote": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"suggested_text": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"type": {
						"default": "comment",
						"enum": [
							"comment",
							"suggest_edit",
							"flag_remove",
							"global"
						],
						"type": "string"
					}
				},
				"required": [
					"comment"
				],
				"title": "PlanAnnotationInput",
				"type": "object"
			},
			"PolicyDefaultsHistoryEntry": {
				"properties": {
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"config": {
						"additionalProperties": true,
						"type": "object"
					},
					"is_current": {
						"type": "boolean"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					},
					"version": {
						"type": "integer"
					}
				},
				"required": [
					"config",
					"is_current",
					"updated_at",
					"version"
				],
				"title": "PolicyDefaultsHistoryEntry",
				"type": "object"
			},
			"PolicyDefaultsHistoryResponse": {
				"properties": {
					"entries": {
						"items": {
							"$ref": "#/components/schemas/PolicyDefaultsHistoryEntry"
						},
						"type": "array"
					}
				},
				"required": [
					"entries"
				],
				"title": "PolicyDefaultsHistoryResponse",
				"type": "object"
			},
			"PolicyDefaultsPutRequest": {
				"properties": {
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"config": {
						"additionalProperties": true,
						"type": "object"
					}
				},
				"required": [
					"config"
				],
				"title": "PolicyDefaultsPutRequest",
				"type": "object"
			},
			"PolicyDefaultsPutResponse": {
				"properties": {
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					},
					"version": {
						"type": "integer"
					}
				},
				"required": [
					"updated_at",
					"version"
				],
				"title": "PolicyDefaultsPutResponse",
				"type": "object"
			},
			"PolicyDefaultsRead": {
				"properties": {
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"config": {
						"additionalProperties": true,
						"type": "object"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					},
					"version": {
						"type": "integer"
					}
				},
				"required": [
					"config",
					"updated_at",
					"version"
				],
				"title": "PolicyDefaultsRead",
				"type": "object"
			},
			"ProblemDetail": {
				"additionalProperties": true,
				"description": "RFC 7807 problem detail returned for public CaaS errors.",
				"properties": {
					"code": {
						"$ref": "#/components/schemas/ExternalErrorCode"
					},
					"detail": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"default": null,
						"title": "Detail"
					},
					"existing_run_id": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"default": null,
						"title": "Existing Run Id"
					},
					"instance": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"default": null,
						"title": "Instance"
					},
					"status": {
						"title": "Status",
						"type": "integer"
					},
					"title": {
						"title": "Title",
						"type": "string"
					},
					"type": {
						"default": "about:blank",
						"title": "Type",
						"type": "string"
					}
				},
				"required": [
					"title",
					"status",
					"code"
				],
				"title": "ProblemDetail",
				"type": "object"
			},
			"PublicReceiptBrandingView": {
				"properties": {
					"accent_color": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"display_name": {
						"type": "string"
					},
					"logo_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"display_name"
				],
				"title": "PublicReceiptBrandingView",
				"type": "object"
			},
			"PublicReceiptView": {
				"examples": [
					{
						"alg": "EdDSA",
						"issued_at": "2026-10-27T09:00:00Z",
						"jwks_url": "https://syndai.ai/.well-known/syndai-receipt-keys.json",
						"kid": "NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs",
						"payload": {
							"coding_run_id": "3f9c2b7a-6d1e-4c8b-9a2f-1b7e5d4c3a21",
							"criteria": [
								{
									"label": "AC1",
									"verdict": "VERIFIED"
								}
							],
							"issuer": "https://syndai.ai",
							"tree_sha": "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
						},
						"payload_hash": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae",
						"signature": "c2lnbmF0dXJlLWV4YW1wbGU"
					}
				],
				"properties": {
					"alg": {
						"type": "string"
					},
					"issued_at": {
						"format": "date-time",
						"type": "string"
					},
					"jwks_url": {
						"type": "string"
					},
					"kid": {
						"type": "string"
					},
					"payload": {
						"additionalProperties": true,
						"type": "object"
					},
					"payload_hash": {
						"type": "string"
					},
					"signature": {
						"type": "string"
					}
				},
				"required": [
					"alg",
					"issued_at",
					"jwks_url",
					"kid",
					"payload",
					"payload_hash",
					"signature"
				],
				"title": "PublicReceiptView",
				"type": "object"
			},
			"PublicationResponse": {
				"properties": {
					"publication": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/AppPublicationRead"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "PublicationResponse",
				"type": "object"
			},
			"PublicationUpdateRequest": {
				"properties": {
					"auto_redeploy": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"feature_requests": {
						"enum": [
							"off",
							"members",
							"public",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"feature_requests_autostart_on": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"feature_requests_min_votes": {
						"maximum": 50,
						"minimum": 1,
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"hosting_paid_on": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"site_languages_paid_on": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"site_languages_terms": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"taps_counted": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"visitors": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "PublicationUpdateRequest",
				"type": "object"
			},
			"PublishDispatched": {
				"properties": {
					"at": {
						"type": "string"
					},
					"version": {
						"type": "string"
					}
				},
				"required": [
					"at",
					"version"
				],
				"title": "PublishDispatched",
				"type": "object"
			},
			"PublishRead": {
				"properties": {
					"published": {
						"type": "boolean"
					},
					"run": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/PublishRun"
							},
							{
								"type": "null"
							}
						]
					},
					"set_up": {
						"type": "boolean"
					},
					"setup_prompt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"published",
					"set_up"
				],
				"title": "PublishRead",
				"type": "object"
			},
			"PublishRequest": {
				"properties": {
					"version": {
						"maxLength": 64,
						"pattern": "^v?\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?(?!\\n)$",
						"type": "string"
					}
				},
				"required": [
					"version"
				],
				"title": "PublishRequest",
				"type": "object"
			},
			"PublishRun": {
				"properties": {
					"at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"conclusion": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"title": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"status"
				],
				"title": "PublishRun",
				"type": "object"
			},
			"RedeployVersionRequest": {
				"properties": {
					"sha": {
						"maxLength": 64,
						"minLength": 7,
						"type": "string"
					}
				},
				"required": [
					"sha"
				],
				"title": "RedeployVersionRequest",
				"type": "object"
			},
			"ReferenceProductSpec": {
				"properties": {
					"kind": {
						"enum": [
							"url",
							"artifact"
						],
						"type": "string"
					},
					"sign_in": {
						"default": false,
						"type": "boolean"
					},
					"value": {
						"type": "string"
					}
				},
				"required": [
					"kind",
					"value"
				],
				"title": "ReferenceProductSpec",
				"type": "object"
			},
			"ReleaseWorkRead": {
				"properties": {
					"detail": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"error": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"phase": {
						"type": "string"
					},
					"platform": {
						"type": "string"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"phase",
					"platform",
					"state"
				],
				"title": "ReleaseWorkRead",
				"type": "object"
			},
			"RepositoryGithubDeployRead": {
				"properties": {
					"at": {
						"format": "date-time",
						"type": "string"
					},
					"environment": {
						"type": "string"
					},
					"state": {
						"type": "string"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"at",
					"environment",
					"state"
				],
				"title": "RepositoryGithubDeployRead",
				"type": "object"
			},
			"RepositoryStoreRead": {
				"properties": {
					"needs": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"needs_owner": {
						"type": "boolean"
					},
					"state": {
						"type": "string"
					},
					"version": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"needs_owner",
					"state"
				],
				"title": "RepositoryStoreRead",
				"type": "object"
			},
			"RoadmapEditRequest": {
				"properties": {
					"prompt": {
						"oneOf": [
							{
								"maxLength": 200000,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"oneOf": [
							{
								"maxLength": 200,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "RoadmapEditRequest",
				"type": "object"
			},
			"RoadmapTaskRead": {
				"properties": {
					"accepted_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"priority": {
						"type": "integer"
					},
					"prompt": {
						"type": "string"
					},
					"synthesized": {
						"type": "boolean"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"priority",
					"prompt",
					"synthesized",
					"title"
				],
				"title": "RoadmapTaskRead",
				"type": "object"
			},
			"RoleChangeRequest": {
				"properties": {
					"role": {
						"type": "string"
					}
				},
				"required": [
					"role"
				],
				"title": "RoleChangeRequest",
				"type": "object"
			},
			"RunLessonRead": {
				"properties": {
					"text": {
						"type": "string"
					}
				},
				"required": [
					"text"
				],
				"title": "RunLessonRead",
				"type": "object"
			},
			"RunTimelineResponse": {
				"properties": {
					"entries": {
						"items": {
							"$ref": "#/components/schemas/TimelineEntryRead"
						},
						"type": "array"
					}
				},
				"required": [
					"entries"
				],
				"title": "RunTimelineResponse",
				"type": "object"
			},
			"RuntimeAiRead": {
				"properties": {
					"cap_usd": {
						"type": "number"
					},
					"member_cap_usd": {
						"default": 0.0,
						"type": "number"
					},
					"used_usd": {
						"type": "number"
					}
				},
				"required": [
					"cap_usd",
					"used_usd"
				],
				"title": "RuntimeAiRead",
				"type": "object"
			},
			"RuntimeJobRead": {
				"properties": {
					"every": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "integer"
							}
						]
					},
					"last_run_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					}
				},
				"required": [
					"every",
					"name"
				],
				"title": "RuntimeJobRead",
				"type": "object"
			},
			"RuntimeMailRead": {
				"properties": {
					"capped_30d": {
						"type": "integer"
					}
				},
				"required": [
					"capped_30d"
				],
				"title": "RuntimeMailRead",
				"type": "object"
			},
			"RuntimeOutcomesRead": {
				"properties": {
					"orders": {
						"type": "integer"
					},
					"requests": {
						"type": "integer"
					},
					"revenue": {
						"items": {
							"$ref": "#/components/schemas/RuntimeRevenueRead"
						},
						"type": "array"
					},
					"signups": {
						"type": "integer"
					}
				},
				"required": [
					"orders",
					"requests",
					"revenue",
					"signups"
				],
				"title": "RuntimeOutcomesRead",
				"type": "object"
			},
			"RuntimePageRead": {
				"properties": {
					"path": {
						"type": "string"
					},
					"views": {
						"type": "integer"
					}
				},
				"required": [
					"path",
					"views"
				],
				"title": "RuntimePageRead",
				"type": "object"
			},
			"RuntimeRevenueRead": {
				"properties": {
					"amount_minor": {
						"type": "integer"
					},
					"currency": {
						"type": "string"
					}
				},
				"required": [
					"amount_minor",
					"currency"
				],
				"title": "RuntimeRevenueRead",
				"type": "object"
			},
			"RuntimeSinceRead": {
				"properties": {
					"from_day": {
						"format": "date",
						"type": "string"
					},
					"orders": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"taps": {
						"additionalProperties": {
							"type": "integer"
						},
						"type": "object"
					},
					"visits": {
						"type": "integer"
					}
				},
				"required": [
					"from_day",
					"taps",
					"visits"
				],
				"title": "RuntimeSinceRead",
				"type": "object"
			},
			"RuntimeSourceRead": {
				"properties": {
					"key": {
						"type": "string"
					},
					"label": {
						"type": "string"
					},
					"visits": {
						"type": "integer"
					}
				},
				"required": [
					"key",
					"label",
					"visits"
				],
				"title": "RuntimeSourceRead",
				"type": "object"
			},
			"RuntimeTrafficRead": {
				"properties": {
					"days": {
						"items": {
							"$ref": "#/components/schemas/RuntimeVisitDayRead"
						},
						"type": "array"
					},
					"pages": {
						"items": {
							"$ref": "#/components/schemas/RuntimePageRead"
						},
						"type": "array"
					},
					"sources": {
						"items": {
							"$ref": "#/components/schemas/RuntimeSourceRead"
						},
						"type": "array"
					},
					"taps": {
						"additionalProperties": {
							"type": "integer"
						},
						"type": "object"
					},
					"week": {
						"$ref": "#/components/schemas/RuntimeWeekRead"
					}
				},
				"required": [
					"days",
					"sources",
					"taps",
					"week"
				],
				"title": "RuntimeTrafficRead",
				"type": "object"
			},
			"RuntimeVisitDayRead": {
				"properties": {
					"date": {
						"type": "string"
					},
					"visits": {
						"type": "integer"
					}
				},
				"required": [
					"date",
					"visits"
				],
				"title": "RuntimeVisitDayRead",
				"type": "object"
			},
			"RuntimeWeekRead": {
				"properties": {
					"last7": {
						"type": "integer"
					},
					"prior7": {
						"type": "integer"
					}
				},
				"required": [
					"last7",
					"prior7"
				],
				"title": "RuntimeWeekRead",
				"type": "object"
			},
			"ScheduleCreateRequest": {
				"examples": [
					{
						"client_request_id": "weekly-deps-storefront",
						"coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50",
						"prompt": "Update dependencies and fix anything the upgrade breaks.",
						"skip_if_no_new_commits": true,
						"trigger": {
							"expr": "0 9 * * 1",
							"kind": "cron",
							"timezone": "Europe/London"
						}
					}
				],
				"properties": {
					"client_request_id": {
						"oneOf": [
							{
								"maxLength": 160,
								"minLength": 1,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"from_coding_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"occurrence_budget_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_config": {
						"additionalProperties": true,
						"type": "object"
					},
					"prompt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"schedule_paid_on": {
						"default": false,
						"type": "boolean"
					},
					"skip_if_no_new_commits": {
						"default": true,
						"type": "boolean"
					},
					"trigger": {
						"$ref": "#/components/schemas/ScheduleTriggerSpec"
					}
				},
				"required": [
					"trigger"
				],
				"title": "ScheduleCreateRequest",
				"type": "object"
			},
			"ScheduleDetailResponse": {
				"properties": {
					"occurrences": {
						"items": {
							"$ref": "#/components/schemas/ScheduleOccurrenceRead"
						},
						"type": "array"
					},
					"schedule": {
						"$ref": "#/components/schemas/ScheduleRead"
					}
				},
				"required": [
					"occurrences",
					"schedule"
				],
				"title": "ScheduleDetailResponse",
				"type": "object"
			},
			"ScheduleListResponse": {
				"properties": {
					"next_cursor": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"schedules": {
						"items": {
							"$ref": "#/components/schemas/ScheduleRead"
						},
						"type": "array"
					}
				},
				"required": [
					"schedules"
				],
				"title": "ScheduleListResponse",
				"type": "object"
			},
			"ScheduleOccurrenceRead": {
				"properties": {
					"coding_run_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"disposition": {
						"type": "string"
					},
					"slot_ts": {
						"format": "date-time",
						"type": "string"
					},
					"summary": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"created_at",
					"disposition",
					"slot_ts"
				],
				"title": "ScheduleOccurrenceRead",
				"type": "object"
			},
			"ScheduleRead": {
				"examples": [
					{
						"cadence_label": "Weekly on Monday at 9:00 AM",
						"coding_repository_id": "8a1d4e2f-5b6c-4d7e-8f9a-0b1c2d3e4f50",
						"consecutive_failures": 0,
						"created_at": "2026-10-27T09:00:00Z",
						"id": "7d6c5b4a-3928-4f17-8e6d-5c4b3a291807",
						"next_fire_at": "2026-11-02T09:00:00Z",
						"prompt": "Update dependencies and fix anything the upgrade breaks.",
						"repo_name": "storefront",
						"schedule_paid_on": false,
						"skip_if_no_new_commits": true,
						"status": "active",
						"trigger": {
							"expr": "0 9 * * 1",
							"kind": "cron",
							"timezone": "Europe/London"
						}
					}
				],
				"properties": {
					"cadence_label": {
						"type": "string"
					},
					"coding_repository_id": {
						"format": "uuid",
						"type": "string"
					},
					"consecutive_failures": {
						"type": "integer"
					},
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"last_occurrence": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ScheduleOccurrenceRead"
							},
							{
								"type": "null"
							}
						]
					},
					"last_run_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"next_fire_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"occurrence_budget_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"pause_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_config": {
						"additionalProperties": true,
						"type": "object"
					},
					"prompt": {
						"type": "string"
					},
					"repo_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"schedule_paid_on": {
						"default": false,
						"type": "boolean"
					},
					"skip_if_no_new_commits": {
						"type": "boolean"
					},
					"status": {
						"type": "string"
					},
					"trigger": {
						"$ref": "#/components/schemas/ScheduleTriggerSpec"
					},
					"upcoming": {
						"items": {
							"format": "date-time",
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"cadence_label",
					"coding_repository_id",
					"consecutive_failures",
					"created_at",
					"id",
					"prompt",
					"skip_if_no_new_commits",
					"status",
					"trigger"
				],
				"title": "ScheduleRead",
				"type": "object"
			},
			"ScheduleTriggerSpec": {
				"properties": {
					"expr": {
						"type": "string"
					},
					"kind": {
						"type": "string"
					},
					"timezone": {
						"type": "string"
					}
				},
				"required": [
					"expr",
					"kind",
					"timezone"
				],
				"title": "ScheduleTriggerSpec",
				"type": "object"
			},
			"ScheduleUpdateRequest": {
				"properties": {
					"occurrence_budget_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"policy_config": {
						"oneOf": [
							{
								"additionalProperties": true,
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"prompt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"schedule_paid_on": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"skip_if_no_new_commits": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"trigger": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ScheduleTriggerSpec"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "ScheduleUpdateRequest",
				"type": "object"
			},
			"SeededLoginRead": {
				"properties": {
					"code": {
						"type": "string"
					},
					"instructions": {
						"type": "string"
					},
					"url": {
						"type": "string"
					},
					"username": {
						"type": "string"
					}
				},
				"required": [
					"code",
					"instructions",
					"url",
					"username"
				],
				"title": "SeededLoginRead",
				"type": "object"
			},
			"SeoAiRead": {
				"properties": {
					"visits": {
						"items": {
							"$ref": "#/components/schemas/SeoAiVisitRead"
						},
						"type": "array"
					}
				},
				"required": [
					"visits"
				],
				"title": "SeoAiRead",
				"type": "object"
			},
			"SeoAiVisitRead": {
				"properties": {
					"key": {
						"type": "string"
					},
					"label": {
						"type": "string"
					},
					"visits": {
						"type": "integer"
					}
				},
				"required": [
					"key",
					"label",
					"visits"
				],
				"title": "SeoAiVisitRead",
				"type": "object"
			},
			"SeoBaselineRead": {
				"properties": {
					"median_change_pct": {
						"type": "number"
					},
					"sites": {
						"type": "integer"
					}
				},
				"required": [
					"median_change_pct",
					"sites"
				],
				"title": "SeoBaselineRead",
				"type": "object"
			},
			"SeoCounts": {
				"properties": {
					"clicks": {
						"type": "integer"
					},
					"impressions": {
						"type": "integer"
					},
					"position": {
						"type": "number"
					}
				},
				"required": [
					"clicks",
					"impressions",
					"position"
				],
				"title": "SeoCounts",
				"type": "object"
			},
			"SeoGoogleListingRead": {
				"properties": {
					"checked_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"fixes": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"rating": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"review_link": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reviews": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					}
				},
				"required": [
					"fixes",
					"status"
				],
				"title": "SeoGoogleListingRead",
				"type": "object"
			},
			"SeoGoogleRead": {
				"properties": {
					"permission": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"property": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"state"
				],
				"title": "SeoGoogleRead",
				"type": "object"
			},
			"SeoGuardRead": {
				"properties": {
					"rows": {
						"items": {
							"$ref": "#/components/schemas/SeoGuardRowRead"
						},
						"type": "array"
					},
					"run_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"rows"
				],
				"title": "SeoGuardRead",
				"type": "object"
			},
			"SeoGuardRowRead": {
				"properties": {
					"detail": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"level": {
						"type": "string"
					},
					"route": {
						"type": "string"
					},
					"rule_id": {
						"type": "string"
					},
					"target": {
						"type": "string"
					}
				},
				"required": [
					"level",
					"route",
					"rule_id",
					"target"
				],
				"title": "SeoGuardRowRead",
				"type": "object"
			},
			"SeoListingFactsRead": {
				"properties": {
					"address": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"hours": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"missing": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"phone": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"website": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"missing"
				],
				"title": "SeoListingFactsRead",
				"type": "object"
			},
			"SeoListingMarkRequest": {
				"properties": {
					"review_link": {
						"oneOf": [
							{
								"maxLength": 500,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"oneOf": [
							{
								"enum": [
									"done",
									"skipped",
									"todo"
								],
								"type": "string"
							}
						]
					}
				},
				"required": [],
				"title": "SeoListingMarkRequest",
				"type": "object"
			},
			"SeoListingPlaceRead": {
				"properties": {
					"blurb": {
						"type": "string"
					},
					"can_fill": {
						"type": "boolean"
					},
					"catch": {
						"type": "string"
					},
					"key": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"state": {
						"type": "string"
					},
					"url": {
						"type": "string"
					}
				},
				"required": [
					"blurb",
					"can_fill",
					"catch",
					"key",
					"name",
					"state",
					"url"
				],
				"title": "SeoListingPlaceRead",
				"type": "object"
			},
			"SeoListingsRead": {
				"properties": {
					"done": {
						"type": "integer"
					},
					"facts": {
						"$ref": "#/components/schemas/SeoListingFactsRead"
					},
					"google": {
						"$ref": "#/components/schemas/SeoGoogleListingRead"
					},
					"places": {
						"items": {
							"$ref": "#/components/schemas/SeoListingPlaceRead"
						},
						"type": "array"
					},
					"total": {
						"type": "integer"
					}
				},
				"required": [
					"done",
					"facts",
					"google",
					"places",
					"total"
				],
				"title": "SeoListingsRead",
				"type": "object"
			},
			"SeoOfferFacts": {
				"properties": {
					"impressions": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"kind": {
						"type": "string"
					},
					"page": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"queries": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"kind",
					"queries"
				],
				"title": "SeoOfferFacts",
				"type": "object"
			},
			"SeoOnGoogleRead": {
				"properties": {
					"sitemap": {
						"type": "string"
					},
					"sitemap_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"sitemap"
				],
				"title": "SeoOnGoogleRead",
				"type": "object"
			},
			"SeoOutcomeRead": {
				"properties": {
					"after": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoCounts"
							},
							{
								"type": "null"
							}
						]
					},
					"after_2": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoCounts"
							},
							{
								"type": "null"
							}
						]
					},
					"backlog_task_id": {
						"type": "string"
					},
					"baseline": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoBaselineRead"
							},
							{
								"type": "null"
							}
						]
					},
					"baseline_2": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoBaselineRead"
							},
							{
								"type": "null"
							}
						]
					},
					"before": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoCounts"
							},
							{
								"type": "null"
							}
						]
					},
					"change_pct": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"change_pct_2": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"kind": {
						"type": "string"
					},
					"live_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"result_on": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"backlog_task_id",
					"kind",
					"status",
					"title"
				],
				"title": "SeoOutcomeRead",
				"type": "object"
			},
			"SeoPageRead": {
				"properties": {
					"description": {
						"type": "string"
					},
					"path": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"description",
					"path",
					"title"
				],
				"title": "SeoPageRead",
				"type": "object"
			},
			"SeoPageStatRead": {
				"properties": {
					"clicks": {
						"type": "integer"
					},
					"impressions": {
						"type": "integer"
					},
					"page": {
						"type": "string"
					},
					"position": {
						"type": "number"
					}
				},
				"required": [
					"clicks",
					"impressions",
					"page",
					"position"
				],
				"title": "SeoPageStatRead",
				"type": "object"
			},
			"SeoPendingFactsRead": {
				"properties": {
					"count": {
						"type": "integer"
					},
					"run_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"count"
				],
				"title": "SeoPendingFactsRead",
				"type": "object"
			},
			"SeoQueryRead": {
				"properties": {
					"clicks": {
						"type": "integer"
					},
					"impressions": {
						"type": "integer"
					},
					"position": {
						"type": "number"
					},
					"query": {
						"type": "string"
					}
				},
				"required": [
					"clicks",
					"impressions",
					"position",
					"query"
				],
				"title": "SeoQueryRead",
				"type": "object"
			},
			"SeoReceiptClickRequest": {
				"properties": {
					"backlog_task_id": {
						"format": "uuid",
						"type": "string"
					}
				},
				"required": [
					"backlog_task_id"
				],
				"title": "SeoReceiptClickRequest",
				"type": "object"
			},
			"SeoResponse": {
				"properties": {
					"ai": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoAiRead"
							},
							{
								"type": "null"
							}
						]
					},
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"display_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"done": {
						"items": {
							"$ref": "#/components/schemas/SeoOutcomeRead"
						},
						"type": "array"
					},
					"google": {
						"$ref": "#/components/schemas/SeoGoogleRead"
					},
					"guard": {
						"$ref": "#/components/schemas/SeoGuardRead"
					},
					"no_website": {
						"type": "boolean"
					},
					"on_google": {
						"$ref": "#/components/schemas/SeoOnGoogleRead"
					},
					"origin": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"pages": {
						"items": {
							"$ref": "#/components/schemas/SeoPageRead"
						},
						"type": "array"
					},
					"pending_facts": {
						"$ref": "#/components/schemas/SeoPendingFactsRead"
					},
					"search": {
						"$ref": "#/components/schemas/SeoSearchRead"
					},
					"search_visible": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"site": {
						"$ref": "#/components/schemas/SeoSiteRead"
					},
					"site_id": {
						"format": "uuid",
						"type": "string"
					},
					"source": {
						"type": "string"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"done",
					"google",
					"guard",
					"no_website",
					"on_google",
					"pages",
					"pending_facts",
					"search",
					"site",
					"site_id",
					"source",
					"state"
				],
				"title": "SeoResponse",
				"type": "object"
			},
			"SeoSearchRead": {
				"properties": {
					"data_since": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"move_floor": {
						"type": "integer"
					},
					"top_pages": {
						"items": {
							"$ref": "#/components/schemas/SeoPageStatRead"
						},
						"type": "array"
					},
					"top_queries": {
						"items": {
							"$ref": "#/components/schemas/SeoQueryRead"
						},
						"type": "array"
					},
					"totals": {
						"$ref": "#/components/schemas/SeoCounts"
					},
					"window_end": {
						"type": "string"
					},
					"window_start": {
						"type": "string"
					}
				},
				"required": [
					"move_floor",
					"top_pages",
					"top_queries",
					"totals",
					"window_end",
					"window_start"
				],
				"title": "SeoSearchRead",
				"type": "object"
			},
			"SeoSiteRead": {
				"properties": {
					"index_checked_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"index_verdict": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"indexable": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"last_crawl_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"listings": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeoListingsRead"
							},
							{
								"type": "null"
							}
						]
					},
					"publication": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/AppPublicationRead"
							},
							{
								"type": "null"
							}
						]
					},
					"sitemap_submitted_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "SeoSiteRead",
				"type": "object"
			},
			"SiteChangeRead": {
				"properties": {
					"after": {
						"$ref": "#/components/schemas/ChangeWindowRead"
					},
					"before": {
						"$ref": "#/components/schemas/ChangeWindowRead"
					},
					"days_left": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"deployment_id": {
						"type": "string"
					},
					"kind": {
						"type": "string"
					},
					"live_at": {
						"type": "string"
					},
					"per_100": {
						"oneOf": [
							{
								"prefixItems": [
									{
										"type": "number"
									},
									{
										"type": "number"
									}
								],
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"run_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"title": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"verdict": {
						"type": "string"
					}
				},
				"required": [
					"after",
					"before",
					"deployment_id",
					"kind",
					"live_at",
					"verdict"
				],
				"title": "SiteChangeRead",
				"type": "object"
			},
			"SiteCreateRequest": {
				"properties": {
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"display_name": {
						"oneOf": [
							{
								"maxLength": 200,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"no_website": {
						"default": false,
						"type": "boolean"
					},
					"origin": {
						"oneOf": [
							{
								"maxLength": 2048,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source": {
						"const": "github",
						"type": "string"
					}
				},
				"required": [
					"source"
				],
				"title": "SiteCreateRequest",
				"type": "object"
			},
			"SiteListItemRead": {
				"properties": {
					"coding_repository_id": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"display_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"google_state": {
						"type": "string"
					},
					"open_moves": {
						"type": "integer"
					},
					"origin": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"site_id": {
						"format": "uuid",
						"type": "string"
					},
					"source": {
						"type": "string"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"google_state",
					"open_moves",
					"site_id",
					"source",
					"state"
				],
				"title": "SiteListItemRead",
				"type": "object"
			},
			"SiteListResponse": {
				"properties": {
					"sites": {
						"items": {
							"$ref": "#/components/schemas/SiteListItemRead"
						},
						"type": "array"
					}
				},
				"required": [
					"sites"
				],
				"title": "SiteListResponse",
				"type": "object"
			},
			"SiteTextEditRequest": {
				"properties": {
					"after": {
						"maxLength": 2000,
						"type": "string"
					},
					"all": {
						"default": false,
						"type": "boolean"
					},
					"before": {
						"maxLength": 2000,
						"minLength": 1,
						"type": "string"
					},
					"page": {
						"maxLength": 2048,
						"minLength": 1,
						"type": "string"
					},
					"request_id": {
						"format": "uuid",
						"type": "string"
					}
				},
				"required": [
					"after",
					"before",
					"page",
					"request_id"
				],
				"title": "SiteTextEditRequest",
				"type": "object"
			},
			"SiteTextEditResponse": {
				"properties": {
					"commit_sha": {
						"type": "string"
					},
					"deployment_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"file": {
						"type": "string"
					},
					"status": {
						"type": "string"
					}
				},
				"required": [
					"commit_sha",
					"file",
					"status"
				],
				"title": "SiteTextEditResponse",
				"type": "object"
			},
			"SiteVisibilityRequest": {
				"properties": {
					"visible": {
						"type": "boolean"
					}
				},
				"required": [
					"visible"
				],
				"title": "SiteVisibilityRequest",
				"type": "object"
			},
			"SiteVisibilityResponse": {
				"properties": {
					"commit_sha": {
						"type": "string"
					},
					"deployment_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"status": {
						"type": "string"
					},
					"visible": {
						"type": "boolean"
					}
				},
				"required": [
					"commit_sha",
					"status",
					"visible"
				],
				"title": "SiteVisibilityResponse",
				"type": "object"
			},
			"SpecAnnotationInput": {
				"properties": {
					"anchor_prefix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"anchor_suffix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"char_end": {
						"description": "Unicode code point offset (exclusive) into the plain goal/criterion text.",
						"maximum": 2147483647,
						"minimum": 1,
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"char_start": {
						"description": "Unicode code point offset into the plain goal/criterion text.",
						"maximum": 2147483647,
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"comment": {
						"type": "string"
					},
					"criterion_key": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"in_reply_to": {
						"oneOf": [
							{
								"format": "uuid",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"quote": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"suggested_text": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"target": {
						"enum": [
							"brief",
							"goal",
							"criterion"
						],
						"type": "string"
					},
					"type": {
						"default": "comment",
						"enum": [
							"comment",
							"suggest_edit",
							"flag_remove",
							"global"
						],
						"type": "string"
					}
				},
				"required": [
					"comment",
					"target"
				],
				"title": "SpecAnnotationInput",
				"type": "object"
			},
			"StoreActionRead": {
				"properties": {
					"blocked": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"first_release": {
						"default": false,
						"type": "boolean"
					},
					"kind": {
						"type": "string"
					},
					"platforms": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"version": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"kind"
				],
				"title": "StoreActionRead",
				"type": "object"
			},
			"StoreAnswerRead": {
				"properties": {
					"label": {
						"type": "string"
					},
					"value": {
						"type": "string"
					}
				},
				"required": [
					"label",
					"value"
				],
				"title": "StoreAnswerRead",
				"type": "object"
			},
			"StoreAppExistsRead": {
				"properties": {
					"exists": {
						"type": "boolean"
					}
				},
				"required": [
					"exists"
				],
				"title": "StoreAppExistsRead",
				"type": "object"
			},
			"StoreAppRead": {
				"properties": {
					"android_package": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"app_root": {
						"type": "string"
					},
					"auto_send": {
						"type": "boolean"
					},
					"ios_bundle_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source": {
						"default": "repo",
						"type": "string"
					}
				},
				"required": [
					"app_root",
					"auto_send"
				],
				"title": "StoreAppRead",
				"type": "object"
			},
			"StoreAttributesUpdate": {
				"properties": {
					"age_rating": {
						"oneOf": [
							{
								"additionalProperties": {
									"oneOf": [
										{
											"type": "boolean"
										},
										{
											"type": "string"
										}
									]
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"category": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"content_rights": {
						"enum": [
							"uses_third_party",
							"none",
							"",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"copyright": {
						"oneOf": [
							{
								"maxLength": 200,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"export_compliance": {
						"enum": [
							"exempt",
							"non_exempt",
							"",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"review_contact": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreReviewContactUpdate"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreAttributesUpdate",
				"type": "object"
			},
			"StoreBranchesRead": {
				"properties": {
					"branches": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"default_branch": {
						"type": "string"
					}
				},
				"required": [
					"branches",
					"default_branch"
				],
				"title": "StoreBranchesRead",
				"type": "object"
			},
			"StoreBuildRead": {
				"properties": {
					"build_number": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"cause": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"created_at": {
						"type": "string"
					},
					"finished_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"platform": {
						"type": "string"
					},
					"release_status": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"release_work": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/ReleaseWorkRead"
							},
							{
								"type": "null"
							}
						]
					},
					"sentence": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"sha": {
						"default": "",
						"type": "string"
					},
					"status": {
						"type": "string"
					},
					"version": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"created_at",
					"id",
					"platform",
					"status"
				],
				"title": "StoreBuildRead",
				"type": "object"
			},
			"StoreClosedTestRead": {
				"properties": {
					"days": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"days_needed": {
						"type": "integer"
					},
					"opt_in_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"production_ready": {
						"type": "boolean"
					},
					"testers": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"testers_needed": {
						"type": "integer"
					},
					"track": {
						"type": "string"
					}
				},
				"required": [
					"days_needed",
					"production_ready",
					"testers_needed",
					"track"
				],
				"title": "StoreClosedTestRead",
				"type": "object"
			},
			"StoreClosedTestRequest": {
				"properties": {
					"google_group": {
						"oneOf": [
							{
								"maxLength": 320,
								"pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreClosedTestRequest",
				"type": "object"
			},
			"StoreDeliveryRead": {
				"properties": {
					"automatic": {
						"type": "boolean"
					},
					"platform": {
						"type": "string"
					},
					"release_type": {
						"type": "string"
					}
				},
				"required": [
					"automatic",
					"platform",
					"release_type"
				],
				"title": "StoreDeliveryRead",
				"type": "object"
			},
			"StoreDeliveryUpdate": {
				"properties": {
					"automatic": {
						"default": false,
						"type": "boolean"
					},
					"release_type": {
						"default": "AFTER_APPROVAL",
						"enum": [
							"AFTER_APPROVAL",
							"MANUAL"
						],
						"type": "string"
					}
				},
				"required": [],
				"title": "StoreDeliveryUpdate",
				"type": "object"
			},
			"StoreDesignRequest": {
				"properties": {
					"direction": {
						"maxLength": 500,
						"minLength": 1,
						"type": "string"
					},
					"max_usd": {
						"type": "string"
					},
					"platform": {
						"enum": [
							"ios",
							"android",
							null
						],
						"type": [
							"null",
							"string"
						]
					}
				},
				"required": [
					"direction",
					"max_usd"
				],
				"title": "StoreDesignRequest",
				"type": "object"
			},
			"StoreFindingRead": {
				"properties": {
					"evidence": {
						"type": "string"
					},
					"fix": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreFixRead"
							},
							{
								"type": "null"
							}
						]
					},
					"guideline": {
						"type": "string"
					},
					"guideline_url": {
						"type": "string"
					},
					"id": {
						"type": "string"
					},
					"platform": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"severity": {
						"type": "string"
					},
					"subject": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"required": [
					"evidence",
					"guideline",
					"guideline_url",
					"id",
					"severity",
					"subject",
					"title"
				],
				"title": "StoreFindingRead",
				"type": "object"
			},
			"StoreFixRead": {
				"properties": {
					"field": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"kind": {
						"type": "string"
					},
					"label": {
						"type": "string"
					},
					"locale": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"prompt": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"kind",
					"label"
				],
				"title": "StoreFixRead",
				"type": "object"
			},
			"StoreInstallRead": {
				"properties": {
					"kind": {
						"type": "string"
					},
					"url": {
						"type": "string"
					}
				},
				"required": [
					"kind",
					"url"
				],
				"title": "StoreInstallRead",
				"type": "object"
			},
			"StoreListingDraftRequest": {
				"properties": {
					"field": {
						"maxLength": 40,
						"minLength": 1,
						"type": "string"
					},
					"locale": {
						"maxLength": 16,
						"minLength": 2,
						"type": "string"
					},
					"platform": {
						"enum": [
							"ios",
							"android"
						],
						"type": "string"
					},
					"value": {
						"maxLength": 16000,
						"type": "string"
					}
				},
				"required": [
					"field",
					"locale",
					"platform",
					"value"
				],
				"title": "StoreListingDraftRequest",
				"type": "object"
			},
			"StoreListingFieldRead": {
				"properties": {
					"back_translation": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"draft": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"field": {
						"type": "string"
					},
					"limit": {
						"type": "integer"
					},
					"live": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"over": {
						"type": "integer"
					},
					"repo": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"unit": {
						"type": "string"
					}
				},
				"required": [
					"field",
					"limit",
					"over",
					"unit"
				],
				"title": "StoreListingFieldRead",
				"type": "object"
			},
			"StoreListingGenerateRequest": {
				"properties": {
					"fields": {
						"maxItems": 9,
						"minItems": 1,
						"oneOf": [
							{
								"items": {
									"enum": [
										"name",
										"subtitle",
										"description",
										"keywords",
										"promotional_text",
										"title",
										"short_description",
										"full_description",
										"review_notes"
									],
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"languages": {
						"maxItems": 50,
						"minItems": 1,
						"oneOf": [
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreListingGenerateRequest",
				"type": "object"
			},
			"StoreListingLanguageRead": {
				"properties": {
					"apple": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"in_app": {
						"type": "boolean"
					},
					"key": {
						"type": "string"
					},
					"listed": {
						"type": "boolean"
					},
					"name": {
						"type": "string"
					},
					"play": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"translation_requested": {
						"default": false,
						"type": "boolean"
					}
				},
				"required": [
					"in_app",
					"key",
					"listed",
					"name"
				],
				"title": "StoreListingLanguageRead",
				"type": "object"
			},
			"StoreListingLanguageRequest": {
				"properties": {
					"language": {
						"maxLength": 16,
						"minLength": 2,
						"type": "string"
					}
				},
				"required": [
					"language"
				],
				"title": "StoreListingLanguageRequest",
				"type": "object"
			},
			"StoreListingLocaleDetailRead": {
				"properties": {
					"captures": {
						"items": {
							"$ref": "#/components/schemas/StoreListingShotRead"
						},
						"type": "array"
					},
					"fields": {
						"items": {
							"$ref": "#/components/schemas/StoreListingFieldRead"
						},
						"type": "array"
					},
					"locale": {
						"type": "string"
					},
					"platform": {
						"type": "string"
					},
					"shots": {
						"items": {
							"$ref": "#/components/schemas/StoreListingShotRead"
						},
						"type": "array"
					},
					"state": {
						"type": "string"
					},
					"ticked_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"fields",
					"locale",
					"platform",
					"state"
				],
				"title": "StoreListingLocaleDetailRead",
				"type": "object"
			},
			"StoreListingLocaleRead": {
				"properties": {
					"changed": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"locale": {
						"type": "string"
					},
					"platform": {
						"type": "string"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"changed",
					"locale",
					"platform",
					"state"
				],
				"title": "StoreListingLocaleRead",
				"type": "object"
			},
			"StoreListingPushRequest": {
				"properties": {
					"platform": {
						"enum": [
							"ios",
							"android",
							null
						],
						"type": [
							"null",
							"string"
						]
					}
				},
				"required": [],
				"title": "StoreListingPushRequest",
				"type": "object"
			},
			"StoreListingRead": {
				"properties": {
					"adopted": {
						"type": "boolean"
					},
					"editable": {
						"additionalProperties": {
							"type": "boolean"
						},
						"type": "object"
					},
					"imported_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"languages": {
						"items": {
							"$ref": "#/components/schemas/StoreListingLanguageRead"
						},
						"type": "array"
					},
					"locales": {
						"items": {
							"$ref": "#/components/schemas/StoreListingLocaleDetailRead"
						},
						"type": "array"
					},
					"review": {
						"$ref": "#/components/schemas/StoreListingReviewRead"
					},
					"work": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreListingWorkRead"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"adopted",
					"locales"
				],
				"title": "StoreListingRead",
				"type": "object"
			},
			"StoreListingReviewRead": {
				"properties": {
					"demo_kind": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"demo_username": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"needs_login": {
						"default": false,
						"type": "boolean"
					},
					"notes": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"refusal": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreListingReviewRead",
				"type": "object"
			},
			"StoreListingShotRead": {
				"properties": {
					"ai_generated": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"artwork_model": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"artwork_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"caption": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"caption_back_translation": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"display_type": {
						"type": "string"
					},
					"height": {
						"type": "integer"
					},
					"kind": {
						"type": "string"
					},
					"order": {
						"type": "integer"
					},
					"output_review": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/OutputReview"
							},
							{
								"type": "null"
							}
						]
					},
					"pick": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"pii": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"problems": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source": {
						"default": "syndai",
						"type": "string"
					},
					"source_commit": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source_sha256": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"source_tree": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"width": {
						"type": "integer"
					}
				},
				"required": [
					"display_type",
					"height",
					"kind",
					"order",
					"width"
				],
				"title": "StoreListingShotRead",
				"type": "object"
			},
			"StoreListingSummaryRead": {
				"properties": {
					"imported_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"locales": {
						"items": {
							"$ref": "#/components/schemas/StoreListingLocaleRead"
						},
						"type": "array"
					},
					"needs_tick": {
						"type": "integer"
					}
				},
				"required": [
					"locales",
					"needs_tick"
				],
				"title": "StoreListingSummaryRead",
				"type": "object"
			},
			"StoreListingTickRequest": {
				"properties": {
					"locale": {
						"maxLength": 16,
						"minLength": 2,
						"type": "string"
					},
					"platform": {
						"enum": [
							"ios",
							"android"
						],
						"type": "string"
					},
					"ticked": {
						"type": "boolean"
					}
				},
				"required": [
					"locale",
					"platform",
					"ticked"
				],
				"title": "StoreListingTickRequest",
				"type": "object"
			},
			"StoreListingWorkItemRead": {
				"properties": {
					"locale": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"platform": {
						"type": "string"
					},
					"state": {
						"type": "string"
					}
				},
				"required": [
					"platform",
					"state"
				],
				"title": "StoreListingWorkItemRead",
				"type": "object"
			},
			"StoreListingWorkRead": {
				"properties": {
					"error": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/WorkError"
							},
							{
								"type": "null"
							}
						]
					},
					"id": {
						"type": "string"
					},
					"items": {
						"items": {
							"$ref": "#/components/schemas/StoreListingWorkItemRead"
						},
						"type": "array"
					},
					"kind": {
						"type": "string"
					},
					"requested_at": {
						"type": "string"
					},
					"state": {
						"type": "string"
					},
					"updated_at": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"items",
					"kind",
					"requested_at",
					"state",
					"updated_at"
				],
				"title": "StoreListingWorkRead",
				"type": "object"
			},
			"StoreLiveRead": {
				"properties": {
					"release_status": {
						"type": "string"
					},
					"rollout_fraction": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"version": {
						"type": "string"
					}
				},
				"required": [
					"release_status",
					"version"
				],
				"title": "StoreLiveRead",
				"type": "object"
			},
			"StorePlatformRead": {
				"properties": {
					"cause": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"install": {
						"items": {
							"$ref": "#/components/schemas/StoreInstallRead"
						},
						"type": "array"
					},
					"live": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreLiveRead"
							},
							{
								"type": "null"
							}
						]
					},
					"platform": {
						"type": "string"
					},
					"progress": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreProgressRead"
							},
							{
								"type": "null"
							}
						]
					},
					"rejection": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreRejectionRead"
							},
							{
								"type": "null"
							}
						]
					},
					"sentence": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"state": {
						"type": "string"
					},
					"step": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"store_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"testing": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreTestingRead"
							},
							{
								"type": "null"
							}
						]
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"platform",
					"state"
				],
				"title": "StorePlatformRead",
				"type": "object"
			},
			"StorePlatformSettingRead": {
				"properties": {
					"detected": {
						"type": "boolean"
					},
					"on": {
						"type": "boolean"
					},
					"platform": {
						"type": "string"
					}
				},
				"required": [
					"detected",
					"on",
					"platform"
				],
				"title": "StorePlatformSettingRead",
				"type": "object"
			},
			"StoreProgressRead": {
				"properties": {
					"sha": {
						"type": "string"
					},
					"started_at": {
						"type": "string"
					},
					"typical_seconds": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"sha",
					"started_at"
				],
				"title": "StoreProgressRead",
				"type": "object"
			},
			"StoreQuotesRead": {
				"properties": {
					"artwork_usd": {
						"default": 4.0,
						"type": "number"
					},
					"build_android_usd": {
						"type": "number"
					},
					"build_ios_usd": {
						"type": "number"
					},
					"listing_per_language_usd": {
						"type": "number"
					},
					"shoot_usd": {
						"type": "number"
					}
				},
				"required": [
					"build_android_usd",
					"build_ios_usd",
					"listing_per_language_usd",
					"shoot_usd"
				],
				"title": "StoreQuotesRead",
				"type": "object"
			},
			"StoreRead": {
				"properties": {
					"action": {
						"$ref": "#/components/schemas/StoreActionRead"
					},
					"app": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreAppRead"
							},
							{
								"type": "null"
							}
						]
					},
					"builds": {
						"items": {
							"$ref": "#/components/schemas/StoreBuildRead"
						},
						"type": "array"
					},
					"closed_test": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreClosedTestRead"
							},
							{
								"type": "null"
							}
						]
					},
					"doctor": {
						"items": {
							"$ref": "#/components/schemas/StoreFindingRead"
						},
						"type": "array"
					},
					"eligible": {
						"type": "boolean"
					},
					"google_email": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"listing": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreListingSummaryRead"
							},
							{
								"type": "null"
							}
						]
					},
					"platforms": {
						"items": {
							"$ref": "#/components/schemas/StorePlatformRead"
						},
						"type": "array"
					},
					"quotes": {
						"$ref": "#/components/schemas/StoreQuotesRead"
					},
					"readiness": {
						"items": {
							"$ref": "#/components/schemas/StoreReadinessRead"
						},
						"type": "array"
					},
					"release_notes": {
						"oneOf": [
							{
								"additionalProperties": {
									"type": "string"
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"settings": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreSettingsRead"
							},
							{
								"type": "null"
							}
						]
					},
					"shell": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreShellRead"
							},
							{
								"type": "null"
							}
						]
					},
					"steps": {
						"items": {
							"$ref": "#/components/schemas/StoreStepRead"
						},
						"type": "array"
					},
					"warnings": {
						"items": {
							"type": "string"
						},
						"type": "array"
					}
				},
				"required": [
					"action",
					"builds",
					"eligible",
					"platforms",
					"steps"
				],
				"title": "StoreRead",
				"type": "object"
			},
			"StoreReadinessRead": {
				"properties": {
					"done": {
						"type": "boolean"
					},
					"evidence": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"key": {
						"type": "string"
					},
					"label": {
						"type": "string"
					},
					"tickable": {
						"type": "boolean"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"done",
					"key",
					"label",
					"tickable"
				],
				"title": "StoreReadinessRead",
				"type": "object"
			},
			"StoreReadinessUpdate": {
				"properties": {
					"account_type": {
						"enum": [
							"personal",
							"organization",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"attributes": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreAttributesUpdate"
							},
							{
								"type": "null"
							}
						]
					},
					"rejection_text": {
						"oneOf": [
							{
								"maxLength": 8000,
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"ticks": {
						"oneOf": [
							{
								"additionalProperties": {
									"type": "boolean"
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreReadinessUpdate",
				"type": "object"
			},
			"StoreRecipeFieldRead": {
				"properties": {
					"field": {
						"type": "string"
					},
					"source": {
						"type": "string"
					},
					"value": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"items": {
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"field",
					"source"
				],
				"title": "StoreRecipeFieldRead",
				"type": "object"
			},
			"StoreRejectionRead": {
				"properties": {
					"at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"guideline": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"guideline_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reason": {
						"type": "string"
					},
					"resubmit": {
						"default": false,
						"type": "boolean"
					}
				},
				"required": [
					"reason"
				],
				"title": "StoreRejectionRead",
				"type": "object"
			},
			"StoreReleaseRequest": {
				"properties": {
					"listing_mode": {
						"default": "published",
						"enum": [
							"published",
							"approved"
						],
						"type": "string"
					},
					"notes": {
						"additionalProperties": {
							"type": "string"
						},
						"type": "object"
					},
					"platforms": {
						"maxItems": 2,
						"minItems": 1,
						"oneOf": [
							{
								"items": {
									"enum": [
										"ios",
										"android"
									],
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"release_type": {
						"enum": [
							"AFTER_APPROVAL",
							"MANUAL",
							null
						],
						"type": [
							"null",
							"string"
						]
					},
					"version": {
						"maxLength": 32,
						"minLength": 1,
						"type": "string"
					}
				},
				"required": [
					"notes",
					"version"
				],
				"title": "StoreReleaseRequest",
				"type": "object"
			},
			"StoreReviewContactUpdate": {
				"properties": {
					"email": {
						"maxLength": 320,
						"pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
						"type": "string"
					},
					"first_name": {
						"maxLength": 100,
						"minLength": 1,
						"type": "string"
					},
					"last_name": {
						"maxLength": 100,
						"minLength": 1,
						"type": "string"
					},
					"phone": {
						"maxLength": 40,
						"minLength": 5,
						"type": "string"
					}
				},
				"required": [
					"email",
					"first_name",
					"last_name",
					"phone"
				],
				"title": "StoreReviewContactUpdate",
				"type": "object"
			},
			"StoreReviewLoginRequest": {
				"properties": {
					"password": {
						"maxLength": 256,
						"minLength": 8,
						"type": "string"
					},
					"username": {
						"maxLength": 320,
						"minLength": 1,
						"type": "string"
					}
				},
				"required": [
					"password",
					"username"
				],
				"title": "StoreReviewLoginRequest",
				"type": "object"
			},
			"StoreScreensUpdate": {
				"properties": {
					"captions": {
						"oneOf": [
							{
								"additionalProperties": {
									"type": "string"
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"locale": {
						"maxLength": 16,
						"minLength": 1,
						"type": "string"
					},
					"platform": {
						"enum": [
							"ios",
							"android"
						],
						"type": "string"
					},
					"selected": {
						"items": {
							"type": "string"
						},
						"maxItems": 10,
						"type": "array"
					}
				},
				"required": [
					"locale",
					"platform",
					"selected"
				],
				"title": "StoreScreensUpdate",
				"type": "object"
			},
			"StoreSearchCheck": {
				"properties": {
					"charged_usd": {
						"type": "number"
					},
					"checked_at": {
						"format": "date-time",
						"type": "string"
					},
					"id": {
						"type": "string"
					},
					"platforms": {
						"$ref": "#/components/schemas/StoreSearchPlatforms"
					}
				},
				"required": [
					"charged_usd",
					"checked_at",
					"id",
					"platforms"
				],
				"title": "StoreSearchCheck",
				"type": "object"
			},
			"StoreSearchPlatforms": {
				"properties": {
					"android": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreSearchStore"
							},
							{
								"type": "null"
							}
						]
					},
					"ios": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreSearchStore"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreSearchPlatforms",
				"type": "object"
			},
			"StoreSearchQuote": {
				"properties": {
					"headroom_usd": {
						"type": "number"
					},
					"max_usd": {
						"type": "number"
					},
					"runs_left": {
						"type": "integer"
					}
				},
				"required": [
					"headroom_usd",
					"max_usd",
					"runs_left"
				],
				"title": "StoreSearchQuote",
				"type": "object"
			},
			"StoreSearchRow": {
				"properties": {
					"difficulty": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"keyword": {
						"type": "string"
					},
					"rank": {
						"type": "integer"
					},
					"searches": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"keyword",
					"rank"
				],
				"title": "StoreSearchRow",
				"type": "object"
			},
			"StoreSearchRunRead": {
				"properties": {
					"latest": {
						"$ref": "#/components/schemas/StoreSearchCheck"
					}
				},
				"required": [
					"latest"
				],
				"title": "StoreSearchRunRead",
				"type": "object"
			},
			"StoreSearchStore": {
				"properties": {
					"rows": {
						"items": {
							"$ref": "#/components/schemas/StoreSearchRow"
						},
						"type": "array"
					},
					"total": {
						"type": "integer"
					}
				},
				"required": [
					"rows",
					"total"
				],
				"title": "StoreSearchStore",
				"type": "object"
			},
			"StoreSearchesRead": {
				"properties": {
					"latest": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreSearchCheck"
							},
							{
								"type": "null"
							}
						]
					},
					"quote": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/StoreSearchQuote"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreSearchesRead",
				"type": "object"
			},
			"StoreSeededLoginRead": {
				"properties": {
					"login": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/SeededLoginRead"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreSeededLoginRead",
				"type": "object"
			},
			"StoreSettingsRead": {
				"properties": {
					"auto_update": {
						"type": "boolean"
					},
					"build": {
						"items": {
							"$ref": "#/components/schemas/StoreRecipeFieldRead"
						},
						"type": "array"
					},
					"delivery": {
						"items": {
							"$ref": "#/components/schemas/StoreDeliveryRead"
						},
						"type": "array"
					},
					"platforms": {
						"items": {
							"$ref": "#/components/schemas/StorePlatformSettingRead"
						},
						"type": "array"
					},
					"release_branch": {
						"type": "string"
					},
					"release_branch_source": {
						"type": "string"
					}
				},
				"required": [
					"auto_update",
					"build",
					"platforms",
					"release_branch",
					"release_branch_source"
				],
				"title": "StoreSettingsRead",
				"type": "object"
			},
			"StoreSettingsUpdate": {
				"properties": {
					"apply_current": {
						"oneOf": [
							{
								"items": {
									"format": "uuid",
									"type": "string"
								},
								"type": "array"
							},
							{
								"type": "null"
							}
						]
					},
					"auto_update": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					},
					"build": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/BuildRecipe"
							},
							{
								"type": "null"
							}
						]
					},
					"delivery": {
						"oneOf": [
							{
								"additionalProperties": {
									"$ref": "#/components/schemas/StoreDeliveryUpdate"
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"platforms": {
						"oneOf": [
							{
								"additionalProperties": {
									"type": "boolean"
								},
								"type": "object"
							},
							{
								"type": "null"
							}
						]
					},
					"release_branch": {
						"oneOf": [
							{
								"pattern": "^$|^(?!-)(?!/)(?!.*\\.\\.)(?!.*//)(?!.*\\.lock$)[A-Za-z0-9._/-]{1,200}(?<!/)$",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreSettingsUpdate",
				"type": "object"
			},
			"StoreShellRead": {
				"properties": {
					"attested": {
						"type": "boolean"
					},
					"data_safety": {
						"items": {
							"$ref": "#/components/schemas/StoreAnswerRead"
						},
						"type": "array"
					},
					"deletion_url": {
						"type": "string"
					},
					"hosts": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"package": {
						"type": "string"
					},
					"report_url": {
						"type": "string"
					},
					"rules_url": {
						"type": "string"
					}
				},
				"required": [
					"attested",
					"data_safety",
					"deletion_url",
					"hosts",
					"package",
					"report_url",
					"rules_url"
				],
				"title": "StoreShellRead",
				"type": "object"
			},
			"StoreShellRequest": {
				"properties": {
					"attest_physical_goods": {
						"type": "boolean"
					}
				},
				"required": [
					"attest_physical_goods"
				],
				"title": "StoreShellRequest",
				"type": "object"
			},
			"StoreShootRequest": {
				"properties": {
					"platform": {
						"enum": [
							"ios",
							"android",
							null
						],
						"type": [
							"null",
							"string"
						]
					}
				},
				"required": [],
				"title": "StoreShootRequest",
				"type": "object"
			},
			"StoreStepRead": {
				"properties": {
					"done": {
						"type": "boolean"
					},
					"key": {
						"type": "string"
					},
					"sentence": {
						"type": "string"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"done",
					"key",
					"sentence"
				],
				"title": "StoreStepRead",
				"type": "object"
			},
			"StoreTestingRead": {
				"properties": {
					"build_number": {
						"type": "integer"
					},
					"version": {
						"type": "string"
					}
				},
				"required": [
					"build_number",
					"version"
				],
				"title": "StoreTestingRead",
				"type": "object"
			},
			"StoreUpdateRequest": {
				"properties": {
					"play_internal_link": {
						"oneOf": [
							{
								"maxLength": 200,
								"pattern": "^(https://play\\.google\\.com/apps/internaltest/[0-9]+)?$",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reset_upload_key": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [],
				"title": "StoreUpdateRequest",
				"type": "object"
			},
			"SyncSnapshotResponse": {
				"properties": {
					"next_cursor": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"resume": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"rows": {
						"items": {
							"additionalProperties": true,
							"type": "object"
						},
						"type": "array"
					},
					"versions": {
						"additionalProperties": {
							"type": "integer"
						},
						"type": "object"
					}
				},
				"required": [
					"rows",
					"versions"
				],
				"title": "SyncSnapshotResponse",
				"type": "object"
			},
			"TimelineEntryRead": {
				"properties": {
					"entry_kind": {
						"type": "string"
					},
					"event_name": {
						"type": "string"
					},
					"evidence": {
						"additionalProperties": true,
						"type": "object"
					},
					"global_seq": {
						"oneOf": [
							{
								"type": "integer"
							},
							{
								"type": "null"
							}
						]
					},
					"occurred_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"entry_kind",
					"event_name",
					"evidence",
					"occurred_at"
				],
				"title": "TimelineEntryRead",
				"type": "object"
			},
			"VerifyRequest": {
				"properties": {
					"owner_email": {
						"maxLength": 254,
						"minLength": 3,
						"type": "string"
					}
				},
				"required": [
					"owner_email"
				],
				"title": "VerifyRequest",
				"type": "object"
			},
			"WaitlistResponse": {
				"properties": {
					"count": {
						"type": "integer"
					},
					"next_cursor": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"signups": {
						"items": {
							"$ref": "#/components/schemas/WaitlistSignupRead"
						},
						"type": "array"
					}
				},
				"required": [
					"count",
					"signups"
				],
				"title": "WaitlistResponse",
				"type": "object"
			},
			"WaitlistSignupRead": {
				"properties": {
					"created_at": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"fields": {
						"additionalProperties": {
							"type": "string"
						},
						"type": "object"
					}
				},
				"required": [
					"created_at",
					"email",
					"fields"
				],
				"title": "WaitlistSignupRead",
				"type": "object"
			},
			"WebhookEndpointCreateRequest": {
				"examples": [
					{
						"event_types": [
							"coding.run.completed",
							"coding.run.failed"
						],
						"name": "Ops alerts",
						"target_url": "https://hooks.example.com/syndai"
					}
				],
				"properties": {
					"event_types": {
						"items": {
							"$ref": "#/components/schemas/CodingWebhookEventType"
						},
						"type": "array"
					},
					"name": {
						"type": "string"
					},
					"target_url": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"target_url"
				],
				"title": "WebhookEndpointCreateRequest",
				"type": "object"
			},
			"WebhookEndpointCreateResponse": {
				"examples": [
					{
						"endpoint": {
							"created_at": "2026-10-27T09:00:00Z",
							"customer_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
							"event_types": [
								"coding.run.completed",
								"coding.run.failed"
							],
							"id": "9b8a7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
							"name": "Ops alerts",
							"status": "active",
							"target_url": "https://hooks.example.com/syndai",
							"updated_at": "2026-10-27T09:00:00Z"
						},
						"signing_secret": "example-signing-secret-shown-once"
					}
				],
				"properties": {
					"endpoint": {
						"$ref": "#/components/schemas/WebhookEndpointRead"
					},
					"signing_secret": {
						"format": "password",
						"type": "string"
					}
				},
				"required": [
					"endpoint",
					"signing_secret"
				],
				"title": "WebhookEndpointCreateResponse",
				"type": "object"
			},
			"WebhookEndpointDisableResponse": {
				"properties": {
					"endpoint": {
						"$ref": "#/components/schemas/WebhookEndpointRead"
					}
				},
				"required": [
					"endpoint"
				],
				"title": "WebhookEndpointDisableResponse",
				"type": "object"
			},
			"WebhookEndpointListResponse": {
				"properties": {
					"endpoints": {
						"items": {
							"$ref": "#/components/schemas/WebhookEndpointRead"
						},
						"type": "array"
					}
				},
				"required": [
					"endpoints"
				],
				"title": "WebhookEndpointListResponse",
				"type": "object"
			},
			"WebhookEndpointRead": {
				"properties": {
					"created_at": {
						"format": "date-time",
						"type": "string"
					},
					"customer_id": {
						"format": "uuid",
						"type": "string"
					},
					"event_types": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"id": {
						"format": "uuid",
						"type": "string"
					},
					"last_secret_rotated_at": {
						"oneOf": [
							{
								"format": "date-time",
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"name": {
						"type": "string"
					},
					"status": {
						"$ref": "#/components/schemas/WebhookEndpointStatus"
					},
					"target_url": {
						"type": "string"
					},
					"updated_at": {
						"format": "date-time",
						"type": "string"
					}
				},
				"required": [
					"created_at",
					"customer_id",
					"event_types",
					"id",
					"name",
					"status",
					"target_url",
					"updated_at"
				],
				"title": "WebhookEndpointRead",
				"type": "object"
			},
			"WebhookEndpointStatus": {
				"description": "Lifecycle state for customer-managed webhook endpoints.",
				"enum": [
					"active",
					"disabled",
					"revoked"
				],
				"title": "WebhookEndpointStatus",
				"type": "string"
			},
			"WebhookEndpointTestResponse": {
				"examples": [
					{
						"delivery": {
							"attempts": 1,
							"created_at": "2026-10-27T09:00:00Z",
							"customer_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
							"delivered_at": "2026-10-27T09:00:00Z",
							"delivery_kind": "test",
							"endpoint_id": "9b8a7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
							"event_name": "coding.webhook.test",
							"id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
							"response_status": 200,
							"status": "delivered",
							"target_url": "https://hooks.example.com/syndai",
							"updated_at": "2026-10-27T09:00:00Z"
						}
					}
				],
				"properties": {
					"delivery": {
						"$ref": "#/components/schemas/CustomerWebhookDeliveryRead"
					}
				},
				"required": [
					"delivery"
				],
				"title": "WebhookEndpointTestResponse",
				"type": "object"
			},
			"WebhookSecretRotationResponse": {
				"properties": {
					"retired_grace_until": {
						"format": "date-time",
						"type": "string"
					},
					"secret": {
						"format": "password",
						"type": "string"
					},
					"version": {
						"type": "integer"
					}
				},
				"required": [
					"retired_grace_until",
					"secret",
					"version"
				],
				"title": "WebhookSecretRotationResponse",
				"type": "object"
			},
			"WebsiteApprovalDetails": {
				"properties": {
					"account_label": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"action_class": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"action_summary": {
						"type": "string"
					},
					"adapter_fingerprint": {
						"type": "string"
					},
					"adapter_spec_id": {
						"type": "string"
					},
					"domain": {
						"type": "string"
					},
					"estimated_cost_usd": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					},
					"expected_effect": {
						"type": "string"
					},
					"expires_at": {
						"type": "string"
					},
					"max_authorized_delta": {
						"additionalProperties": true,
						"type": "object"
					},
					"money_or_credit_impact": {
						"additionalProperties": true,
						"type": "object"
					},
					"reversibility": {
						"type": "string"
					},
					"risk_class": {
						"type": "string"
					},
					"robots_txt_violation": {
						"default": false,
						"type": "boolean"
					},
					"session_identity_label": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"session_window_expires_at": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"tos_flagged_reason": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": [
					"action_summary",
					"adapter_fingerprint",
					"adapter_spec_id",
					"domain",
					"expected_effect",
					"expires_at",
					"reversibility",
					"risk_class"
				],
				"title": "WebsiteApprovalDetails",
				"type": "object"
			},
			"WorkError": {
				"properties": {
					"detail": {
						"type": "string"
					},
					"kind": {
						"type": "string"
					}
				},
				"required": [
					"detail",
					"kind"
				],
				"title": "WorkError",
				"type": "object"
			}
		},
		"securitySchemes": {
			"CustomerApiKey": {
				"bearerFormat": "API Key",
				"description": "Customer API key sent as a bearer token",
				"scheme": "bearer",
				"type": "http"
			}
		}
	},
	"info": {
		"contact": {
			"name": "Syndai",
			"url": "https://syndai.ai"
		},
		"description": "Public Coding-as-a-Service API for customer integrations.",
		"title": "Syndai External Coding API",
		"version": "3.1.0"
	},
	"openapi": "3.1.0",
	"paths": {
		"/api/v1/cli/device": {
			"post": {
				"deprecated": false,
				"description": "Open a device login (RFC 8628). Show `user_code` and open `verification_uri_complete` in a browser, where an owner or admin of the workspace approves it; poll `POST /api/v1/cli/device/token` every `interval` seconds until `expires_in`. `scopes` asks for a key with exactly those scopes (omit it for the owner CLI set); members and unpublish scopes are never granted here.",
				"operationId": "startCliDevice",
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/CliDeviceStartRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CliDeviceStartResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI sign-in is unavailable right now"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Start a CLI device login",
				"tags": [
					"CLI auth"
				]
			}
		},
		"/api/v1/cli/device/token": {
			"post": {
				"deprecated": false,
				"description": "Poll with the `device_code` from the login request, no more often than `interval` seconds. Returns 400 with `error` until the login is approved, then 200 with a new API key that expires after 90 days. The key is returned once: the code is spent and a later poll gets `expired_token`. No authentication is required.",
				"operationId": "redeemCliDevice",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CliDeviceTokenRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CliDeviceTokenResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CliDeviceTokenError"
								}
							}
						},
						"description": "Not yet, or never: `authorization_pending`, `slow_down` (wait 5 s longer), `access_denied` or `expired_token` (RFC 8628 \u00a73.5)"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI sign-in is unavailable right now"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Poll a CLI device login",
				"tags": [
					"CLI auth"
				]
			}
		},
		"/api/v1/external/coding/artifacts/{artifact_id}/open": {
			"get": {
				"deprecated": false,
				"description": "Open a file a run's validation produced. `mode` is `auto` (the default), `inline` (the content in the response) or `signed_url` (a short-lived download link). Only artifacts of your own runs open. Requires the `coding:runs:read` scope.",
				"operationId": "openValidationArtifact",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "artifact_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "mode",
						"required": false,
						"schema": {
							"default": "auto",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CodingArtifactOpenResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Open a validation artifact",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/backlog": {
			"get": {
				"deprecated": false,
				"description": "List the top open next-task offers on the tenant's active repositories: a completed run's own evidence-cited next steps (`suggested`, listed for 14 days), open pre-existing findings (`finding`), follow-up marks (`follow_up`) and evidence-backed Google search moves (`seo`, listed for 28 days after the weekly scan last re-saw them), bug-scan findings (`bug_scan`) and Project Home chat cards (`chat`, listed only to the signed-in person who asked for them; never to an API key). Pass `source` to list one source only (the SEO tab asks for `seo` so its moves are not crowded out by `limit`; `source=seo` lists Google moves only, each with its `seo` facts). `source` in the response is an open string: tolerate values you do not know. Ranked server-side by priority then recency, with at most one `finding` and one `bug_scan` unless fewer than `limit` other offers exist. Offers never run on their own: start one by sending its `id` as `backlog_task_id` on POST /runs. A group's parts are not listed here: GET /backlog/groups lists each group once.",
				"operationId": "listBacklogOffers",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "coding_repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": {
							"default": 3,
							"maximum": 20.0,
							"minimum": 1.0,
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "source",
						"required": false,
						"schema": {
							"enum": [
								"suggested",
								"finding",
								"follow_up",
								"seo",
								"bug_scan",
								"chat",
								"goal",
								"roadmap",
								null
							],
							"type": [
								"null",
								"string"
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/BacklogOfferListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List next-task offers",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/groups": {
			"get": {
				"deprecated": false,
				"description": "List the tenant's groups: the 2-5 separate changes one Project Home chat message asked for, filed as one group whose parts may build on earlier parts (`after`). Lists every group not yet `done`, then those done in the last 7 days, newest first. `bucket` and each part's `status` / `needs` are derived from the parts' runs: `not_started`, `working`, `needs_you` or `done`; a part is `not_started`, `waiting` (an earlier part is not in the default branch yet), `ready`, `running`, `needs_you`, `landed` or `skipped`. Each is an open string: tolerate values you do not know. An unstarted group is listed only to the person whose chat filed it (an agent's thread: to owners and admins); a started group to everyone who sees the board, an API key included. Start one with POST /backlog/groups/{id}/start.",
				"operationId": "listBacklogGroups",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "coding_repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GroupListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List task groups",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/groups/{group_id}/dismiss": {
			"post": {
				"deprecated": false,
				"description": "Dismiss a group before Start, or Skip after it: every open part and every finished part that needs you (held, never went live, a PR to review) becomes `skipped`. Send `part` to Skip that part only (409 when it is running, still landing, or already in). A skipped part counts as done for the parts after it, so they start. Running parts are untouched: stop one on its run.",
				"operationId": "dismissBacklogGroup",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "group_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/GroupPartRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GroupRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access; or HUMAN_APPROVAL_REQUIRED: the agent never skips work"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "The part is running or already in"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Dismiss or skip a task group",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/groups/{group_id}/start": {
			"post": {
				"deprecated": false,
				"description": "Start a group: one tap for every part. Each part whose earlier parts are in the default branch starts now as its own run; the server starts each later part once the parts it builds on land. Calling it again is safe (one run per part) and, by a person, makes them the group's starter (resume a group whose starter left, or try again after a spending block). Send `part` to Retry one part that failed, stopped or did not go live (409 otherwise): its new run continues the failed one. A person's tap only: the project agent gets 403 HUMAN_APPROVAL_REQUIRED. Each part runs as paid work. 404 for a group you cannot see; 409 when every part was dismissed.",
				"operationId": "startBacklogGroup",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "group_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/GroupPartRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GroupRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access; or HUMAN_APPROVAL_REQUIRED: the agent never starts work"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "The group was dismissed, or the part has nothing to retry"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Start a task group",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/{backlog_task_id}": {
			"patch": {
				"deprecated": false,
				"description": "Replaces the offer's title and/or prompt with your text and accepts it onto the roadmap with that text pinned. Send at least one of `title` or `prompt` (400 otherwise). Starts no run itself; the roadmap is worked top-down only when the workspace has turned on autonomous runs. Needs a signed-in person (an API key gets 403); 404 for an offer that is not yours or is no longer open.",
				"operationId": "editBacklogTask",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "backlog_task_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RoadmapEditRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/RoadmapTaskRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Edit an offer's title or prompt",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/{backlog_task_id}/accept": {
			"post": {
				"deprecated": false,
				"description": "Accepts an open offer onto its project's roadmap, pinning the exact text you saw. Calling it again keeps the first acceptance time. Starts no run itself; the roadmap is worked top-down only when the workspace has turned on autonomous runs. Needs a signed-in person (an API key gets 403); 404 for an offer that is not yours or is no longer open.",
				"operationId": "acceptBacklogTask",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "backlog_task_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/RoadmapTaskRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Add an offer to the roadmap",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/{backlog_task_id}/dismiss": {
			"post": {
				"deprecated": false,
				"description": "Dismisses an open offer for good; it is never filed again. Send an optional `reason` (and, for a bug finding, a `note`) to record why. Returns 204, and 404 for an offer that is not yours or is no longer open.",
				"operationId": "dismissBacklogOffer",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "backlog_task_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/BacklogDismissRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Dismiss a next-task offer",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/backlog/{backlog_task_id}/top": {
			"post": {
				"deprecated": false,
				"description": "Gives the offer the highest priority among its project's open offers and accepts it onto the roadmap, pinning its current text. Starts no run itself; the roadmap is worked top-down only when the workspace has turned on autonomous runs. Needs a signed-in person (an API key gets 403); 404 for an offer that is not yours or is no longer open.",
				"operationId": "moveBacklogTaskToTop",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "backlog_task_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/RoadmapTaskRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Move an offer to the top of the roadmap",
				"tags": [
					"Backlog"
				]
			}
		},
		"/api/v1/external/coding/cli/production-access": {
			"post": {
				"deprecated": false,
				"description": "Open a browser approval (RFC 8628 shape) that lets THIS key read production values for 10 minutes. Open `verification_uri_complete`, where an owner or admin of the key's workspace allows it; poll `POST /api/v1/external/coding/cli/production-access/token` every `interval` seconds.",
				"operationId": "startProductionAccess",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/CliProductionAccessRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CliDeviceStartResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI sign-in is unavailable right now"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Ask to read production values",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/cli/production-access/token": {
			"post": {
				"deprecated": false,
				"description": "Poll with the `device_code` from the step-up request, using the same API key that opened it. Returns 400 with `error` until a person decides, then 200 with `allowed_until`: this key may read production values until then. Requires the `coding:secrets:reveal` scope.",
				"operationId": "redeemProductionAccess",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CliProductionAccessTokenRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CliProductionAccessResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CliDeviceTokenError"
								}
							}
						},
						"description": "Not yet, or never: `authorization_pending`, `slow_down` (wait 5 s longer), `access_denied` or `expired_token` (RFC 8628 \u00a73.5)"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI sign-in is unavailable right now"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Poll a production step-up",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/apps": {
			"get": {
				"deprecated": false,
				"description": "The workspace's projects that have a site, most recently changed first: the same set as the project switcher (active repository, active connection, customer-owned). Each item has the repository, the live `url`, this month's hosting credits and the full publication read (state, latest deployment status and error). `ref` keeps only the apps it names: a repository or publication id, the slug, the live host or URL, or the repository's name (`owner/name`, `name` or its display name).",
				"operationId": "listApps",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "ref",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"maxLength": 300,
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AppsListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List the workspace's apps",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/apps/{publication_id}/ai-cap": {
			"put": {
				"deprecated": false,
				"description": "Sets the most the app's no-key AI may spend in a UTC month, in USD the workspace pays (`cap_usd`, 0 to 10000; 0 or null, the default, turns it off), and optionally each signed-in member's own monthly limit (`member_cap_usd`; omitted = unchanged). This only sets limits and starts no paid work; raising it lets the app's AI calls spend up to the new amount, and past it they answer 402 `ai_cap_reached` until the month turns. A signed-in owner or admin only: an API key or a member is 403.",
				"operationId": "setAppAiCap",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AiCapRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/RuntimeAiRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Set an app's monthly AI limit",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/apps/{publication_id}/deployments": {
			"get": {
				"deprecated": false,
				"description": "The app's newest ten deploy attempts, newest first: `status` (`pending`, `building`, `uploading`, `publishing`, `live`, `failed`, `superseded`), the commit `sha`, the address it was served at (`url`), `created_at` and `finished_at` (its duration), and for a failure `error`, the one sentence the owner reads. The live one carries `share_url`: the site's address to share, its custom domain once that is live. Any workspace member (`coding:apps:read`); 404 for an app outside this workspace.",
				"operationId": "listAppDeployments",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AppDeploymentsRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List an app's deployments",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/apps/{publication_id}/domain": {
			"delete": {
				"deprecated": false,
				"description": "Stop serving the address; the site moves back to its Syndai address. `delete_records`: the CNAME to delete at the domain's DNS host now. Needs `coding:apps:publish`.",
				"operationId": "removeAppDomain",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Remove an app's custom domain",
				"tags": [
					"Apps"
				]
			},
			"get": {
				"deprecated": false,
				"description": "The hosted site's own address. `status`: `none`, `pending` (Cloudflare has not seen the records yet, or the certificate is issuing), `active` (the site serves there and its Syndai address redirects to it), `failed` (validation timed out: add it again). `records`: what to add at the domain's DNS host while it is not active: one CNAME for the address (a pending address fails after 72 h if it never appears). The bare domain is the owner's DNS host forwarding to www. `domain_connect_url`: one tap at the domain's DNS provider (it writes the CNAME, and for a www address the bare-domain forward) once that provider has onboarded Syndai's template. `dns_provider` / `dns_url`: the DNS provider's name and DNS page, when known. Poll this while `pending`: each read re-checks a pending address (at most every 10 s). Needs `coding:apps:read`.",
				"operationId": "getAppDomain",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read an app's custom domain",
				"tags": [
					"Apps"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Attach `hostname` (pasted URLs and bare domains are accepted: `bakery.com` becomes `www.bakery.com`). One address per site; the same address again is a no-op and a failed one is retried. Refusals: `invalid_hostname`, `reserved_hostname`, `domain_exists` (remove the current one first), `hostname_taken` (another site in this workspace), `hostname_in_use` (a site in this workspace's SEO tab), `hostname_contested` (another workspace has the address or removed it in the last 30 days: the problem's `records` name the TXT `_syndai.<address>` that proves it is this workspace's, to add at the DNS host (`dns_provider` / `dns_url` say where); once DNS answers it, adding again takes the address over). Refusals are 409 or 422 with that `code`; 503 `domains_not_configured`, 502 `cloudflare_unavailable`. Needs `coding:apps:publish`.",
				"operationId": "addAppDomain",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DomainAddRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Add a custom domain to an app",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/apps/{publication_id}/runtime": {
			"get": {
				"deprecated": false,
				"description": "One live app's runtime picture. `missing_secrets`: secret names the app's server code declares that production does not hold (add them in Secrets). `ai`: the monthly limit on the app's no-key AI and this UTC month's use, both in USD the workspace pays. `jobs`: the scheduled jobs the live build declares (`every` as declared: `15m`, `1h`, `1d` or milliseconds) and each one's last run. `traffic`: the last 30 days in the `tz` query zone (an IANA name; unknown or absent = UTC): visits per day (people arriving from outside the site, oldest first, today last), the top 5 sources then `other`, taps by kind (`call`, `email`, `message`, `directions`, `link`) and this week against the one before; null when visit counts are unavailable, never zero. `outcomes`: paid orders, their revenue net of refunds per currency in minor units, requests and sign-ups over the same 30 days; null unless the caller is the workspace's owner or an admin. `since`: visits, taps and (owner or admin) paid orders since the first stored UTC day `from_day`; null before the first daily rollup. `mail`: messages a sending limit held back in the last 30 days.",
				"operationId": "getAppRuntime",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "tz",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AppRuntimeResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read an app's runtime",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/apps/{publication_id}/visibility": {
			"post": {
				"deprecated": false,
				"description": "Writes `search.visible` in the site's `syndai.build.json` and republishes: `true` shows a members-only site on Google, `false` adds a site-wide noindex and drops its sitemap. 202 `committed`, 200 `already_applied` when the site already is that way. Owner or admin. Waits for runs like a text edit: 409 `RUN_IN_FLIGHT` (`run_id`), else `TEXT_EDIT_REFUSED` naming the reason in `refusal`.",
				"operationId": "setSiteVisibility",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "publication_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SiteVisibilityRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SiteVisibilityResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Show a site on Google, or hide it",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/github-prefill": {
			"get": {
				"deprecated": false,
				"description": "The newest successful `production*` deployment that reported a URL. `flagged`: its homepage answers noindex (`reason: noindex`) or robots.txt names no sitemap (`reason: no_sitemap`). `reason` with `flagged: false` = that check couldn't run (the site refused Syndai's read). Also makes the workspace's Google identity.",
				"operationId": "getGithubPrefill",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GithubPrefillRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Guess a GitHub project's website address",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publication": {
			"delete": {
				"deprecated": false,
				"description": "Takes the app offline in the background and answers 202 with the publication; repeating the call is safe. Poll `GET .../publication` for the final `state` (a failed unpublish shows in `operation_error_*`). `publication` is null if the repository was never published. Needs `coding:apps:unpublish`.",
				"operationId": "unpublishApp",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicationResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "App hosting is not configured"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Unpublish an app",
				"tags": [
					"Apps"
				]
			},
			"get": {
				"deprecated": false,
				"description": "The repository's live-app publication: `state`, live `url`, the latest deployment and its error, the settings, this month's hosting charge and the spend-consent fields (`hosting_paid_on`, `site_languages_terms`, ...). `publication` is null if the repository was never published. Needs `coding:apps:read`; 404 when the repository is not in this workspace.",
				"operationId": "getAppPublication",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicationResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a repository's app publication",
				"tags": [
					"Apps"
				]
			},
			"patch": {
				"deprecated": false,
				"description": "Changes any subset of `auto_redeploy`, `feature_requests`, `visitors`, `taps_counted`, `hosting_paid_on` and `site_languages_paid_on` (an empty body is 400 `EMPTY_UPDATE`). `hosting_paid_on` and `site_languages_paid_on` are spend consent: on, the app may be billed for hosting above its included usage (up to `hosting_paid_cap_usd` a month) or for site translations, so only a signed-in owner or admin may change them (a member is 403 `ROLE_REQUIRED`, an API key 403 `HUMAN_APPROVAL_REQUIRED`); turning translations on also needs `site_languages_terms` equal to the publication's current quote, else 400. `feature_requests: members` on an app without member sign-in is 400 `FEATURE_REQUESTS_NEEDS_MEMBERS`; 503 when the app can't be reached to apply `visitors` or `taps_counted`. Needs `coding:apps:publish`.",
				"operationId": "updateAppPublication",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PublicationUpdateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicationResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method; or EMPTY_UPDATE, or FEATURE_REQUESTS_NEEDS_MEMBERS"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found; or No publication, or NO_APP_DATA (no data plane for the Visitors switch)"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "PUBLICATION_NOT_LIVE: the app is not live"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "The app's control plane is unreachable"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Update an app's publication settings",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publication/data.json": {
			"get": {
				"deprecated": false,
				"description": "Streams every collection of the app's data store as one JSON attachment: `{\"collections\": {\"<name>\": [rows, each with `id` and `owner_id`]}}`. Needs `coding:apps:publish`, because the export holds the app's end-user data. 404 `NO_APP_DATA` for a static site with no data, 409 `PUBLICATION_NOT_LIVE` when the app isn't live, 503 when the app can't be reached.",
				"operationId": "exportAppData",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {}
							}
						},
						"description": "Stream Response",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found; or No publication, or NO_APP_DATA (a static site)"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "PUBLICATION_NOT_LIVE: the app is not live"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "The app's data store is unreachable"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Export an app's data",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publication/redeploy": {
			"post": {
				"deprecated": false,
				"description": "Deploys `sha`, one of this site's own deployments that went live, and pins the site to it (`pinned_sha`): while pinned, new commits do not redeploy it and every publish builds the pin. `POST .../publication/resume` clears it. Answers 202 with the publication while the deploy runs; charges nothing. Needs `coding:apps:publish`; 400 `VERSION_NOT_DEPLOYED` (the sha never went live here), 404 (never published), 409 `PUBLISH_IN_FLIGHT`.",
				"operationId": "redeployAppVersion",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RedeployVersionRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicationResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method; or VERSION_NOT_DEPLOYED: that sha never went live on this site"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "PUBLISH_IN_FLIGHT: the app is already publishing"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Redeploy an earlier version of a repository's app",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publication/resume": {
			"post": {
				"deprecated": false,
				"description": "Clears the pin `POST .../publication/redeploy` set and publishes the default branch's head (content review included), so new commits redeploy the site again while `auto_redeploy` is on. Answers 202 with the publication; charges nothing. Needs `coding:apps:publish`; 404 (never published), 422 `VERIFY_FAILED`.",
				"operationId": "resumeAppPublication",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicationResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "VERIFY_FAILED: the latest version didn't pass content review"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Resume a pinned app on its latest version",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publication/waitlist": {
			"get": {
				"deprecated": false,
				"description": "One page of the waitlist, newest first: `{count, signups, next_cursor}`. Pass `next_cursor` back as `?cursor=` for the next page (`?limit=` 1..200, default 50). Needs `coding:apps:publish` (the list holds people's emails). This operation is JSON-only so generated clients can type its response; the CSV export is the sibling operation `exportAppWaitlistCsv` (`GET .../publication/waitlist.csv`).",
				"operationId": "getAppWaitlist",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "cursor",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": {
							"default": 50,
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WaitlistResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method; or BAD_CURSOR: malformed page cursor"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found; or Repository not found or never published"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List an app's waitlist signups",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publication/waitlist.csv": {
			"get": {
				"deprecated": false,
				"description": "The whole waitlist as a `text/csv` attachment, columns `email,created_at,fields`, newest first (needs `coding:apps:publish`). Its own operation so generated clients read it as text rather than as the JSON page.",
				"operationId": "exportAppWaitlistCsv",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"text/csv": {
								"schema": {
									"type": "string"
								}
							}
						},
						"description": "The CSV body; `content-disposition: attachment; filename=\"<slug>-waitlist.csv\"`.",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found; or Repository not found or never published"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Download the published app's waitlist as CSV",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{coding_repository_id}/publish": {
			"post": {
				"deprecated": false,
				"description": "Publishes (or re-publishes) the repository's default branch as a hosted app after a content review, and answers 202 with the publication while the deploy continues in the background: poll `GET .../publication` or the app's deployments until `state` settles instead of assuming an order. A call while a deploy is already in flight returns that deploy rather than starting another. Publishing charges nothing; hosting above the app's included monthly usage is billed only while its owner has turned `hosting_paid_on` on. Needs `coding:apps:publish`; 422 `PUBLISH_UNSUPPORTED_REPO` (not a Syndai-hosted or publishable repository), 422 `VERIFY_FAILED` (content review failed or the site is suspended), 409 `PUBLISH_IN_FLIGHT`, 503 when hosting is unavailable.",
				"operationId": "publishApp",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicationResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "PUBLISH_IN_FLIGHT: the app is already publishing"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "PUBLISH_UNSUPPORTED_REPO (Syndai-hosted repos only), or VERIFY_FAILED"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "App hosting is not configured"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Publish a repository's app",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/github-deploys": {
			"get": {
				"deprecated": false,
				"description": "What the repository's own pipeline shipped, read live from GitHub. `environments`: one row per environment whose name starts with `production` (any case), its newest deployment: `name`, `state` (GitHub's deployment status lowercased, e.g. `success`, `failure`, `error`, `in_progress`; null before any status), `url`, `log_url`, `description`, `sha`, `at`; failed first, then newest. `release`: the latest release (`tag`, `url`, `at`, `count` of releases), null when none. `packages`: the root `package.json` (npm, unless private) and `pyproject.toml` `[project]` (PyPI) beside the public registry's latest: `registry`, `name`, `published_version` (null when not published yet or `unavailable`), `repo_version`, `url` (the registry page), `at`, `unavailable` (that registry couldn't be read; the rest of the answer stands). Any workspace member (`coding:apps:read`). 404 for a repository outside this workspace or one Syndai hosts; 503 `GITHUB_UNAVAILABLE` when GitHub can't be read.",
				"operationId": "getGithubDeploys",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GitHubDeploysRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read a GitHub repository's production deploys and latest release",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/publish": {
			"get": {
				"deprecated": false,
				"description": "Whether `.github/workflows/publish.yml` exists (`set_up`), its newest run (`run`: GitHub's `status` and `conclusion`, `title`, `url`, `at`; null before any run), and whether any run ever succeeded (`published`: the owner's one-time trusted publisher step is done). `setup_prompt`: the fixed coding-run prompt that adds the canonical workflow, only while not set up. Any workspace member (`coding:apps:read`). 404 for a repository outside this workspace or one Syndai hosts; 503 `GITHUB_UNAVAILABLE` when GitHub can't be read.",
				"operationId": "getPackagePublish",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublishRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read a GitHub repository's package publishing",
				"tags": [
					"Apps"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Starts `publish.yml` (`workflow_dispatch` on the default branch) with `version`; the run publishes with OIDC trusted publishing, so Syndai holds no registry token. 202 with the version and `at`: the run shows on `GET \u2026/publish` created at or after `at`. 409 `PUBLISH_NOT_SET_UP` when the workflow is missing or refuses the dispatch; 404 for a repository outside this workspace or one Syndai hosts; 503 `GITHUB_UNAVAILABLE`. Needs `coding:apps:publish`; a portal member who is not an owner or admin is 403.",
				"operationId": "publishPackages",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PublishRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublishDispatched"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Publish a GitHub repository's packages",
				"tags": [
					"Apps"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store": {
			"get": {
				"deprecated": false,
				"description": "Whether the release-branch tree holds a Flutter, React Native, Expo or native app (`eligible`), the adopted `app`, the Google account the workspace connected Play with (`google_email`), the owner `steps`, one status per platform, the one primary `action`, the What's New draft while a release is possible, warnings for the Release sheet and the last 10 builds. Members, viewers and API keys see the status only (`action.kind` is `none`, no draft). Needs the `coding:apps:read` scope; 404 when the repository isn't this customer's.",
				"operationId": "getStore",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read a repository's App stores card",
				"tags": [
					"Store"
				]
			},
			"patch": {
				"deprecated": false,
				"description": "`reset_upload_key: true`: Syndai generates a new Android upload key (for a lost password); the `upload_key` step then links its certificate to upload in Play Console. `play_internal_link`: the Play Console internal-testing opt-in link (`https://play.google.com/apps/internaltest/\u2026`; `\"\"` clears it), shown to the owner as the Android install row. 400 `EMPTY_UPDATE` when neither is sent. Signed-in owners and admins only.",
				"operationId": "updateStore",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreUpdateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Change the app's store settings",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/app-exists": {
			"get": {
				"deprecated": false,
				"description": "One narrow read of App Store Connect (`platform=ios`: an app with the bundle ID) or Google Play (`platform=android`: the package can be opened), no tree read, so the card can watch for the app the owner is creating in the console. `platform` is required (`ios` or `android`). Signed-in owners and admins only.",
				"operationId": "getStoreAppExists",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "platform",
						"required": true,
						"schema": {
							"pattern": "^(ios|android)$",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreAppExistsRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Check whether the store has the app record",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/branches": {
			"get": {
				"deprecated": false,
				"description": "The release-branch picker: the repository's default branch, then every other branch by name (up to 1,000). Needs the `coding:apps:read` scope. Without read access to the repository only the default branch is listed; 503 when the repository host fails.",
				"operationId": "listStoreBranches",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreBranchesRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List the repository's branches",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/builds": {
			"post": {
				"deprecated": false,
				"description": "Builds the release-branch head once on every platform whose connect steps are done and that has no build in flight, whether or not Auto-update is on. A head already built is not built again. Each build started is charged to the workspace. 404 until Check now has connected the app. Signed-in owners and admins only.",
				"operationId": "buildStoreNow",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Build the release-branch head now",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/check": {
			"post": {
				"deprecated": false,
				"description": "Reads the release-branch tree, adopts the app's existing App Store and Google Play listings (nothing is created or changed in either store), verifies the App Store Connect key, Google Play access and the upload key, and when all three are done builds the release-branch head on every platform with no build in flight (the first build, and Retry after a failure); each build is charged to the workspace. Signed-in owners and admins only: an API key is refused 403 `HUMAN_APPROVAL_REQUIRED`.",
				"operationId": "checkStore",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Check the app's store connections now",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/closed-test": {
			"post": {
				"deprecated": false,
				"description": "For a personal Play account before its first production release: puts the newest Android build on testing on the closed track (once; testers stay opted in across builds) and names its testers' Google Group (`google_group`; Play's API takes groups only). Sending a new group later changes only the testers. The card then shows the opt-in link and the 12 testers x 14 days clock. 409 when the app's state doesn't allow a closed test. Signed-in owners and admins only.",
				"operationId": "startStoreClosedTest",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/StoreClosedTestRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Start Google Play's closed test",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/export": {
			"get": {
				"deprecated": false,
				"description": "The app's build settings (release branch, flavor, entrypoint, scheme, configuration, build args, env names, Flutter version, identities) as a `codemagic.yaml` or, for React Native and Expo apps, an `eas.json`, for building elsewhere. Generated from Syndai's settings; Syndai never commits it or reads it back. The build number stays one past both stores' marks (`manageAppVersionAndBuildNumber = NO`). Env values are never included. Signed-in owners and admins only.",
				"operationId": "exportStoreConfig",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "format",
						"required": false,
						"schema": {
							"default": "codemagic",
							"enum": [
								"codemagic",
								"eas"
							],
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						},
						"description": "The file; `content-disposition: attachment; filename=\"codemagic.yaml\"` (or `eas.json`).",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Export the app's build settings",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/first-build": {
			"get": {
				"deprecated": false,
				"description": "Redirects (307) to a short-lived download of the first AAB, which the owner uploads once in Play Console (Google's API can't create an app). 404 once Play has a build. Signed-in owners and admins only.",
				"operationId": "getStoreFirstBuild",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"307": {
						"description": "Object moved temporarily -- see URI list",
						"headers": {
							"Location": {
								"description": "Where the redirect points.",
								"required": true,
								"schema": {
									"format": "uri",
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Download the Android app's first build",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing": {
			"get": {
				"deprecated": false,
				"description": "Per store and locale: the live listing (imported at every Check now), Syndai's or the owner's drafts with back-translations, the committed fastlane text, each field's limit, the screenshots, and the per-locale tick. `languages` lists every store language with whether the app's UI speaks it; `adopted` is an app that was on sale before Syndai (its price, availability, in-app purchases, Data safety and App Privacy are never written); `editable` says which store takes listing writes now (Apple: only while a version is being prepared). Needs the `coding:apps:read` scope; 404 until Check now has connected the app.",
				"operationId": "getStoreListing",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read the app's store listing kit",
				"tags": [
					"Store"
				]
			},
			"patch": {
				"deprecated": false,
				"description": "Saves `value` as the draft of `field` in the store locale (`locale` is the store's own code: `ja` on Apple, `ja-JP` on Play); `\"\"` or the live text drops the draft. Any change clears that locale's tick. A locale the store doesn't show yet needs a language the app's UI speaks (409 `language_not_in_app`). Nothing reaches the store until the locale is ticked and pushed. Signed-in owners and admins only.",
				"operationId": "updateStoreListingDraft",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreListingDraftRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Edit one listing field's draft",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/design": {
			"post": {
				"deprecated": false,
				"description": "Starts a paid AI design campaign that turns the app's validated captures of the built commit into designed screenshots for every listing language, guided by `direction` (up to 500 characters); `platform` narrows it to one store. Its maximum cost is priced up front and billed to the workspace unless its own model key serves it (402 `credit_quota_exhausted` when the plan can't cover that maximum). Runs in the background and writes drafts only: nothing reaches a store until the owner ticks and pushes the locale. Resending the identical request returns the campaign already in flight; other listing work in flight is 409 `listing_work_busy`, and 409 `screens_no_build` / `screens_need_flows` mean no build or no captures yet.",
				"operationId": "designStoreScreens",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreDesignRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Design localized store screenshots",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/generate": {
			"post": {
				"deprecated": false,
				"description": "Writes the listing copy (Apple name, subtitle, description, keywords, promotional text; Play title, short and full description) in every listing language, the app's own UI languages unless `languages` narrows them, each fitted to its store limit (Apple keywords and review notes in UTF-8 bytes), keywords researched per market, and an English back-translation of every non-English field. Also renders the App Review notes from the app's Maestro flows. Drafts only: nothing is pushed until the owner ticks each locale. Billed at model cost plus the usage markup unless the workspace's own model key serves it. Signed-in owners and admins only.",
				"operationId": "generateStoreListing",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreListingGenerateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Generate and translate the store listing into drafts",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/locales": {
			"post": {
				"deprecated": false,
				"description": "Adds a listing language (`language` is `languages[].key`) on both stores where they have it. The app's own UI must speak it: a listing ahead of the app is refused (409 `language_not_in_app`); ask Syndai to translate the app instead. Signed-in owners and admins only.",
				"operationId": "addStoreListingLocale",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreListingLanguageRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List the app in another language",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/push": {
			"post": {
				"deprecated": false,
				"description": "Writes every ticked locale's listing text (then its screenshots) to the store: Google Play in one edit, the App Store only while a version is being prepared (409 `listing_not_editable` when `platform` is `ios`; with no `platform` Apple waits and Play goes). Unticked locales are never written, and neither is a price, availability, in-app purchase, Data safety or App Privacy answer. 409 `listing_nothing_ticked` when there is nothing to push. Signed-in owners and admins only.",
				"operationId": "pushStoreListing",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreListingPushRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Push the ticked locales to the stores",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/screens": {
			"patch": {
				"deprecated": false,
				"description": "`locale` `*` re-picks, in order, the screenshots every locale shows from the last shoot; a store locale code gives that locale its own set, optionally with a caption per screenshot in its language (`selected: []` returns it to the shared set). Google Play takes 4 to 8 screenshots, the App Store 1 to 10; a screenshot showing personal data or a size the store refuses can't be picked. The change clears the locale's tick. Signed-in owners and admins only.",
				"operationId": "updateStoreScreens",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreScreensUpdate"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Choose the screenshots a store locale shows",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/shoot": {
			"post": {
				"deprecated": false,
				"description": "Turns the screens the app's own Maestro flows captured on Syndai's device lanes (in a passing device-lane run that validated the exact tree of the built commit) into candidates: drops any screen showing personal data, picks the best 4-8 and, for Google Play, makes the 512 icon and the 1024x500 feature graphic. Runs in the background: the candidates appear in the listing kit when ready. A platform with no captures gets an Up next offer that adds the flows; with none to shoot at all, 409 `screens_need_flows`. Nothing is sent to a store until the owner ticks the locale. Signed-in owners and admins only.",
				"operationId": "shootStoreScreens",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreShootRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Shoot the app's store screenshots",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/ticks": {
			"post": {
				"deprecated": false,
				"description": "`ticked: true` approves exactly the locale's current drafts and screenshots: any later change clears the tick, and only ticked locales are ever pushed. Refused (409 `listing_over_limit`) while a field is over its store limit or a link isn't one. `ticked: false` withdraws it. Signed-in owners and admins only.",
				"operationId": "tickStoreListing",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreListingTickRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Tick (approve) one store locale",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/listing/translate-app": {
			"post": {
				"deprecated": false,
				"description": "Files 'Translate the app into \u2026' in the project's Up next (once per language), a change the owner starts from there. When it lands, Check now detects the language and it can be listed. A language the UI already speaks files nothing. Signed-in owners and admins only.",
				"operationId": "offerStoreAppTranslation",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreListingLanguageRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Ask Syndai to translate the app",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/readiness": {
			"patch": {
				"deprecated": false,
				"description": "`ticks`: a legal row's key (`age_rating`, `app_privacy`, `data_safety`, `play_declarations`) -> ticked; a tick binds what the row shows now, so a changed answer, SDK or permission clears it. `attributes`: Apple's category, content rights, copyright, age-rating answers (`ageRatingDeclarations` names), export compliance and the App Review contact; `\"\"`/`{}` hands a field back to Syndai's pre-fill. `account_type`: the Play account is `personal` (a closed test comes first) or `organization`. `rejection_text`: App Review's message as pasted (`\"\"` clears it). An empty body or a value the checklist can't take is 400. Signed-in owners and admins only.",
				"operationId": "updateStoreReadiness",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreReadinessUpdate"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Tick the Ready to release checklist",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/releases": {
			"post": {
				"deprecated": false,
				"description": "Queues the exact tested builds for release without rebuilding (202): iOS is submitted for App Review and Google Play production goes out, each platform progressing on its own; a first release reaches everyone after review, an update is phased (iOS phased release; Play from 5%, advanced daily). `version` must be the one the card offers (409 otherwise); `notes` is What's New per locale (at most 500 characters each); `platforms` selects a store, `release_type` is Apple's AFTER_APPROVAL or MANUAL, and `listing_mode` keeps the published metadata unless approved listing changes are selected. Progress is open-ended: poll `GET .../store` rather than assuming an order of steps. Signed-in owners and admins only; a release can't be taken back from people who already updated.",
				"operationId": "releaseStore",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreReleaseRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Queue the tested version for release",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/releases/halt": {
			"post": {
				"deprecated": false,
				"description": "Google Play `halted`, the App Store phased release paused. People who already updated keep this version; ship a fix to replace it. A Play release at 100% can't be halted, and with nothing to halt the call is refused (409). Signed-in owners and admins only.",
				"operationId": "haltStoreRelease",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Halt the rollout on both stores",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/releases/resume": {
			"post": {
				"deprecated": false,
				"description": "Puts every halted rollout back: Google Play to `inProgress` at its fraction, the App Store phased release active again. 409 when nothing is halted. Signed-in owners and admins only.",
				"operationId": "resumeStoreRelease",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Resume a halted rollout on both stores",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/review/login": {
			"put": {
				"deprecated": false,
				"description": "Seals `password` in the workspace vault (never stored on the listing, never sent to a run, never returned) and records `username` as the App Review demo account; an app with sign-in waits on it before its first App Store release. 409 `demo_login_totp_only` when the account needs an authenticator code App Review can't type. Signed-in owners and admins only.",
				"operationId": "setStoreReviewLogin",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreReviewLoginRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreListingRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Set the demo login App Review signs in with",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/review/login/seeded": {
			"get": {
				"deprecated": false,
				"description": "For an accounts app on Google Play: the review page, address and code a store reviewer signs in with (no email is sent for it), and the steps to paste into Play Console's App access. `login` is null until the app's first build made the account, and always for an app that isn't a published web app on Play. Signed-in owners and admins only (403 for other roles); never cached.",
				"operationId": "getStoreSeededLogin",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreSeededLoginRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Show the review account Syndai made for this app",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/review/login/seeded/rotate": {
			"post": {
				"deprecated": false,
				"description": "For an accounts app on Google Play: replaces the review account's code (the old one stops working at once) and answers the new sign-in to paste into Play Console. 409 `review_account_blocked` when the account is blocked in People; `login` is null when the app has no such account. Signed-in owners and admins only (403 for other roles); never cached.",
				"operationId": "rotateStoreSeededLogin",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreSeededLoginRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Give this app's review account a new code",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/searches": {
			"get": {
				"deprecated": false,
				"description": "The latest store search check (`latest`, null before the first): per store, how many US searches find the app (`total`) and the top 10 by monthly searches, each with the app's rank and, on the App Store, a 1-10 difficulty. `quote` (the most a new check can cost, checks left today, credit headroom) is null unless the caller is an owner or admin signed in at the portal. Needs the `coding:apps:read` scope; 404 until Check now has connected the app.",
				"operationId": "getStoreSearches",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreSearchesRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read which store searches find the app",
				"tags": [
					"Store"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Runs one check now (a few seconds) on every enabled store with an id (the App Store app, the Google Play package) and answers it as `latest`. Charged to the workspace at the vendor's cost plus the usage markup, never above the quote's `max_usd`. 400 when no enabled store has the app, 402 without enough credits, 429 `check_limit` after 3 checks for the app in a UTC day, 502 when no store answered. Signed-in owners and admins only.",
				"operationId": "checkStoreSearches",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreSearchRunRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Check which store searches find the app now",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/settings": {
			"patch": {
				"deprecated": false,
				"description": "`release_branch`: the one branch Syndai signs and ships (`\"\"` = the repository's default branch). `auto_update`: build every push to it, a standing opt-in to paid builds (off by default). `platforms`: `{\"android\": false}` switches a store off, `true` back on. `build`: the build-recipe overrides, replaced whole (`{}` clears them); a reserved build arg or a service-only env name is 409 `build_args_refused` / `build_env_refused`. Every change is audited. A branch the repository doesn't have is 409 `release_branch_missing`. With Auto-update on, a new release branch (or a platform or Auto-update switched on) builds its head now. `delivery` selects automatic production submission and Apple release behavior per store; it defaults off and applies to future builds. `apply_current` explicitly names exact tested build UUIDs to apply now, without rebuilding. Changing `auto_update`, `delivery` or `apply_current` needs an owner or admin (403 otherwise). Needs the `coding:apps:publish` scope and a person signed in at the portal: API keys get 403.",
				"operationId": "updateStoreSettings",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreSettingsUpdate"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Change the app's release settings",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/shell": {
			"post": {
				"deprecated": false,
				"description": "Adopts a published web app with accounts as an Android app (a Trusted Web Activity Syndai builds and signs): pins its package name, records the owner's one-time attestation that everything the app sells is physical goods or services (`attest_physical_goods` must be true), generates its upload key and starts the first build (charged to the workspace), which the owner uploads once in Play Console. A site without accounts is refused (409, kind `shell_not_accounts`). Signed-in owners and admins only.",
				"operationId": "connectStoreShell",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/StoreShellRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StoreRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Put this web app on Google Play",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/upload-key": {
			"get": {
				"deprecated": false,
				"description": "A zip of the app's Android upload keystore (`upload.p12`, alias `upload`) and its `key.properties`, for signing builds outside Syndai. Syndai made it for a new app; keep it safe. Every download is audited; 404 when no upload key is saved. Signed-in owners and admins only.",
				"operationId": "getStoreUploadKey",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/zip": {
								"schema": {
									"type": "string"
								}
							}
						},
						"description": "The zip; `content-disposition: attachment; filename=\"upload_key.zip\"`.",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Download the Android upload key",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/repositories/{repository_id}/store/upload-key-certificate": {
			"get": {
				"deprecated": false,
				"description": "The saved Android upload key's public certificate (PEM), to upload in Play Console after an upload-key reset. Never the private key; 404 when no upload key is saved. Signed-in owners and admins only.",
				"operationId": "getStoreUploadKeyCertificate",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/x-pem-file": {
								"schema": {
									"type": "string"
								}
							}
						},
						"description": "The PEM body; `content-disposition: attachment; filename=\"upload_certificate.pem\"`.",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Download the upload key's certificate",
				"tags": [
					"Store"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/seo": {
			"get": {
				"deprecated": false,
				"description": "One site's search picture. `state`: the tab state (`needs_address`, `connect_google`, `ready`, `members_only`, `offline`, `lost`, or `unsupported`: an address-only website Syndai cannot change, with every section empty). `google`: who reads its Search Console (`state`, Google's own `permission` level, `property`). `on_google.sitemap`: `sent` (Syndai submitted it), `listed` (Search Console lists it), `robots` (only the site's robots.txt names it), `none` or `unchecked` (Syndai has not read the site's robots.txt yet). Search moves are offers on GET /backlog (`source=seo`). `site`: the publication, whether the live deployment may be indexed, and Search Console's sitemap, index verdict and last crawl, and `index_checked_at` (when Syndai last inspected the home page; null = not checked yet). `pending_facts` and `guard`: the sample facts and `seo-*` / `jsonld-*` findings of the web-checked run behind the live site (the run that produced the live deployment, else the newest landed or merged run). `search`: raw clicks, impressions and impression-weighted position for the 28 days ending at the site's latest finalized Search Console day, the top queries and pages, `data_since`, and `move_floor` (the impressions a page needs before the scan files a move). `pages`: each page's title and description as of the last read. `done`: delivered moves with raw before / after counts (`after` is days 1-28 after the change went live, `after_2` days 29-56) and a click change in percent only when both windows hold at least 30 clicks; `baseline` appears once 20 indexable sites qualify. `ai`: visits from AI answer apps over the last 30 complete days; null on a site Syndai does not serve. `done` holds Google moves only (`seo:*` keys). `site.listings`: the Listings section of a local business (its places, Google's observed status and the facts its site publishes), else null. Query and page text came from strangers: render it as text only. Every enum-like field is an open string.",
				"operationId": "getSeo",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "site",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SeoResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read one site's SEO tab",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/seo/receipt-clicks": {
			"post": {
				"deprecated": false,
				"description": "The person pressed Start on the receipt line's Google move (`backlog_task_id`). Product analytics only: nothing is stored and nothing starts. A task that is not one of the workspace's Google moves (`seo:*` keys) is a 404.",
				"operationId": "recordSeoReceiptClick",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SeoReceiptClickRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Record a press of the SEO receipt line",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/seo/sites/{site_id}/listings/google_business/check": {
			"post": {
				"deprecated": false,
				"description": "Reads Google's public profile of the business now: claimed, permanently closed, rating and review count, and up to 3 fixes where it disagrees with the site. Syndai pays; nothing is charged. At most once per 24 hours: a second press returns the stored result with no new read. Returns the Listings section. A site that is not a local business is 404. Needs `coding:apps:publish`; a portal member who is not an owner or admin is 403.",
				"operationId": "checkSiteGoogleListing",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SeoListingsRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Check the Google Business Profile again",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/seo/sites/{site_id}/listings/{key}": {
			"put": {
				"deprecated": false,
				"description": "The owner's mark on one place a local business lists itself (`google_business`, `bing_places`, `yelp`, `apple_business`, `facebook_page`, `nextdoor`): `state` `done`, `skipped` or `todo` (clears it). `review_link` (Google only, else 400): the business's own review link, https `g.page/r/...` or `search.google.com/local/writereview...`, at most 500 characters (anything else is 422 with nothing written); `null` clears it. Returns the Listings section. An unknown key, or a site that is not a local business, is 404. Needs `coding:apps:publish`; a portal member who is not an owner or admin is 403.",
				"operationId": "markSiteListing",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "key",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SeoListingMarkRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SeoListingsRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Mark a listing or set Google's review link",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites": {
			"get": {
				"deprecated": false,
				"description": "Every site of the workspace, oldest first: `hosted` (published by Syndai, listed while live on an active repository), `github` (a repository deployed elsewhere) and `website` (an address only, no longer supported: its `state` is `unsupported` and it has no moves). `state` is an open string: `needs_address`, `connect_google`, `ready`, `members_only`, `offline`, `lost` or `unsupported`. `google_state` is an open string: `none`, `pending`, `restricted`, `full` or `lost`. `open_moves` counts the site's listed search moves. With `repo`, returns that repository's site in any state, or an empty list when it has none yet.",
				"operationId": "listSites",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "repo",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SiteListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List the workspace's sites",
				"tags": [
					"Sites"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Set a GitHub repository's address (`source: github`, `coding_repository_id` + `origin`), or say it has no website (`no_website: true`); the call upserts the repository's one site, and a new address forgets the old one's Google connection and moves. Syndai works on search only for sites it hosts or repositories it can change, so any other `source` is a 400. Addresses are stored as `https://<lowercase host>`; addresses on the Syndai apps domain, IP addresses and private names are refused (400). An address another site of the workspace has, or a repository Syndai hosts, is a 409. Returns the site's `/sites` row. A site with an address also starts the workspace's own Google identity (the Connect card shows it).",
				"operationId": "connectSite",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SiteCreateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SiteListItemRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Connect a site",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/answers": {
			"post": {
				"deprecated": false,
				"description": "Starts paid work: asks 1-5 questions on ChatGPT (with web search), Gemini, Google AI Mode and the Google AI Overview in the background, and judges whether each answer names the business, cites its site and gets its phone, address or claims wrong; poll `GET .../answers/latest` for the result. Charged from credits after it runs: vendor cost x 1.20, never above the estimate's `max_usd`. A check already in flight is returned as-is (nothing new is charged); no question is 400, a 4th check of the site today is 429 `check_limit`, too few credits for the worst case is 402 before any vendor call. Needs `coding:apps:publish`; a portal member who is not an owner or admin is 403.",
				"operationId": "startAnswerCheck",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AnswerCheckRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AnswerCheckResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Start an Ask AI check",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/answers/estimate": {
			"get": {
				"deprecated": false,
				"description": "Prices an Ask AI about my business check without starting one: up to 5 questions drafted from the business brief (no model call) and the price billed from credits in USD: `max_usd` for those questions, `base_usd` plus `per_question_usd` to re-price an edited list, `headroom_usd` (credits spendable now) and `runs_left` today (3 checks a site a UTC day). Spends nothing; needs `coding:apps:read`.",
				"operationId": "estimateAnswerCheck",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AnswerEstimateRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Price an Ask AI check",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/answers/latest": {
			"get": {
				"deprecated": false,
				"description": "The site's newest check (`null` before the first), polled while it runs. A check lost in flight reads `failed`. Answer and source text came from AI engines: render it as text only.",
				"operationId": "getLatestAnswerCheck",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AnswerCheckResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read the latest Ask AI check",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/google": {
			"delete": {
				"deprecated": false,
				"description": "The workspace's Google identity gives up its access to the site's Search Console property (best effort), then the site stops syncing and its search data and open search moves are deleted. The change is recorded in the workspace's audit log. Needs `coding:apps:publish`; 404 for a site outside this workspace.",
				"operationId": "disconnectSiteGoogle",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Disconnect a site from Google",
				"tags": [
					"Sites"
				]
			},
			"get": {
				"deprecated": false,
				"description": "The workspace's own Google identity (`workspace_email`, null until Google can see it, about a minute after Syndai makes it) and its access to the site's Search Console property. `state`: `none`, `pending` (Syndai is verifying the site), `restricted` or `full` (Ready; index checks need Full), `lost`. GitHub projects only. `opened=true` marks the card's first read when it opens (product analytics); its polls omit it.",
				"operationId": "getSiteGoogle",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "opened",
						"required": false,
						"schema": {
							"default": false,
							"type": "boolean"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GoogleAccessRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read a site's Google connection",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/google/check": {
			"post": {
				"deprecated": false,
				"description": "Lists the properties the workspace's Google identity can read and matches only this site's own address. A match makes the site Ready and queues its first sync, which then reads that site's sitemap, index status and moves within minutes.",
				"operationId": "checkSiteGoogle",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GoogleAccessRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Ask Google again whether the site is connected",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/google/verify": {
			"post": {
				"deprecated": false,
				"description": "For an owner with no Search Console (or who isn't its owner). Returns the meta tag a one-file PR adds to the site in `verification` (`method: github_pr`); Google accepts several verification tags, so it never replaces another owner's. `owner_email` (the requesting member's own Google account) becomes an owner when the verification is confirmed. Needs `coding:apps:publish` and a signed-in person (an API key is 403 `forbidden`); 503 `identity_not_ready` when Google isn't set up.",
				"operationId": "startSiteVerification",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/VerifyRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GoogleAccessRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Start Syndai verifying a site with Google",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/google/verify/confirm": {
			"post": {
				"deprecated": false,
				"description": "The code is live: verifies the site as the workspace identity, adds the property, makes `owner_email` (default: the signed-in member's email) an owner and reads access. Refusals: `not_verified_yet` (409: Google can't see the code yet), `not_a_google_account` (422), `invalid_email` (422), `forbidden` (403: an API key rather than a signed-in person). Needs `coding:apps:publish`.",
				"operationId": "confirmSiteVerification",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "site_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/ConfirmRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GoogleAccessRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Finish verifying a site with Google",
				"tags": [
					"Sites"
				]
			}
		},
		"/api/v1/external/coding/environments": {
			"get": {
				"deprecated": false,
				"description": "The workspace's environments in display order; `default` is where runs (and `syndai run` with no `--env`) go.",
				"operationId": "listEnvironments",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalEnvironmentListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List environments",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/findings": {
			"get": {
				"deprecated": false,
				"description": "List the tenant's bug-scan findings in every state (`open`, `running`, `done`, `wontfix`), open first, then by priority, then most recently updated. Each carries the full finding and, once a fix run is linked, its newest PR. An app finding (`finding.category` = `ui`) adds `media` (its recorded clip, then the failed step's still, as short-lived signed URLs) and `expected` (the criterion text of the saved walkthrough it breaks, or the rule in plain words). Fix one by sending its `id` as `backlog_task_id` on POST /runs; dismiss one with a reason on POST /backlog/{id}/dismiss.",
				"operationId": "listBugFindings",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "state",
						"required": false,
						"schema": {
							"enum": [
								"open",
								"running",
								"done",
								"wontfix",
								null
							],
							"type": [
								"null",
								"string"
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/BugFindingListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List bug-scan findings",
				"tags": [
					"Findings"
				]
			}
		},
		"/api/v1/external/coding/me": {
			"delete": {
				"deprecated": false,
				"description": "Revoke the API key making this call, effective immediately; its next request is a 401. API keys only. Returns 204 with no body.",
				"operationId": "revokeMe",
				"parameters": [],
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Revoke the calling API key",
				"tags": [
					"Account"
				]
			},
			"get": {
				"deprecated": false,
				"description": "Return the calling API key's workspace, key id, name, scopes and expiry; never its secret. API keys only: a signed-in browser session is a 401. A `syndai` CLI below the minimum supported version is a 426.",
				"operationId": "getMe",
				"parameters": [],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalApiKeyMeResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get the calling API key",
				"tags": [
					"Account"
				]
			}
		},
		"/api/v1/external/coding/members": {
			"get": {
				"deprecated": false,
				"description": "Every member of the workspace with their email, role and join time, plus the live API keys and connected plans each one created (what removing them would revoke). Requires the `coding:members:read` scope.",
				"operationId": "listMembers",
				"parameters": [],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MembersListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List members",
				"tags": [
					"Members"
				]
			}
		},
		"/api/v1/external/coding/members/accept": {
			"post": {
				"deprecated": false,
				"description": "Join the inviting workspace as the signed-in user, with the role on the invite. The user's email must match the invite (403 `EMAIL_MISMATCH`); an expired invite is 410 and an unknown, revoked or already-used token is 400. Accepting again as the same user returns the existing membership with 200.",
				"operationId": "acceptInvite",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AcceptRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"410": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Expired invite token"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Accept an invite",
				"tags": [
					"Members"
				]
			}
		},
		"/api/v1/external/coding/members/invite": {
			"post": {
				"deprecated": false,
				"description": "Create an invite for an email address with a role (default `member`) and return its token. The token is shown only in this response and the invite expires after 7 days. Requires the `coding:members:write` scope; inviting an `owner` needs an owner caller (403 otherwise, and API keys never count as owners).",
				"operationId": "inviteMember",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/InviteCreateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InviteCreateResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Invite a member",
				"tags": [
					"Members"
				]
			}
		},
		"/api/v1/external/coding/members/invites": {
			"get": {
				"deprecated": false,
				"description": "Invites that are not yet accepted, revoked or expired, newest first. Invite tokens are never returned here. Requires the `coding:members:read` scope.",
				"operationId": "listInvites",
				"parameters": [],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/InvitesListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List pending invites",
				"tags": [
					"Members"
				]
			}
		},
		"/api/v1/external/coding/members/invites/{invite_id}": {
			"delete": {
				"deprecated": false,
				"description": "Expire a pending invite so its token can no longer be accepted; 404 if the invite is not in this workspace. Revoking an `owner` invite needs an owner caller. Requires the `coding:members:write` scope.",
				"operationId": "revokeInvite",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "invite_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Revoke an invite",
				"tags": [
					"Members"
				]
			}
		},
		"/api/v1/external/coding/members/{membership_id}": {
			"delete": {
				"deprecated": false,
				"description": "Remove a member from the workspace. The API keys they created and the plans they connected are revoked in the same step, and their private chats in this workspace are deleted. Requires `coding:members:write`; only an owner caller may remove an owner, and the last owner can never be removed.",
				"operationId": "revokeMember",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "membership_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Remove a member",
				"tags": [
					"Members"
				]
			},
			"patch": {
				"deprecated": false,
				"description": "Set one member's role (400 for an unknown role, 404 for an unknown member). Only an owner caller may grant `owner` or change an owner, and the last owner cannot be demoted (409). Lowering someone from owner or admin to member or viewer revokes the API keys and plans they created. Requires `coding:members:write`.",
				"operationId": "changeMemberRole",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "membership_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RoleChangeRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/MemberRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Change a member's role",
				"tags": [
					"Members"
				]
			}
		},
		"/api/v1/external/coding/policy/defaults": {
			"get": {
				"deprecated": false,
				"description": "The current default policy config and its version, for the whole workspace or, with `coding_repository_id`, for one repository. Returns 404 when no default is set for that scope. Requires the `coding:policy:read` scope.",
				"operationId": "getPolicyDefaults",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "coding_repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PolicyDefaultsRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get the default policy",
				"tags": [
					"Policy"
				]
			},
			"put": {
				"deprecated": false,
				"description": "Validate a policy config and save it as the new current default, for the workspace or for one repository, as a new version. An invalid config is 400 `INVALID_POLICY`, and a repository outside this workspace is 422 `REPO_NOT_BOUND`. Requires the `coding:policy:write` scope.",
				"operationId": "putPolicyDefaults",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PolicyDefaultsPutRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PolicyDefaultsPutResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Repository not bound"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Replace the default policy",
				"tags": [
					"Policy"
				]
			}
		},
		"/api/v1/external/coding/policy/defaults/history": {
			"get": {
				"deprecated": false,
				"description": "Up to the 50 most recent versions of the default policy for the workspace (or one repository with `coding_repository_id`), newest first, with the current one marked. Requires the `coding:policy:read` scope.",
				"operationId": "listPolicyDefaultsHistory",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "coding_repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PolicyDefaultsHistoryResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List default policy versions",
				"tags": [
					"Policy"
				]
			}
		},
		"/api/v1/external/coding/policy/schema": {
			"get": {
				"deprecated": false,
				"description": "The JSON Schema a policy config must match. Use it to build or check a config before saving it as a default. Requires the `coding:policy:read` scope.",
				"operationId": "getPolicySchema",
				"parameters": [],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"additionalProperties": true,
									"type": "object"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get the policy schema",
				"tags": [
					"Policy"
				]
			}
		},
		"/api/v1/external/coding/repos": {
			"get": {
				"deprecated": false,
				"description": "List the active repositories in your workspace that runs can target, ordered by provider and full name. Requires the `coding:repos:read` scope.",
				"operationId": "listRepos",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalRepositoryListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List repositories",
				"tags": [
					"Repositories"
				]
			}
		},
		"/api/v1/external/coding/repos/{coding_repository_id}": {
			"patch": {
				"deprecated": false,
				"description": "Changes any of `display_name` (the label only; clone URLs and app addresses keep the provider's name), `protected_paths`, `trust_owner_changes` and `allow_automation_changes`; omitted fields are unchanged and an empty body is 400 `EMPTY_UPDATE`. Protected files and owner trust work on Syndai-hosted projects only (422 otherwise). An API key may only add protected patterns; loosening them or flipping owner trust is 403 `HUMAN_APPROVAL_REQUIRED`. `allow_automation_changes` needs a signed-in workspace owner and the current `expected_updated_at` (409 when stale). 404 for a repository that is not yours.",
				"operationId": "updateRepo",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CodingRepositoryUpdateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CodingRepositoryRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method; or EMPTY_UPDATE, or an invalid protected-file pattern"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access; or HUMAN_APPROVAL_REQUIRED: a key may only append plain patterns"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "PROTECTED_PATHS_MANAGED_ONLY: a GitHub repository"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Update a repository's settings",
				"tags": [
					"Repositories"
				]
			}
		},
		"/api/v1/external/coding/repos/{coding_repository_id}/docs": {
			"get": {
				"deprecated": false,
				"description": "Whether Syndai keeps this repository's API docs up to date (`enabled`) and publishes them on its site (`published`, with `public_url` once live), the docs mode (`generate`, `adapter` when an existing docs tool is found, named by `adapter_marker`, or `none` when no API was found; an open string), and what the default branch's bundle says: the commit its examples ran against (`source_tree_sha`), when it landed (`checked_at`), checked and not-checked example counts, and `commits_since`, the commits since then that touched source files (null when unknown). `reference_md` and `llms_txt` are the bundle's `docs/api.md` and `docs/llms.txt`. `publish_blocked` says why publishing is off. A repository that cannot be read returns `repo_readable: false` with the settings. 404 for a repository that is not yours.",
				"operationId": "getDocs",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DocsStatusRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a repository's API docs status",
				"tags": [
					"Docs"
				]
			},
			"put": {
				"deprecated": false,
				"description": "Turns `enabled` (keep the API docs up to date in each change's pull request; adds sandbox minutes, billed as credits, to changes that touch the API) and `published` (serve them at your site's `/docs`; free) on or off. Omitted fields are unchanged. Both default off. 409 before the project's first change; start one, then retry. Returns the same body as GET. 404 for a repository that is not yours.",
				"operationId": "setDocs",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DocsSettingsUpdate"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DocsStatusRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Change a repository's API docs settings",
				"tags": [
					"Docs"
				]
			}
		},
		"/api/v1/external/coding/repos/{coding_repository_id}/text-edits": {
			"post": {
				"deprecated": false,
				"description": "Replace one literal piece of text on a live static site, without starting a coding run. Returns 202 when the edit was committed and 200 when it was already applied. While a run or landing holds the repository it is a 409 `RUN_IN_FLIGHT` naming the blocking `run_id`: wait, then retry. Requires `coding:apps:publish`.",
				"operationId": "createTextEdit",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SiteTextEditRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SiteTextEditResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "RUN_IN_FLIGHT (a run or a landing holds the site; see run_id) or TEXT_EDIT_REFUSED"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "TEXT_EDIT_REFUSED: the new text did not pass content review"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "TEXT_EDIT_REFUSED: the site's source or content review is unreachable; retry"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Edit text on a live site",
				"tags": [
					"Repositories"
				]
			}
		},
		"/api/v1/external/coding/repos/{coding_repository_id}/text-edits/{commit_sha}/undo": {
			"post": {
				"deprecated": false,
				"description": "Revert a text edit by its commit SHA, restoring the exact file from before the edit as long as nothing has changed it since. Returns 202 when the undo was committed. An unknown edit is a 404. Requires the `coding:apps:publish` scope.",
				"operationId": "undoTextEdit",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "commit_sha",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SiteTextEditResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "RUN_IN_FLIGHT (a run or a landing holds the site; see run_id) or TEXT_EDIT_REFUSED"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "TEXT_EDIT_REFUSED: the new text did not pass content review"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"503": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "TEXT_EDIT_REFUSED: the site's source or content review is unreachable; retry"
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Undo a text edit",
				"tags": [
					"Repositories"
				]
			}
		},
		"/api/v1/external/coding/repositories/{repository_id}/bug-scan": {
			"get": {
				"deprecated": false,
				"description": "Returns whether the weekly bug scan is on or paused, its next scheduled time, the last scan, the per-scan limit, whether a scan is queued or running, and what will pay for the next scan (`funding`, an open string: a connected subscription, your own model key, the account's free scan, or credits). 404 for a repository that is not yours.",
				"operationId": "getBugScan",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/BugScanRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a repository's weekly bug scan",
				"tags": [
					"Findings"
				]
			},
			"put": {
				"deprecated": false,
				"description": "Turn the weekly bug scan on or off, and set its per-scan limit. Turning it on schedules a scan every Monday 07:00 in your timezone and starts a first scan of the repository's busiest areas now; turning it back on after turning it off resumes the schedule without a new scan. Turning it off pauses it and cancels a scan in progress. limit_usd (5 to 300, default 25) caps each scan: it checks the busiest changes that fit and stops there; GET shows what pays for the next scan. Idempotent.",
				"operationId": "setBugScan",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/BugScanUpdateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/BugScanRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Turn a repository's weekly bug scan on or off",
				"tags": [
					"Findings"
				]
			}
		},
		"/api/v1/external/coding/repositories/{repository_id}/bug-scan/run": {
			"post": {
				"deprecated": false,
				"description": "Scan now, even when nothing changed since the last scan. 409 CONFLICT when the bug scan is off or a scan is already queued or running. Returns 202 with the queued scan's `occurrence_id`; the scan is capped by the per-scan limit.",
				"operationId": "runBugScanNow",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "repository_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/BugScanRunNowResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "The bug scan is off, or a scan already started this minute"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Run a bug scan now",
				"tags": [
					"Findings"
				]
			}
		},
		"/api/v1/external/coding/runs": {
			"get": {
				"deprecated": false,
				"description": "List coding runs, keyset-paginated over the full run set for a chunked, resumable bootstrap. Ordering is server-owned: newest `created_at`, then id descending, never reshuffled between pages, so a re-delivered row lands in exactly one page. `limit` is the page size (default 50, clamped to 200; always follow `next_cursor`). Pass the prior response's opaque `next_cursor` as `after` to fetch the next page; `next_cursor` is null at the end. Each run carries its per-viewer attention state. `coding_repository_id` narrows to one project; `needs=owner` to the runs waiting on the owner: a question, a held landing, or a finished pull request to review or put live.",
				"operationId": "listRuns",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": {
							"default": 50,
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "after",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "coding_repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "needs",
						"required": false,
						"schema": {
							"enum": [
								"owner",
								null
							],
							"type": [
								"null",
								"string"
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List runs",
				"tags": [
					"Runs"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Start a coding run on a repository or a new project; this starts billable work. `external_request_id` is the idempotency key: re-sending a key you already used starts nothing and returns 409 with a `Location` header naming the existing run. Run phases are open-ended, so poll `GET /runs/{id}` or stream its events rather than assuming an order. Requires the `coding:runs:create` scope.",
				"operationId": "createRun",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalCodingRunCreateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunCreateResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"402": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Budget exhausted"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Idempotency replay",
						"headers": {
							"Location": {
								"description": "Canonical URL for the existing resource",
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Create a run",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/artifact-ingest": {
			"post": {
				"deprecated": false,
				"description": "Upload one native executable (ELF only, base64 in JSON) for a run to learn from. The format is read from the bytes and the SHA-256 computed by the server; a sent `expected_sha256` must match or nothing is stored. Pass the returned `artifact` as `reference_product.value` (kind `artifact`) on run create; the same bytes always return the same reference. Too large is a 413, malformed or unsupported a 400.",
				"operationId": "ingestReferenceArtifact",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ArtifactIngestRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ArtifactIngestResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Upload an executable for a run to learn from",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/image-ingest": {
			"post": {
				"deprecated": false,
				"description": "Upload an image (base64 in JSON) to attach to a run. The server checks the file type from its bytes and its size, stores it privately for your workspace, and returns an `object_key` to pass in `image_refs` when you create the run. Requires the `coding:runs:create` scope.",
				"operationId": "ingestRunImage",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ImageIngestRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ImageIngestResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Upload an image for a run",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}": {
			"get": {
				"deprecated": false,
				"description": "Read a run's full current state. Run phases are open-ended: poll this endpoint or stream the run's events and act on the state you see, rather than assuming a fixed order of phases. Requires the `coding:runs:read` scope.",
				"operationId": "getRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a run",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/cancel": {
			"post": {
				"deprecated": false,
				"description": "Cancel a run and discard it: the run stops without delivering its work (use `POST /runs/{id}/stop` to keep the work). Cancelling a run that already ended changes nothing. Returns the run's status; a 409 means the run is busy, so retry. Requires the `coding:runs:cancel` scope.",
				"operationId": "cancelRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/CodingRunCancelRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Cancel a run",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/change": {
			"get": {
				"deprecated": false,
				"description": "ChangeState: `state`, a server-written `headline`, the questions it waits on (`needs_input`), a hold and its `review_url`, `live_url`, `done` and the CLI's `exit_code`. Pass the last `cursor` with `wait` (seconds, at most 45) to block until something that matters changes; without a `cursor` it answers at once. It may return early, unchanged, when the server restarts: call again.",
				"operationId": "getChangeState",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "wait",
						"required": false,
						"schema": {
							"default": 0,
							"maximum": 45.0,
							"minimum": 0.0,
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "cursor",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"maxLength": 64,
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ChangeStateResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a run's change state",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/criteria/cosign": {
			"post": {
				"deprecated": false,
				"description": "Attaches a person's signature to criteria that were approved automatically when the review window lapsed, upgrading them to human-ratified. If the run has already delivered, its signed receipt is re-issued from the upgraded criteria. Safe to repeat. Needs a signed-in person (an API key gets 401) allowed to review the run (otherwise 403). Returns the run's fresh status.",
				"operationId": "cosignRunCriteria",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Co-sign an auto-approved run's criteria",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/criteria/ratify": {
			"post": {
				"deprecated": false,
				"description": "Ratifies the run's drafted acceptance criteria as the signed-in person, signs the reviewed spec, closes the spec review and lets the build start now. Pass the review round you are looking at as `base_round`; a stale round, a closed review or a cancelled run returns 409. Needs a signed-in person (an API key gets 401) who started the run, or an owner/admin for a run nobody started (otherwise 403). Returns the run's fresh status.",
				"operationId": "ratifyRunCriteria",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "base_round",
						"required": true,
						"schema": {
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Spec review conflict"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Confirm a run's acceptance criteria",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/criteria/{criterion_key}/edit": {
			"post": {
				"deprecated": false,
				"description": "Rewrites the text of one drafted criterion before you confirm the criteria, and restarts a timed review's wait window. Send the review round you are looking at as `base_round`. Returns 400 for empty text and 409 when the round is stale, the review is closed, the run was cancelled, or the criterion is already ratified. Needs a signed-in person allowed to review the run (an API key gets 401, another member 403). Returns the run's fresh status.",
				"operationId": "editCriterion",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "criterion_key",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalCriterionEditRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Spec review conflict"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Edit a drafted acceptance criterion",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/events": {
			"get": {
				"deprecated": false,
				"description": "Stream a run's events: its durable history first, then live events. Live events carry an SSE `id` (a stream position); history and the reset frame carry none, and heartbeats carry the current position. Reconnect with the last `id` you saw as `Last-Event-ID` to resume exactly after it, late events included; a position too old to resume sends the run's full history again. `since_global_seq` (or a numeric `Last-Event-ID`) starts the history after that sequence. An event can arrive more than once across reconnects: dedupe on `event_id`. Within one connection each event is sent once.",
				"operationId": "streamRunEvents",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "since_global_seq",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "integer"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"text/event-stream": {
								"schema": {}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Stream a run's events",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/land/close": {
			"post": {
				"deprecated": false,
				"description": "Gives up on a landing that is on hold and marks it failed; an open pull request stays open. Returns 409 when the landing is not held, and 404 when the run did not land on its own. An API key may call this; a signed-in person must be a workspace owner or admin (403).",
				"operationId": "closeRunLand",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalLandStepResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Close a held landing",
				"tags": [
					"Landing"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/land/go-live": {
			"post": {
				"deprecated": false,
				"description": "Queues a finished change on a Syndai-hosted project to land through every check, and returns 202 with its landing; poll `GET /runs/{id}` to follow it. Returns 409 when the run is not eligible, is already live, or is already landing. On a held landing only a person may decide: an API key gets 403 `HUMAN_APPROVAL_REQUIRED`. A signed-in person must be a workspace owner or admin.",
				"operationId": "goLiveRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalLandStepResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access; or HUMAN_APPROVAL_REQUIRED: a held change"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "not_eligible, already_live or in_flight"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Send a finished change live",
				"tags": [
					"Landing"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/land/held-diff": {
			"get": {
				"deprecated": false,
				"description": "For a landing held for the owner's review (protected paths or agent configuration changed), returns every held path with its change kind, file modes and a unified diff (at most 64 KB each, null for binary files), plus the `head_sha` an approval must name. Reading is not approving, so an API key may call this. Returns 404 when the run did not land on its own, and 409 when the change is not waiting for review.",
				"operationId": "getRunHeldDiff",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalLandHeldDiffResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "not_held: the step is not held for owner review"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get the diff of a held change",
				"tags": [
					"Landing"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/land/merge-anyway": {
			"post": {
				"deprecated": false,
				"description": "Records a person's consent to land a change that was held before landing, past the checks that held it; the landing is still verified live afterwards. Send the `head_sha` you reviewed: 409 if the change moved since, or if it is not held for a reason you can override. This is a human decision: an API key gets 403 `HUMAN_APPROVAL_REQUIRED` with a `review_url`, and a signed-in person must be a workspace owner or admin.",
				"operationId": "mergeRunLandAnyway",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalLandMergeAnywayRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalLandStepResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access; or HUMAN_APPROVAL_REQUIRED: an API key; the owner approves at review_url"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "not_held or head_moved"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Go live anyway with a held change",
				"tags": [
					"Landing"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/land/retry": {
			"post": {
				"deprecated": false,
				"description": "Restarts a landing that is on hold as a fresh attempt: from the beginning, or from the post-landing checks when the change already landed (it never merges twice). Any earlier \"go live anyway\" consent is dropped. Returns 409 when the landing is not held, and 404 when the run did not land on its own. An API key may call this; a signed-in person must be a workspace owner or admin (403).",
				"operationId": "retryRunLand",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalLandStepResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Retry a held landing",
				"tags": [
					"Landing"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/live": {
			"get": {
				"deprecated": false,
				"description": "Read a run's lightweight live view: its goal, current activity, brief and liveness. It is cheaper than `GET /runs/{id}` and meant for frequent polling. Pass `after` (the highest activity id you have seen) to receive only newer activity.",
				"operationId": "getRunLive",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "after",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunLiveResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a run's live view",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/plan/request-changes": {
			"post": {
				"deprecated": false,
				"description": "Submits review comments on the plan the run is waiting on (quoted spans, suggested edits, and/or an overall comment) and wakes the agent to revise it; poll `GET /runs/{id}` for the next plan. Send the `plan_sha256` you reviewed; replaying the same `idempotency_key` with the same batch is a no-op, with a different batch 409. Also 409 when the plan changed, plan review is not open, the agent is still revising, too many comments are unanswered, or the run was cancelled. Needs a signed-in person allowed to review the run (an API key gets 401, another member 403).",
				"operationId": "requestPlanChanges",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalPlanRequestChangesRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Request changes to a run's plan",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/plan/{plan_sha256}": {
			"get": {
				"deprecated": false,
				"description": "Returns the full reviewable text and revision number of the run's current or previous plan, addressed by its SHA-256 digest from the run status. Returns 404 when the run has no plan with that digest. Read-only.",
				"operationId": "getRunPlanText",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "plan_sha256",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalPlanTextRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get the full text of a run's plan",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/proposed-diff": {
			"get": {
				"deprecated": false,
				"description": "Read the unified diff a run delivered. Large diffs are cut to a bound and `truncated` is then true. 404 when the run has no delivered diff yet.",
				"operationId": "getRunProposedDiff",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalRunProposedDiffResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a run's delivered diff",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/rename": {
			"post": {
				"deprecated": false,
				"description": "Change a run's display title and return its fresh status. The title is cosmetic: it never changes the run's `external_request_id` (its idempotency key) or its work. A 409 means the run is busy, so retry. Requires the `coding:runs:respond` scope.",
				"operationId": "renameRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalCodingRunRenameRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Rename a run",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/responses": {
			"post": {
				"deprecated": false,
				"description": "Answer a question a run is waiting on, identified by `hitl_request_id`. `idempotency_key` is required and makes a retry safe: `deduped` in the response says whether this answer had already been applied. Answering a run that has already ended is a 409. Requires the `coding:runs:respond` scope.",
				"operationId": "respondToRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalCodingRunRespondRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunRespondResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Run cannot accept this response"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Answer a run's question",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/revert": {
			"post": {
				"deprecated": false,
				"description": "Starts a revert run that undoes the change this run landed, and returns that run with its landing. Starting a revert is a new run of its own, so it does work like any run; calling again while a revert is open returns the same one. Returns 409 when the change has not landed, or when newer changes landed on top of it and `force` is not set. An API key may call this; a signed-in person must be a workspace owner or admin (403). 404 when the run did not land on its own.",
				"operationId": "revertRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/ExternalLandRevertRequest"
									},
									{
										"type": "null"
									}
								]
							}
						}
					},
					"required": false
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalLandRevertResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Revert a landed change",
				"tags": [
					"Landing"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/spec/extend-review": {
			"post": {
				"deprecated": false,
				"description": "Gives you more time to review: restarts a timed review's wait window at 15 minutes (capped at the overall review limit) before the run proceeds on its own. Does nothing for a run that waits indefinitely, proceeds automatically, or whose review is over. Needs a signed-in person allowed to review the run (an API key gets 401, another member 403). Returns the run's fresh status.",
				"operationId": "extendSpecReview",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Extend a run's spec review window",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/spec/request-changes": {
			"post": {
				"deprecated": false,
				"description": "Submits review feedback (annotations on criteria, the brief or the goal, and/or an overall comment) and queues an asynchronous revision of the spec; poll `GET /runs/{id}` for the next review round. Replaying the same `idempotency_key` records nothing twice and queues no second revision. Returns 400 for an empty or invalid batch and 409 when `base_round` is stale, the review is closed, the run was cancelled, or no spec has been drafted yet. Needs a signed-in person allowed to review the run (an API key gets 401, another member 403).",
				"operationId": "requestSpecChanges",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalSpecRequestChangesRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Spec review conflict"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Request changes to a run's drafted spec",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/spec/skip-review": {
			"post": {
				"deprecated": false,
				"description": "Closes the spec review and lets the build start now on the drafted spec as it stands; the criteria stay drafted rather than ratified. Pass the review round you are looking at as `base_round`; a stale round, a closed review or a cancelled run returns 409. Needs a signed-in person allowed to review the run (an API key gets 401, another member 403). Returns the run's fresh status.",
				"operationId": "skipSpecReview",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "base_round",
						"required": true,
						"schema": {
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Spec review conflict"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Start building without confirming the spec",
				"tags": [
					"Run review"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/steer": {
			"post": {
				"deprecated": false,
				"description": "Send guidance to a run in progress; the agent receives it at its next turn. A run that has already ended is a 409: start a follow-up run instead. Requires the `coding:runs:respond` scope.",
				"operationId": "steerRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalRunSteerCreate"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalRunSteerResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Steer a run in progress",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{coding_run_id}/stop": {
			"post": {
				"deprecated": false,
				"description": "Stop a run and save its work so far as a draft pull request, unlike cancel, which discards it. The stop completes asynchronously (a working run stops within about a minute), so follow `GET /runs/{id}` or the event stream until the run ends. A repeat stop, or a stop on a run that already ended, changes nothing. Requires the `coding:runs:cancel` scope.",
				"operationId": "stopRun",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "coding_run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"202": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalCodingRunStatusResponse"
								}
							}
						},
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Stop a run and keep its work",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/runs/{run_id}/timeline": {
			"get": {
				"deprecated": false,
				"description": "Read a run's timeline: one entry per recorded event, with its kind, name, time, sequence number and redacted evidence. A run outside your workspace is a 404. Requires the `coding:runs:read` scope.",
				"operationId": "getRunTimeline",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "run_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/RunTimelineResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a run's timeline",
				"tags": [
					"Runs"
				]
			}
		},
		"/api/v1/external/coding/schedules": {
			"get": {
				"deprecated": false,
				"description": "Lists your schedules newest first, a page at a time (`limit`, default 50; pass `next_cursor` back as `cursor`). Pass `coding_repository_id` to list one project's schedules; an unknown repository lists nothing. A malformed cursor returns 400.",
				"operationId": "listSchedules",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": {
							"default": 50,
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "cursor",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "coding_repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ScheduleListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List schedules",
				"tags": [
					"Schedules"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Create a recurring coding-run schedule. Each fire runs the saved prompt as a coding run, with the saved `policy_config`.\n\nSupervised or autonomous is `policy_config.autonomy`:\n\n| You want | `policy_config.autonomy` | What each fire does |\n|---|---|---|\n| Review every change | `auto` (or omit: the project default applies at fire time) | Opens a PR; while it is unmerged the next slot rests |\n| Approve before a PR exists | `gated` | Holds for approval up to 24 h, then cancels; later slots skip while it holds |\n| Fully autonomous | `merge` | Lands when every gate is green, while the key or person that saved the policy may still merge |\n| Fully autonomous, no PR | `push` | Fast-forwards the default branch (API only) |\n\n- `trigger` is a 5-field cron with an IANA timezone, at most every 15 minutes; runs start within 5 minutes of the slot.\n- Scheduled runs never ask clarifying questions and never hold for plan review. They get one design direction.\n- `occurrence_budget_usd` caps each fire.\n- `from_coding_run_id` repeats an existing run: the schedule runs that run's original, full prompt on its repository. Omit `prompt` and `coding_repository_id` with it; send both without it.\n- With `skip_if_no_new_commits` (default `true`) a slot rests while the default branch has not moved since the last successful run, so closing a PR without merging keeps the job resting until the next commit. Send `false` for jobs driven by the outside world (news, registry bumps).\n- Merging stands only while its consent does: the API key that saved the policy must stay unrevoked, or the person must stay an owner or admin. Otherwise the fire opens a PR and its occurrence summary says so; re-saving the policy restores merging.\n- Out of credits or over the monthly spend ceiling, a fire is skipped with a summary that says so, and the next slot retries on its own.\n- A schedule needs an existing repository: create one with a New-project run (`new_repository`), or connect GitHub.\n- Fires spend nothing until `schedule_paid_on` is `true`: only a workspace owner or admin (or a key one of them created) may set it (403 otherwise), and it needs `occurrence_budget_usd` (400 otherwise). A fire without that consent does not run.\n- Send `client_request_id` to make the create safe to retry: a replay returns 409 with a `Location` header naming the existing schedule.",
				"operationId": "createSchedule",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ScheduleCreateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ScheduleRead"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Idempotency replay",
						"headers": {
							"Location": {
								"description": "Canonical URL for the existing resource",
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Create a schedule",
				"tags": [
					"Schedules"
				]
			}
		},
		"/api/v1/external/coding/schedules/{schedule_id}": {
			"delete": {
				"deprecated": false,
				"description": "Permanently deletes a schedule; it stops firing. Returns 204, and 404 for a schedule that is not yours.",
				"operationId": "deleteSchedule",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "schedule_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Delete a schedule",
				"tags": [
					"Schedules"
				]
			},
			"get": {
				"deprecated": false,
				"description": "Returns one schedule with its recent occurrences: each fire, what it did and the run it started. 404 for a schedule that is not yours.",
				"operationId": "getSchedule",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "schedule_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ScheduleDetailResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Get a schedule",
				"tags": [
					"Schedules"
				]
			},
			"patch": {
				"deprecated": false,
				"description": "Patch a schedule's prompt, trigger, policy, or budget; omitted fields are left unchanged. `policy_config` replaces the stored object; send the full object from GET. Saving `policy_config` makes the caller the consent for merging. Setting `schedule_paid_on` needs a workspace owner or admin (403) and a per-run `occurrence_budget_usd` (400). Invalid fields return 400 `INVALID_POLICY`.",
				"operationId": "updateSchedule",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "schedule_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ScheduleUpdateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ScheduleRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Update a schedule",
				"tags": [
					"Schedules"
				]
			}
		},
		"/api/v1/external/coding/schedules/{schedule_id}/pause": {
			"post": {
				"deprecated": false,
				"description": "Stops a schedule from firing on its cadence until you resume it. Run now still works while paused. Returns the updated schedule.",
				"operationId": "pauseSchedule",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "schedule_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ScheduleRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Pause a schedule",
				"tags": [
					"Schedules"
				]
			}
		},
		"/api/v1/external/coding/schedules/{schedule_id}/resume": {
			"post": {
				"deprecated": false,
				"description": "Restarts a paused schedule; its next fire is computed from now, so slots missed while paused do not run. Returns the updated schedule.",
				"operationId": "resumeSchedule",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "schedule_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ScheduleRead"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Resume a paused schedule",
				"tags": [
					"Schedules"
				]
			}
		},
		"/api/v1/external/coding/schedules/{schedule_id}/run-now": {
			"post": {
				"deprecated": false,
				"description": "Fires now, even when paused or when nothing changed since the last run. A second Run now in the same minute is 409 CONFLICT. Returns 202 once the fire is queued; the run itself appears in the schedule's occurrences (GET /schedules/{id}).",
				"operationId": "runScheduleNow",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "schedule_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"202": {
						"description": "Request accepted, processing continues off-line",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "A run for this minute already exists"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Run a schedule now",
				"tags": [
					"Schedules"
				]
			}
		},
		"/api/v1/external/coding/secrets": {
			"get": {
				"deprecated": false,
				"description": "Metadata for every stored secret in the workspace: name, environment, project, kind and status. Values are never returned. Requires the `coding:secrets:read` scope.",
				"operationId": "listSecrets",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalSecretListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List secrets",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/secrets/import": {
			"post": {
				"deprecated": false,
				"description": "Store many name/value pairs in one environment at once: either every value is saved or none is. A name listed twice or an empty value is 400, and the same provider checks as setting one secret apply (409, 422). Runs paused waiting for these secrets resume. Requires the `coding:secrets:write` scope.",
				"operationId": "importSecrets",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalSecretImportRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalSecretListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "OVERSCOPE_ACK_REQUIRED: the value is broader than its recipe needs"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "VERIFY_FAILED: the provider rejected the value"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Import secrets from a .env file",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/secrets/resolve": {
			"post": {
				"deprecated": false,
				"description": "One environment's values, merged the way a run sees them (project over shared, the environment over Test). API keys holding `coding:secrets:reveal` only, which just a browser-approved `syndai login` grants. A production environment also needs a browser approval of THIS key in the last 10 minutes: on 403 `PRODUCTION_STEP_UP_REQUIRED`, open one with `POST /api/v1/external/coding/cli/production-access`, then retry. Every returned name is audited.",
				"operationId": "resolveSecrets",
				"parameters": [],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalSecretResolveRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalSecretResolveResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access; or PRODUCTION_STEP_UP_REQUIRED: a production environment needs a browser approval of this key in the last 10 minutes; start one at POST /api/v1/external/coding/cli/production-access, then retry"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"426": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "CLI_UPGRADE_REQUIRED: run npx -y syndai@latest"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read an environment's secret values",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/secrets/{key_name}": {
			"delete": {
				"deprecated": false,
				"description": "Delete the secret stored at exactly this scope: the `environment` slug (omit for workspace-wide) and optional `repository_id`. Returns 404 if nothing is stored there. Requires the `coding:secrets:write` scope.",
				"operationId": "deleteSecret",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "key_name",
						"required": true,
						"schema": {
							"pattern": "^[A-Z][A-Z0-9_]{0,127}$",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "environment",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Delete a secret",
				"tags": [
					"Secrets"
				]
			},
			"put": {
				"deprecated": false,
				"description": "Create or replace one secret's value in an environment (and optionally one project); the value is never returned. A value for a known provider may be checked first: 409 `OVERSCOPE_ACK_REQUIRED` when it grants more than runs need (resend with `acknowledge_risk`), 422 `VERIFY_FAILED` when the provider rejects it. Runs paused waiting for this secret resume. Requires `coding:secrets:write`.",
				"operationId": "putSecret",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "key_name",
						"required": true,
						"schema": {
							"pattern": "^[A-Z][A-Z0-9_]{0,127}$",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExternalSecretPutRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ExternalSecretResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"409": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "OVERSCOPE_ACK_REQUIRED: the value is broader than its recipe needs"
					},
					"422": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "VERIFY_FAILED: the provider rejected the value"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Set a secret",
				"tags": [
					"Secrets"
				]
			}
		},
		"/api/v1/external/coding/sync/snapshot": {
			"get": {
				"deprecated": false,
				"description": "One keyset page of a sync entity's rows for the caller, the sync hydrate for `coding_run`, `coding_project` and `coding_thread_item`. `customer_id` is required. `rows` have exactly the shape of a sync delta's `data` for that entity. `versions` maps a row id to its sync version (the row's highest sync event sequence, read in the same statement as the row; a row with no sync event is omitted): apply a later delta for that row only when its sequence is higher. Server-owned ordering: newest created_at, then id descending. `limit` is the page size (default 200, clamped to 1..500). Pass the prior response's opaque `next_cursor` as `after`; `next_cursor` is null at the end. The first page (no `after`) carries `resume`: the caller's event-stream position read before the page; open `/api/v1/events/stream?after=<resume>` to receive every change since. `resume` is null on later pages and when the stream is unavailable.",
				"operationId": "getSyncSnapshot",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "entity",
						"required": true,
						"schema": {
							"enum": [
								"coding_run",
								"coding_project",
								"coding_thread_item"
							],
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "after",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": {
							"default": 200,
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/SyncSnapshotResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Read a page of sync snapshot rows",
				"tags": [
					"Account"
				]
			}
		},
		"/api/v1/external/coding/tools": {
			"get": {
				"deprecated": false,
				"description": "The workspace's custom skills and MCP servers with their safety-scan status, plus the catalog of built-in capabilities. Pass `repository_id` to also include that project's own tools (404 if the repository is not in this workspace). Requires the `coding:tools:read` scope.",
				"operationId": "listTools",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "repository_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CustomToolListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List custom tools",
				"tags": [
					"Tools"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Add a skill or MCP server, workspace-wide or for one project. Its content is safety-scanned: a flagged tool is still created but runs skip it until someone acknowledges the flag in the portal. An MCP server using OAuth stays pending until it is connected in the portal. Requires the `coding:tools:write` scope.",
				"operationId": "createTool",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CustomToolCreateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CustomToolResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Add a custom tool",
				"tags": [
					"Tools"
				]
			}
		},
		"/api/v1/external/coding/tools/{tool_id}": {
			"delete": {
				"deprecated": false,
				"description": "Delete a skill or MCP server from the workspace; 404 for an unknown tool. Requires the `coding:tools:write` scope.",
				"operationId": "deleteTool",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "tool_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"204": {
						"description": "Request fulfilled, nothing follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Delete a custom tool",
				"tags": [
					"Tools"
				]
			},
			"patch": {
				"deprecated": false,
				"description": "Edit a tool; a changed config is scanned again. Omitting an MCP server's `token` keeps the stored one, but moving the server to a new origin requires the token again. Returns 404 for an unknown tool. Requires the `coding:tools:write` scope.",
				"operationId": "updateTool",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "tool_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CustomToolUpdateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CustomToolResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Update a custom tool",
				"tags": [
					"Tools"
				]
			}
		},
		"/api/v1/external/coding/tools/{tool_id}/rescan": {
			"post": {
				"deprecated": false,
				"description": "Run the tool's safety scan again now (unscanned tools are also retried automatically). If the scan cannot complete, the earlier verdict stands. Returns 404 for an unknown tool. Requires the `coding:tools:write` scope.",
				"operationId": "rescanTool",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "tool_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CustomToolResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Rescan a custom tool",
				"tags": [
					"Tools"
				]
			}
		},
		"/api/v1/external/coding/webhook-deliveries": {
			"get": {
				"deprecated": false,
				"description": "List recent webhook deliveries across your endpoints, newest first, with each one's status and attempt count. `limit` is the page size (default 50, clamped to 1..200). Requires the `coding:webhooks:read` scope.",
				"operationId": "listWebhookDeliveries",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "limit",
						"required": false,
						"schema": {
							"default": 50,
							"type": "integer"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CustomerWebhookDeliveryListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List webhook deliveries",
				"tags": [
					"Webhooks"
				]
			}
		},
		"/api/v1/external/coding/webhook-deliveries/{delivery_id}/redeliver": {
			"post": {
				"deprecated": false,
				"description": "Queue a past webhook delivery to be sent again. The delivery's endpoint must still be active. Requires the `coding:webhooks:redeliver` scope.",
				"operationId": "redeliverWebhookDelivery",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "delivery_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CustomerWebhookDeliveryRedeliverResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Redeliver a webhook delivery",
				"tags": [
					"Webhooks"
				]
			}
		},
		"/api/v1/external/coding/webhooks": {
			"get": {
				"deprecated": false,
				"description": "List your workspace's active webhook endpoints; disabled endpoints are not included. Requires the `coding:webhooks:read` scope.",
				"operationId": "listWebhookEndpoints",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointListResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "List webhook endpoints",
				"tags": [
					"Webhooks"
				]
			},
			"post": {
				"deprecated": false,
				"description": "Register a webhook endpoint to receive deliveries for your runs. The response carries the endpoint's signing secret exactly once: store it then, it is never returned again. Requires the `coding:webhooks:write` scope.",
				"operationId": "createWebhookEndpoint",
				"parameters": [
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"requestBody": {
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/WebhookEndpointCreateRequest"
							}
						}
					},
					"required": true
				},
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointCreateResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Create a webhook endpoint",
				"tags": [
					"Webhooks"
				]
			}
		},
		"/api/v1/external/coding/webhooks/{endpoint_id}": {
			"delete": {
				"deprecated": false,
				"description": "Disable an endpoint so it receives no further deliveries. Its delivery history is kept. Requires the `coding:webhooks:write` scope.",
				"operationId": "disableWebhookEndpoint",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "endpoint_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointDisableResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Disable a webhook endpoint",
				"tags": [
					"Webhooks"
				]
			}
		},
		"/api/v1/external/coding/webhooks/{endpoint_id}/rotate-secret": {
			"post": {
				"deprecated": false,
				"description": "Mint a new signing secret for an endpoint and return it once; it is never returned again. The previous secret is retired after a 24-hour grace window (`retired_grace_until`), giving you time to move your receiver to the new one. An endpoint outside your workspace is a 404. Requires the `coding:webhooks:write` scope.",
				"operationId": "rotateWebhookSecret",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "endpoint_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"201": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WebhookSecretRotationResponse"
								}
							}
						},
						"description": "Document created, URL follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Rotate a webhook signing secret",
				"tags": [
					"Webhooks"
				]
			}
		},
		"/api/v1/external/coding/webhooks/{endpoint_id}/test": {
			"post": {
				"deprecated": false,
				"description": "Send one synthetic delivery to an endpoint and return its delivery record, so you can check your receiver and its signature verification end to end. Requires the `coding:webhooks:write` scope.",
				"operationId": "testWebhookEndpoint",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "endpoint_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					},
					{
						"allowEmptyValue": false,
						"allowReserved": false,
						"deprecated": false,
						"in": "query",
						"name": "customer_id",
						"required": false,
						"schema": {
							"oneOf": [
								{
									"format": "uuid",
									"type": "string"
								},
								{
									"type": "null"
								}
							]
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WebhookEndpointTestResponse"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"401": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Invalid or missing customer API key"
					},
					"403": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Insufficient scope or forbidden customer access"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"summary": "Send a test webhook delivery",
				"tags": [
					"Webhooks"
				]
			}
		},
		"/api/v1/public/receipts/{token}": {
			"get": {
				"deprecated": false,
				"description": "Returns the public receipt for a run share link: what was asked, what was delivered, and how it was verified. No API key; the token in the link is the credential. A revoked, unknown or malformed link returns 404. Responses are never cached, so a revoke takes effect immediately.",
				"operationId": "getPublicReceipt",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "token",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicReceiptView"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Read a shared receipt",
				"tags": [
					"Receipts"
				]
			}
		},
		"/api/v1/public/receipts/{token}/badge.svg": {
			"get": {
				"deprecated": false,
				"description": "Returns a small SVG badge that shows a shared run's verification status, for embedding in a README with `<img src>` or Markdown image syntax. No API key. A revoked or unknown link returns 404, and the badge is never cached so a revoke takes effect at once.",
				"operationId": "getPublicReceiptBadge",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "token",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"image/svg+xml": {
								"schema": {
									"type": "string"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Render a receipt's verification badge",
				"tags": [
					"Receipts"
				]
			}
		},
		"/api/v1/public/receipts/{token}/branding": {
			"get": {
				"deprecated": false,
				"description": "Returns who delivered this receipt when the workspace uses white-label reports. Returns 404 for every \"no branding\" case alike (unknown or revoked link, no branding set, or a plan without white-label), so render the receipt as Syndai's.",
				"operationId": "getPublicReceiptBranding",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "token",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PublicReceiptBrandingView"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Read a shared receipt's branding",
				"tags": [
					"Receipts"
				]
			}
		},
		"/api/v1/public/receipts/{token}/branding/logo": {
			"get": {
				"deprecated": false,
				"description": "Returns the delivering workspace's logo image (PNG, JPEG or WebP) for a white-label receipt. Same access rule as the branding read: 404 when the link has no branding.",
				"operationId": "getPublicReceiptBrandingLogo",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "token",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Download a receipt's branding logo",
				"tags": [
					"Receipts"
				]
			}
		},
		"/api/v1/public/receipts/{token}/evidence": {
			"get": {
				"deprecated": false,
				"description": "Returns the delivered change in pictures (before/after captures with short-lived media URLs) for a shared run. A revoked or unknown link returns 404. A shared run with nothing to show returns 200 with `missing_reason` explaining why.",
				"operationId": "getPublicReceiptEvidence",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "token",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ChangeEvidence"
								}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Read a shared receipt's visual evidence",
				"tags": [
					"Receipts"
				]
			}
		},
		"/api/v1/public/receipts/{token}/media/{media_id}": {
			"get": {
				"deprecated": false,
				"description": "Redirects (302) to a short-lived signed URL for one evidence image of a shared run, as embedded in its pull request. An id that is not part of the run's evidence returns 404. A revoked or unknown link returns a small \"no longer shared\" JPEG instead of an error, so an embedded image explains itself.",
				"operationId": "getPublicReceiptMedia",
				"parameters": [
					{
						"deprecated": false,
						"in": "path",
						"name": "token",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"deprecated": false,
						"in": "path",
						"name": "media_id",
						"required": true,
						"schema": {
							"format": "uuid",
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"content": {
							"application/json": {
								"schema": {}
							}
						},
						"description": "Request fulfilled, document follows",
						"headers": {
							"cache-control": {
								"deprecated": false,
								"required": false,
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Bad request syntax or unsupported method"
					},
					"404": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Resource not found"
					},
					"429": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Rate limit exceeded",
						"headers": {
							"Retry-After": {
								"description": "Seconds to wait before retrying the request",
								"schema": {
									"type": "integer"
								}
							}
						}
					},
					"default": {
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/ProblemDetail"
								}
							}
						},
						"description": "Unexpected error"
					}
				},
				"security": [],
				"summary": "Open a shared receipt's evidence image",
				"tags": [
					"Receipts"
				]
			}
		}
	},
	"security": [
		{
			"CustomerApiKey": []
		}
	],
	"servers": [
		{
			"url": "https://api.syndai.ai"
		}
	],
	"tags": [
		{
			"description": "The API key you are calling with and the workspace it belongs to. Read the key's identity and scopes, revoke it, or page through a snapshot of the workspace's runs, projects and threads to seed a local mirror.",
			"name": "Account"
		},
		{
			"description": "A run is one coding task Syndai carries from a prompt to a delivered change. Creating a run starts billable work; its `external_request_id` is the idempotency key, so a retry never starts a second run. Follow a run by streaming its events or polling `GET /runs/{id}`. Phases are open-ended: a run can pause to ask you something, so read `pending_hitl_requests` and answer through `/responses` rather than assuming a fixed order.",
			"name": "Runs"
		},
		{
			"description": "The review points a run can stop at before it builds: confirm or co-sign its acceptance criteria, edit one criterion, and request changes to, extend or skip its spec and plan review. Most need a signed-in person; a stale review round or a closed review returns 409.",
			"name": "Run review"
		},
		{
			"description": "Getting a finished run's change onto your default branch and live: retry or close a held landing, go live anyway past the checks that held it (a person's decision), read the diff a held landing would ship, or revert a landed change. These act on your real repository.",
			"name": "Landing"
		},
		{
			"description": "Work Syndai proposes for a repository: next-task offers and task groups you can add to the roadmap, edit, move to the top, start or dismiss. Viewing and dismissing is free; starting a task or group creates runs, which is billable work.",
			"name": "Backlog"
		},
		{
			"description": "Recurring runs on a cron trigger. Create, update, pause, resume, fire now or delete a schedule. Every fire is a normal run that spends credits, and a schedule that may merge or push re-checks its writer's consent at each fire.",
			"name": "Schedules"
		},
		{
			"description": "The repositories connected to your workspace. List them, change a repository's settings, and make or undo a direct text edit on a live site without starting a full run.",
			"name": "Repositories"
		},
		{
			"description": "Workspace secrets and environments that runs and deployed apps read. Listing returns metadata only, never values. Reading production values needs a short-lived step-up that a workspace owner or admin approves in the browser (the production-access flow).",
			"name": "Secrets"
		},
		{
			"description": "Custom tools your runs may call: skills and MCP servers, workspace-wide or for one project. Add, update, rescan or delete a tool. Each is safety-scanned, and runs skip a flagged tool until someone acknowledges the flag.",
			"name": "Tools"
		},
		{
			"description": "Signed HTTP callbacks for run events. Register endpoints, send a test event, rotate the signing secret, and list or redeliver past deliveries. Verify every delivery's signature and treat events as at-least-once.",
			"name": "Webhooks"
		},
		{
			"description": "The people in your workspace and their roles. Invite, accept, list, change a role, or revoke a member or a pending invite. Most writes need an owner or admin.",
			"name": "Members"
		},
		{
			"description": "Workspace-wide run defaults: validation, review gates, autonomy and budget. Read the JSON Schema a policy must match and the current defaults, list earlier versions, or replace them; a run's own `policy_config` overrides them for that run.",
			"name": "Policy"
		},
		{
			"description": "Bugs Syndai's scanner found in your repositories. List findings, read or change a repository's weekly scan setting, or start a scan now; each scan is capped by the per-scan limit.",
			"name": "Findings"
		},
		{
			"description": "API docs Syndai builds for your repository from its running code: read their status and freshness, and turn on keeping them up to date or publishing them on your site.",
			"name": "Docs"
		},
		{
			"description": "Beta: may change without notice. Publishing a repository as a hosted app: publish, unpublish, read and update a publication, its deployments, custom domain, runtime and monthly AI limit, and export its data or waitlist.",
			"name": "Apps"
		},
		{
			"description": "Beta: may change without notice. Shipping an app to the App Store and Google Play: store connections, builds, releases and rollouts, the store listing in every language, screenshots, review logins and the release checklist.",
			"name": "Store"
		},
		{
			"description": "Beta: may change without notice. Websites connected for search and AI visibility: connect a site, link it to Google Search Console, read its SEO tab, show or hide it on Google, and run a priced Ask AI check of how assistants answer about it.",
			"name": "Sites"
		},
		{
			"description": "Public, unauthenticated reads of a shared run receipt: the receipt, its visual evidence, white-label branding, and an embeddable SVG badge. The token in the share link is the credential; revoking the share makes every route 404.",
			"name": "Receipts"
		},
		{
			"description": "The device login the `syndai` CLI uses to get an API key: start a login, show the user code to a person to approve in the browser, then poll for the key. Unapproved polls answer with OAuth device-flow errors.",
			"name": "CLI auth"
		}
	]
}
