"{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"Freestyle Sandboxes\",\n    \"description\": \"\\nFreestyle Sandboxes lets you deploy your users or AIs code. **Get your API Key at [admin.freestyle.sh](https://admin.freestyle.sh)**\\n\",\n    \"contact\": {\n      \"name\": \"Ben\",\n      \"email\": \"ben@freestyle.sh\"\n    },\n    \"license\": {\n      \"name\": \"Closed Source\"\n    },\n    \"version\": \"0.1.0\"\n  },\n  \"servers\": [\n    {\n      \"url\": \"https://api.freestyle.sh\",\n      \"description\": \"Production\"\n    }\n  ],\n  \"paths\": {\n    \"/auth/v1/background-requests/{request_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"Auth\"\n        ],\n        \"summary\": \"Get background request result\",\n        \"description\": \"Replay the stored response for a backgrounded request when it finishes.\",\n        \"operationId\": \"handle_get_background_request\",\n        \"parameters\": [\n          {\n            \"name\": \"request_id\",\n            \"in\": \"path\",\n            \"description\": \"Background request ID\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/RequestId\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Completed request response replayed\"\n          },\n          \"202\": {\n            \"description\": \"Background request still running\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BackgroundRequestPendingResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Background request not found or expired\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BackgroundRequestErrorResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/auth/v1/whoami\": {\n      \"get\": {\n        \"tags\": [\n          \"Auth\"\n        ],\n        \"summary\": \"Get current user\",\n        \"description\": \"Returns information about the currently authenticated user or identity.\",\n        \"operationId\": \"handle_whoami\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Current authenticated user information\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/WhoAmIResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/cloudstate/v1/deploy\": {\n      \"post\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Deploy Cloudstate Project\",\n        \"description\": \"Deploy a cloudstate project\",\n        \"operationId\": \"handle_deploy_cloudstate\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleCloudstateDeployRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successfully deployed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleCloudstateDeploySuccessResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"failed to deploy\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleCloudstateDeployErrorResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/cloudstate/v1/projects/{id}/backup\": {\n      \"get\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Get Backup of Cloudstate Project\",\n        \"description\": \"Get a backup of a cloudstate project\",\n        \"operationId\": \"handle_backup_cloudstate\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successfully backed up\",\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"integer\",\n                    \"format\": \"int32\",\n                    \"minimum\": 0\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"failed to backup\"\n          }\n        }\n      }\n    },\n    \"/dns/v1/records\": {\n      \"get\": {\n        \"tags\": [\n          \"DNS\"\n        ],\n        \"summary\": \"List DNS Records\",\n        \"operationId\": \"handle_list_records\",\n        \"parameters\": [\n          {\n            \"name\": \"domain\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            },\n            \"example\": \"example.com\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListRecordsResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"DNS\"\n        ],\n        \"summary\": \"Create DNS Record\",\n        \"operationId\": \"handle_create_record\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateRecordParams\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateRecordResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Possible errors: DomainOwnershipError, RecordOwnershipError, DomainOwnershipVerificationFailed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: ErrorCreatingRecord, ErrorDeletingRecord\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"DNS\"\n        ],\n        \"summary\": \"Delete DNS Record\",\n        \"operationId\": \"handle_delete_record\",\n        \"parameters\": [\n          {\n            \"name\": \"domain\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            },\n            \"example\": \"example.com\"\n          },\n          {\n            \"name\": \"record\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/DnsRecord\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DeleteRecordResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Possible errors: DomainOwnershipError, RecordOwnershipError, DomainOwnershipVerificationFailed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: ErrorCreatingRecord, ErrorDeletingRecord\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/domains/v1/certs/{domain}/wildcard\": {\n      \"post\": {\n        \"tags\": [\n          \"Certs\",\n          \"Domains\"\n        ],\n        \"summary\": \"Provision a wildcard certificate\",\n        \"description\": \"Provisions a wildcard certificate for a verified domain\\n\\n\\nThis speeds up deploys on all subdomains of the domain. In order to use it, you must add the following record to your DNS config:\\n\\n`_acme-challenge.yourdomain.com` NS `dns.freestyle.sh`\",\n        \"operationId\": \"handle_verify_wildcard\",\n        \"parameters\": [\n          {\n            \"name\": \"domain\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Domain verified\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"domain\"\n                  ],\n                  \"properties\": {\n                    \"domain\": {\n                      \"type\": \"string\",\n                      \"example\": \"example.com\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Failed to preverify domain\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/domains/v1/domains\": {\n      \"get\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"List domains for an account\",\n        \"description\": \"This lists the domains that an account has verified ownership of. This includes the *.style.dev domains the account has claimed.\",\n        \"operationId\": \"handle_list_domains\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          },\n          {\n            \"name\": \"implicitlyOwned\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of domains\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"domain\",\n                      \"accountId\",\n                      \"createdAt\",\n                      \"id\",\n                      \"verifiedDns\",\n                      \"implicitlyOwned\",\n                      \"deployToDomain\",\n                      \"manageDns\",\n                      \"deployToSubdomains\"\n                    ],\n                    \"properties\": {\n                      \"domain\": {\n                        \"type\": \"string\"\n                      },\n                      \"accountId\": {\n                        \"type\": \"string\",\n                        \"format\": \"uuid\"\n                      },\n                      \"createdAt\": {\n                        \"type\": \"string\",\n                        \"format\": \"date-time\"\n                      },\n                      \"id\": {\n                        \"type\": \"string\",\n                        \"format\": \"uuid\"\n                      },\n                      \"verifiedDns\": {\n                        \"type\": \"boolean\"\n                      },\n                      \"implicitlyOwned\": {\n                        \"type\": \"boolean\"\n                      },\n                      \"deployToDomain\": {\n                        \"type\": \"boolean\"\n                      },\n                      \"manageDns\": {\n                        \"type\": \"boolean\"\n                      },\n                      \"deployToSubdomains\": {\n                        \"type\": \"boolean\"\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Failed to get domains\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/domains/v1/mappings\": {\n      \"get\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"List Domain Mappings\",\n        \"description\": \"List domain mappings for any query based on exact domain or domain ownership (the domain ownership that gave the right to use the domain)\",\n        \"operationId\": \"handle_list_domain_mappings\",\n        \"parameters\": [\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          },\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          },\n          {\n            \"name\": \"domainOwnership\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ],\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"domain\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of domain mappings\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/FreestyleSandboxDomainMapping\"\n                  }\n                }\n              }\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        }\n      }\n    },\n    \"/domains/v1/mappings/{domain}\": {\n      \"post\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"Insert Domain Mapping\",\n        \"description\": \"This will unmap any other deployment to this domain. Provide either deployment_id or vm_id (with optional vm_port), but not both.\",\n        \"operationId\": \"handle_insert_domain_mapping\",\n        \"parameters\": [\n          {\n            \"name\": \"domain\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateDomainMappingRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successfully mapped domain to deployment\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateDomainMappingSuccess\"\n                }\n              }\n            }\n          },\n          \"4XX\": {\n            \"description\": \"Client error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/Public_DomainMappingError\"\n                }\n              }\n            }\n          },\n          \"5XX\": {\n            \"description\": \"Server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/Public_DomainMappingError\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"Remove Domain Mapping\",\n        \"operationId\": \"handle_delete_domain_mapping\",\n        \"parameters\": [\n          {\n            \"name\": \"domain\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successfully deleted domain mapping\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SuccessfullyDeletedDomainMapping\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Possible errors: DomainAlreadyExists, InvalidRequest\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"401\": {\n            \"description\": \"Possible errors: FailedPermissionsCheck, DeploymentAccessDenied, VmAccessDeniedForMapping, DomainOwnershipNotVerified\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"422\": {\n            \"description\": \"Error: FailedToProvisionCertificateForMapping\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: FailedRemoveDomainMapping, FailedToInsertOwnership, FailedInsertDomainMapping\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"502\": {\n            \"description\": \"Error: FailedToCheckDomainMappingPermissions\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/domains/v1/verifications\": {\n      \"get\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"List domain verification requests for an account\",\n        \"description\": \"Lists domain verification requests for the current account.\",\n        \"operationId\": \"handle_list_domain_verification_requests\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of verification codes\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"verificationCode\",\n                      \"domain\",\n                      \"createdAt\"\n                    ],\n                    \"properties\": {\n                      \"verificationCode\": {\n                        \"type\": \"string\"\n                      },\n                      \"domain\": {\n                        \"type\": \"string\"\n                      },\n                      \"createdAt\": {\n                        \"type\": \"string\",\n                        \"format\": \"date-time\"\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Failed to get verification codes\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"Verify a domain verification request\",\n        \"description\": \"This checks a pre-existing verification request for a domain. To create a verification request, call the [create domain verification](/#tag/domains/POST/domains/v1/verifications) endpoint. This endpoint will check if the domain has a TXT record with the verification code. If it does, the domain will be verified.\",\n        \"operationId\": \"handle_verify_domain\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleVerifyDomainRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Domain verified\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/VerifyDomainSuccess\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Possible errors: InvalidDomain, FailedToCreateVerificationCode, FailedToDeleteVerification, VerificationFailed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"401\": {\n            \"description\": \"Error: PermissionDenied\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: LimitExceeded\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: VerificationNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"422\": {\n            \"description\": \"Error: FailedToProvisionCertificate\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: FailedToVerifyDomain, FailedToListVerifications, FailedToListDomains, FailedToInsertDomainMapping, InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"502\": {\n            \"description\": \"Error: FailedToCheckPermissions\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"Create a domain verification request\",\n        \"description\": \"This creates a Freestyle Domain Verification Request. It returns a `verificationCode` for your domain. You need to place this code in a TXT record at `_freestyle_custom_hostname.thedomain.com`, then call the [verify domain](/#tag/domains/PUT/domains/v1/verifications) endpoint with the domain to verify it.\",\n        \"operationId\": \"handle_create_domain_verification\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleDomainVerificationRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Verification code created\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DomainVerificationRequest\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Failed to create verification code\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Domains\"\n        ],\n        \"summary\": \"Delete a domain verification request\",\n        \"description\": \"This deletes a Freestyle Domain Verification Request. This does not remove the domain from the account if it has already been verified, however the verification code will no longer be valid.\",\n        \"operationId\": \"handle_delete_domain_verification\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleDeleteDomainVerificationRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Verification code created\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"verificationCode\",\n                    \"domain\"\n                  ],\n                  \"properties\": {\n                    \"verificationCode\": {\n                      \"type\": \"string\"\n                    },\n                    \"domain\": {\n                      \"type\": \"string\",\n                      \"example\": \"example.com\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Failed to create verification code\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/execute/v1/deployments\": {\n      \"get\": {\n        \"tags\": [\n          \"Execute\"\n        ],\n        \"summary\": \"List execute runs\",\n        \"description\": \"List execute runs.\",\n        \"operationId\": \"handle_list_execute_runs\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"entries\",\n                    \"total\",\n                    \"offset\"\n                  ],\n                  \"properties\": {\n                    \"entries\": {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ExecuteLogEntry\"\n                      }\n                    },\n                    \"total\": {\n                      \"type\": \"integer\",\n                      \"format\": \"int64\",\n                      \"minimum\": 0\n                    },\n                    \"offset\": {\n                      \"type\": \"integer\",\n                      \"format\": \"int64\",\n                      \"minimum\": 0\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/execute/v1/deployments/{deployment}\": {\n      \"get\": {\n        \"tags\": [\n          \"Execute\"\n        ],\n        \"summary\": \"Get information on execute run\",\n        \"description\": \"Get information on execute run\",\n        \"operationId\": \"handle_get_execute_run\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"metadata\"\n                  ],\n                  \"properties\": {\n                    \"metadata\": {\n                      \"$ref\": \"#/components/schemas/ExecuteLogEntry\"\n                    },\n                    \"code\": {\n                      \"oneOf\": [\n                        {\n                          \"type\": \"null\"\n                        },\n                        {\n                          \"$ref\": \"#/components/schemas/ExecuteRunInfo\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized access\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"description\": \"Unauthorized access\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Not found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"description\": \"Not found\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"description\": \"Internal server error\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/execute/v1/deployments/{deployment}/output\": {\n      \"get\": {\n        \"tags\": [\n          \"Execute\"\n        ],\n        \"summary\": \"Get saved output for an execute run\",\n        \"description\": \"Get saved output for execute run\",\n        \"operationId\": \"handle_get_execute_run_output\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"status\",\n                    \"logs\"\n                  ],\n                  \"properties\": {\n                    \"status\": {\n                      \"type\": \"string\"\n                    },\n                    \"result\": {},\n                    \"error\": {\n                      \"type\": [\n                        \"string\",\n                        \"null\"\n                      ]\n                    },\n                    \"logs\": {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/FreestyleJavaScriptLog\"\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"401\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/execute/v1/script\": {\n      \"post\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Execute Code\",\n        \"description\": \"Send a TypeScript or JavaScript module, get the result\",\n        \"operationId\": \"handle_execute_script\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleExecuteScriptParams\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"result\",\n                    \"logs\"\n                  ],\n                  \"properties\": {\n                    \"result\": {\n                      \"description\": \"The return value of the default export of the script\"\n                    },\n                    \"logs\": {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/FreestyleJavaScriptLog\"\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\"\n                    },\n                    \"logs\": {\n                      \"type\": [\n                        \"array\",\n                        \"null\"\n                      ],\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/FreestyleJavaScriptLog\"\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\"\n                    },\n                    \"logs\": {\n                      \"type\": [\n                        \"array\",\n                        \"null\"\n                      ],\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/FreestyleJavaScriptLog\"\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/execute/v3/script\": {\n      \"post\": {\n        \"tags\": [\n          \"Execute\"\n        ],\n        \"summary\": \"Execute Code\",\n        \"description\": \"Send a TypeScript or JavaScript module, get the result\",\n        \"operationId\": \"handle_execute_script_v3\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleExecuteScriptParams\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Script executed successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ExecuteScriptSuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: ExecuteLimitExceeded\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/identity\": {\n      \"get\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"List Git identities\",\n        \"description\": \"List Git identities created by your account.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_list_identities\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"includeManaged\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of identities\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListIdentitiesSuccess\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      },\n      \"post\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Create a Git identity\",\n        \"description\": \"Create a Git identity. This identity will be used to authenticate with Freestyle services.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_create_identity\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Identity created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleIdentity\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      }\n    },\n    \"/git/v1/identity/{identity}\": {\n      \"delete\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Delete a Git identity\",\n        \"description\": \"Delete a Git identity. This will revoke all permissions granted to this identity.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_delete_identity\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Identity deleted\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Access denied\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Identity not found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      }\n    },\n    \"/git/v1/identity/{identity}/permissions\": {\n      \"get\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"List repository permissions for an identity\",\n        \"description\": \"List repository permissions for an identity. This will return a list of repositories that the identity has access to.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_list_permissions\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of repositories to return\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Offset for the list of repositories\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission list\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListGitPermissionSuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Not Found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal Server Error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      }\n    },\n    \"/git/v1/identity/{identity}/permissions/{repo}\": {\n      \"get\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Get the permission of an identity on a repository\",\n        \"description\": \"Get the permission of an identity on a repository. This will return the access level of the identity on the repository.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_describe_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission info\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DescribeGitPermissionSuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Not Found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal Server Error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      },\n      \"post\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Grant a permission to an identity\",\n        \"description\": \"Grant a permission to an identity on a repository.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_grant_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/GrantGitPermissionRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission granted successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Not Found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal Server Error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Revoke permissions from an identity\",\n        \"description\": \"Revoke a permission to an identity on a repository.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_revoke_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission revoked successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Not Found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal Server Error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      },\n      \"patch\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Update a permission for an identity\",\n        \"description\": \"Update a permission for an identity on a repository.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_update_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateGitPermissionRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {},\n        \"deprecated\": true\n      }\n    },\n    \"/git/v1/identity/{identity}/tokens\": {\n      \"get\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"List access tokens for an identity\",\n        \"description\": \"List access tokens for an identity.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_list_git_tokens\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Token list\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListGitTokensSuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Identity not found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      },\n      \"post\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Create an access token for an identity\",\n        \"description\": \"Create an access token for an identity.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_create_git_token\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Token created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreatedToken\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Identity not found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Revoke an access token for an identity\",\n        \"description\": \"Revoke an access token for an identity.\\n\\n**DEPRECATED:** Git identities have been promoted to global Freestyle identities used for provisioning resources scoped to customers. Please use the `/identity/v1/*` API instead.\",\n        \"operationId\": \"handle_revoke_git_token\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/RevokeGitTokenRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Token revoked\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Identity not found\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      }\n    },\n    \"/git/v1/repo\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"List repositories\",\n        \"description\": \"List repositories with metadata.\",\n        \"operationId\": \"handle_list_repositories\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of repositories to return\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Offset for the list of repositories\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"search\",\n            \"in\": \"query\",\n            \"description\": \"Search filter by repository name or ID\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of repositories\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListRepositoriesSuccess\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Create a repository\",\n        \"description\": \"Create a repository. Once the repository is created, it will also be created on the Git server.\\nThe repository name must be unique within your account.\\n\\nOnce created, you can then push your code to this repository.\\n\\nThe repo will be available at `git.freestyle.sh/{repo-id}`\\n\",\n        \"operationId\": \"handle_create_repo\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"name\": {\n                    \"type\": [\n                      \"string\",\n                      \"null\"\n                    ],\n                    \"description\": \"This name is not visible to users, and is only accessible to you via API and in the\\ndashboard. Mostly useful for observability.\"\n                  },\n                  \"public\": {\n                    \"type\": \"boolean\",\n                    \"default\": false\n                  },\n                  \"defaultBranch\": {\n                    \"type\": [\n                      \"string\",\n                      \"null\"\n                    ],\n                    \"description\": \"The default branch name for the repository. Defaults to \\\"main\\\" if not specified.\"\n                  },\n                  \"source\": {\n                    \"$ref\": \"#/components/schemas/CreateRepoSource\",\n                    \"description\": \"Fork from another Git repository. Cannot be used with `import`.\"\n                  },\n                  \"import\": {\n                    \"$ref\": \"#/components/schemas/CreateRepoImport\",\n                    \"description\": \"Import static content with an initial commit. Cannot be used with `source`.\"\n                  }\n                }\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Repository created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateRepositoryResponseSuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: GitRepoLimitExceeded\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: InternalServerError, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo_id}/default-branch\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get repository default branch\",\n        \"description\": \"Get the default branch name for a repository.\",\n        \"operationId\": \"handle_get_default_branch\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"The repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GetDefaultBranchResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Set repository default branch\",\n        \"description\": \"Set the default branch name for a repository. This will update the HEAD reference to point to the new default branch.\",\n        \"operationId\": \"handle_set_default_branch\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"The repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SetDefaultBranchRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SetDefaultBranchResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo_id}/github-sync\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get GitHub sync configuration\",\n        \"description\": \"Get the GitHub sync configuration for a repository, if configured.\",\n        \"operationId\": \"get_github_sync\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"Repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"GitHub sync configuration\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GithubSyncConfigResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Repository or sync configuration not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Configure GitHub sync for repository\",\n        \"description\": \"Configure GitHub synchronization for an existing Freestyle repository. This links your Freestyle repository to a GitHub repository for automatic syncing. Requires the GitHub repository name in 'owner/repo' format.\",\n        \"operationId\": \"configure_github_sync\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"Repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ConfigureGithubSyncRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"GitHub sync configured successfully\"\n          },\n          \"400\": {\n            \"description\": \"Bad request\"\n          },\n          \"404\": {\n            \"description\": \"Repository not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Remove GitHub sync configuration\",\n        \"description\": \"Remove GitHub sync configuration from a repository. This stops automatic syncing but doesn't affect the repository content.\",\n        \"operationId\": \"remove_github_sync\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"Repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"GitHub sync configuration removed successfully\"\n          },\n          \"404\": {\n            \"description\": \"Repository or sync configuration not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo_id}/visibility\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get repository visibility\",\n        \"description\": \"Get the visibility (public or private) for a repository.\",\n        \"operationId\": \"handle_get_visibility\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"The repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GetVisibilityResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Set repository visibility\",\n        \"description\": \"Set the visibility (public or private) for a repository.\",\n        \"operationId\": \"handle_set_visibility\",\n        \"parameters\": [\n          {\n            \"name\": \"repo_id\",\n            \"in\": \"path\",\n            \"description\": \"The repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SetVisibilityRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SetVisibilityResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get repository information\",\n        \"description\": \"Retrieve information about a specific repository, including its ID, name, and default branch.\",\n        \"operationId\": \"handle_get_repo_info\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Repository information retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/RepositoryInfoRaw\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Invalid request\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden access to repository\"\n          },\n          \"404\": {\n            \"description\": \"Repository not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Delete a repository\",\n        \"description\": \"Delete a repository. This is irreversible, and will also delete the repository on the Git server.\",\n        \"operationId\": \"handle_delete_repo\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Repository deleted successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DeleteRepositorySuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/commits\": {\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Create a commit with files\",\n        \"description\": \"Create a commit from files with automatic tree building and branch updates. Supports text files (UTF-8), binary files (base64), file deletions, and optimistic concurrency control via expectedSha. If the target branch does not exist, it is created as an orphan branch with this commit as its root.\",\n        \"operationId\": \"handle_create_commit\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateCommitRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Commit created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateCommitResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/compare\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Compare two commits\",\n        \"description\": \"Get the comparison between two commits in a repository\",\n        \"operationId\": \"handle_compare_commits\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"base\",\n            \"in\": \"query\",\n            \"description\": \"Base revision (commit SHA, branch name, tag, or any valid Git revision)\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            },\n            \"example\": \"main\"\n          },\n          {\n            \"name\": \"head\",\n            \"in\": \"query\",\n            \"description\": \"Head revision (commit SHA, branch name, tag, or any valid Git revision)\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            },\n            \"example\": \"dev\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Comparison retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CommitComparison\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/contents/{path}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get the contents of a file or directory\",\n        \"description\": \"Get the contents of a file or directory in a repository\",\n        \"operationId\": \"handle_get_contents\",\n        \"parameters\": [\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision (branch name, commit SHA, etc.). Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"recursive\",\n            \"in\": \"query\",\n            \"description\": \"If true, directory entries include their descendants recursively.\\nDefaults to false (immediate children only).\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository ID.\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"path\",\n            \"in\": \"path\",\n            \"description\": \"The path to the file or directory. Empty for root.\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GitContents\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/blobs/{hash}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get a blob object\",\n        \"description\": \"Get a blob from the Git database. The contents will always be base64 encoded.\",\n        \"operationId\": \"handle_get_blob\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"hash\",\n            \"in\": \"path\",\n            \"description\": \"The object's hash\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Blob retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BlobObject\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/commits\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"List commits for a repository\",\n        \"description\": \"List commits with flexible filtering and pagination. Supports:\\n- Cursor-based pagination (recommended): Use `next_commit` from response with `until` (desc order) or `since` (asc order)\\n- Commit ranges: Specify both `since` and `until` to get commits between them (like git's `since..until`)\\n- Order control: `order=desc` (newest first, default) or `order=asc` (oldest first)\\n- Legacy offset pagination: Use `offset` param (deprecated, incompatible with since/until)\\n\\nRequires repository visibility to be public or user to be the owner.\",\n        \"operationId\": \"handle_list_commits\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"branch\",\n            \"in\": \"query\",\n            \"description\": \"Branch name (defaults to HEAD)\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"example\": \"main\"\n          },\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of commits to return (default: 50, max: 500)\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"minimum\": 0\n            },\n            \"example\": \"50\"\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Number of commits to skip (default: 0)\",\n            \"required\": false,\n            \"deprecated\": true,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"minimum\": 0\n            },\n            \"example\": \"0\"\n          },\n          {\n            \"name\": \"order\",\n            \"in\": \"query\",\n            \"description\": \"Sort order: \\\"desc\\\" (newest first, default) or \\\"asc\\\" (oldest first)\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/CommitOrder\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"since\",\n            \"in\": \"query\",\n            \"description\": \"Start point (older commit) for filtering/pagination (commit SHA)\\n- When used alone with order=desc: Returns commits newer than this (exclusive). Use for \\\"what's new since X?\\\"\\n- When used alone with order=asc: Starts from this commit (inclusive). Use with next_commit for pagination.\\n- When used with `until`: Defines the base of a range (like git's A..B where this is A)\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"example\": \"abc123\"\n          },\n          {\n            \"name\": \"until\",\n            \"in\": \"query\",\n            \"description\": \"End point (newer commit) for filtering/pagination (commit SHA)\\n- When used alone with order=desc: Starts from this commit (inclusive). Use with next_commit for pagination.\\n- When used alone with order=asc: Returns commits up to and including this commit.\\n- When used with `since`: Defines the head of a range (like git's A..B where this is B)\\n\\nWhen both `since` and `until` are provided, `until` must be a descendant of `since`.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"example\": \"def456\"\n          },\n          {\n            \"name\": \"disableTotalCount\",\n            \"in\": \"query\",\n            \"description\": \"If true, skip the exhaustive history walk used to compute `total`.\\nDefaults to false. When true, the `total` field is omitted from the\\nresponse. Use this for cursor-based pagination where `total` is unused.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Commits retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CommitList\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Create a commit from git objects\",\n        \"description\": \"Create a commit from tree and parent SHAs. This is a git object database operation for advanced use cases. For file-based commits, use the high-level endpoint at /git/v1/repo/{repo}/commits.\",\n        \"operationId\": \"handle_create_odb_commit\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateOdbCommitRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Commit created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateOdbCommitResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/commits/{hash}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get a commit object\",\n        \"description\": \"Get a commit from the Git database with detailed information.\",\n        \"operationId\": \"handle_get_commit\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"hash\",\n            \"in\": \"path\",\n            \"description\": \"The object's hash\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Commit retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CommitObject\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/refs/heads/\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"List branches in a repo\",\n        \"description\": \"Get a list of all branches in the Git repository. Returns branch names and their commit SHAs.\",\n        \"operationId\": \"handle_list_branches\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Branches retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListBranchesResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/refs/heads/{*branch}\": {\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Create a new branch\",\n        \"description\": \"Create a new branch in the Git repository. If sha is not provided, the branch is created from the default branch HEAD.\",\n        \"operationId\": \"handle_create_branch\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"branch\",\n            \"in\": \"path\",\n            \"description\": \"The branch's name\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateBranchRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Branch created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateBranchResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: BranchNameEmpty\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/refs/heads/{branch}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get a branch reference\",\n        \"description\": \"Get a reference to a branch in the Git repository. Returns the ref name and SHA of the branch.\",\n        \"operationId\": \"handle_get_ref_branch\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"branch\",\n            \"in\": \"path\",\n            \"description\": \"The branch's name\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Branch reference retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GitReference\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: BranchNameEmpty\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/refs/tags/\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"List all tags in a repository\",\n        \"description\": \"List all tags in the Git repository with full details. Returns both annotated tags (with tagger and message)\\n        and lightweight tags. For each tag, the `sha` field contains the tag object SHA (for annotated tags) or\\n        commit SHA (for lightweight tags), while `target.sha` always contains the commit SHA the tag points to.\",\n        \"operationId\": \"handle_list_tags\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Tags retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListTagsResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/refs/tags/{tag}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get a tag by name\",\n        \"description\": \"Get a tag by its name. This is the recommended endpoint for retrieving tag information.\\n        Works with both annotated tags (returns tagger, message, and target commit) and lightweight tags\\n        (returns only name and target commit). For annotated tags, the `sha` field contains the tag object's SHA,\\n        while `target.sha` contains the commit SHA. For lightweight tags, both fields contain the same commit SHA.\\n\\n        **Note**: If you need to retrieve an annotated tag object by its SHA (for low-level git database operations),\\n        use `/git/v1/repo/{repo}/git/tags/{hash}` instead.\",\n        \"operationId\": \"handle_get_ref_tag\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"tag\",\n            \"in\": \"path\",\n            \"description\": \"The tag's name\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Tag object\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"description\": \"Tag object\",\n                  \"required\": [\n                    \"name\",\n                    \"target\",\n                    \"sha\"\n                  ],\n                  \"properties\": {\n                    \"name\": {\n                      \"type\": \"string\",\n                      \"description\": \"The tag name\"\n                    },\n                    \"tagger\": {\n                      \"oneOf\": [\n                        {\n                          \"type\": \"null\"\n                        },\n                        {\n                          \"$ref\": \"#/components/schemas/Signature\",\n                          \"description\": \"The tagger who created the tag\"\n                        }\n                      ]\n                    },\n                    \"message\": {\n                      \"type\": [\n                        \"string\",\n                        \"null\"\n                      ],\n                      \"description\": \"The tag message\"\n                    },\n                    \"target\": {\n                      \"$ref\": \"#/components/schemas/TagTarget\",\n                      \"description\": \"The object this tag points to\"\n                    },\n                    \"sha\": {\n                      \"type\": \"string\",\n                      \"description\": \"The tag's hash ID\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: EmptyTag\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, GitClient\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/tags/{hash}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get an annotated tag object by SHA (advanced)\",\n        \"description\": \"Low-level endpoint for retrieving annotated tag objects directly from the Git database by their SHA hash.\\n        This endpoint only works with annotated tags and requires the tag object's SHA, not the tag name.\\n\\n\\n        **Most users should use `/git/v1/repo/{repo}/git/refs/tags/{tag}` instead**, which works with both\\n        annotated and lightweight tags and accepts tag names rather than SHAs. This endpoint is primarily\\n        for advanced use cases that need direct access to git database objects.\",\n        \"operationId\": \"handle_get_tag\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"hash\",\n            \"in\": \"path\",\n            \"description\": \"The object's hash\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Tag retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TagObject\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/git/trees/{hash}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get a tree object\",\n        \"description\": \"Get a tree from the Git database with its entries.\",\n        \"operationId\": \"handle_get_tree\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"hash\",\n            \"in\": \"path\",\n            \"description\": \"The object's hash\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Tree retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TreeObject\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/repair\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"List repair jobs for a repository\",\n        \"description\": \"Returns every repair job (pending, running, completed, failed, cancelled) currently in the git server's in-memory registry. Pod restarts on the git server clear the list.\",\n        \"operationId\": \"handle_list_repair_jobs\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Repair jobs for the repository\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/RepairJobList\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Repository is owned by a different account\"\n          },\n          \"404\": {\n            \"description\": \"Repository not found\"\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Schedule a repo-repair job\",\n        \"description\": \"Spawns a background task on the git server that walks every ref's reachable history, substitutes missing blobs/trees with empty stand-ins, and persistently updates each ref to point at the rewritten tip. Returns immediately with a job ID; poll GET /git/v1/repo/{repo}/repair/{jobId} for status. Subject to a per-account concurrency cap.\",\n        \"operationId\": \"handle_schedule_repair\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"depth\",\n            \"in\": \"query\",\n            \"description\": \"How far back from each ref tip to walk. Tip is depth=1.\\nOmit to walk the entire history (slow on huge repos).\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int32\",\n              \"minimum\": 0\n            },\n            \"example\": 1\n          }\n        ],\n        \"responses\": {\n          \"202\": {\n            \"description\": \"Repair scheduled; poll GET /repos/{repo}/repair/{jobId} for status\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/RepairAccepted\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Repository is owned by a different account\"\n          },\n          \"404\": {\n            \"description\": \"Repository not found\"\n          },\n          \"409\": {\n            \"description\": \"A repair is already in progress for this repository\"\n          },\n          \"429\": {\n            \"description\": \"Account already at the per-account concurrent-repair cap\"\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/repair/{job_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Get the status of a repair job\",\n        \"operationId\": \"handle_get_repair_job\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"Repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"job_id\",\n            \"in\": \"path\",\n            \"description\": \"Repair job ID returned by POST\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Repair job status\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/RepairJobView\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Repository is owned by a different account\"\n          },\n          \"404\": {\n            \"description\": \"Repository or job not found\"\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Cancel a running repair job\",\n        \"description\": \"Sets the cancel flag on the repair job. The worker observes it at the next commit/tree boundary and exits with status=cancelled. Already-terminal jobs are returned unchanged.\",\n        \"operationId\": \"handle_cancel_repair_job\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"Repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"job_id\",\n            \"in\": \"path\",\n            \"description\": \"Repair job ID returned by POST\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Cancel requested; current job state returned\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/RepairJobView\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Repository is owned by a different account\"\n          },\n          \"404\": {\n            \"description\": \"Repository or job not found\"\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/search\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Full-text search across repository files\",\n        \"description\": \"Search for text or regex patterns across all files in a repository at a given revision\",\n        \"operationId\": \"handle_search\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"query\",\n            \"in\": \"query\",\n            \"description\": \"The text (or regex pattern) to search for in file contents.\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision (branch name, commit SHA, etc.). Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"pathPattern\",\n            \"in\": \"query\",\n            \"description\": \"Optional glob pattern to filter included file paths (e.g. \\\"*.rs\\\", \\\"src/**/*.ts\\\").\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"excludePattern\",\n            \"in\": \"query\",\n            \"description\": \"Optional glob pattern to exclude file paths (e.g. \\\"node_modules/**\\\", \\\"*.min.js\\\").\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"maxResults\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of matching files to return. Defaults to 100, max 1000.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"caseSensitive\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is a case-sensitive search. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isRegex\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is a regex pattern. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"wholeWord\",\n            \"in\": \"query\",\n            \"description\": \"Whether to match whole words only. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Number of results to skip for pagination. Defaults to 0.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Search results\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SearchResult\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/search/commits\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Search commit messages\",\n        \"description\": \"Search for commits by their message text in a repository\",\n        \"operationId\": \"handle_search_commits\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"query\",\n            \"in\": \"query\",\n            \"description\": \"The text (or regex pattern) to search for in commit messages.\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision to start walking from. Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"maxResults\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of matching commits to return. Defaults to 100, max 1000.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"isRegex\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is a regex. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"caseSensitive\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is case-sensitive. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Commit search results\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CommitSearchResult\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/search/diffs\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Search file content changes across commits\",\n        \"description\": \"Search through commit diffs for content that was added or changed, returning which commits introduced the matching content\",\n        \"operationId\": \"handle_search_diffs\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"query\",\n            \"in\": \"query\",\n            \"description\": \"The text (or regex pattern) to search for in changed file content.\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision to start walking from. Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"pathPattern\",\n            \"in\": \"query\",\n            \"description\": \"Optional glob pattern to filter included file paths.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"excludePattern\",\n            \"in\": \"query\",\n            \"description\": \"Optional glob pattern to exclude file paths.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"maxResults\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of matching commits to return. Defaults to 100, max 1000.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"caseSensitive\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is case-sensitive. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isRegex\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is a regex pattern. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"wholeWord\",\n            \"in\": \"query\",\n            \"description\": \"Whether to match whole words only. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Number of results to skip for pagination. Defaults to 0.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Diff search results\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DiffSearchResult\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/search/files\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Search for files by name\",\n        \"description\": \"Search for files by their path/name in a repository\",\n        \"operationId\": \"handle_search_files\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"query\",\n            \"in\": \"query\",\n            \"description\": \"The filename pattern to search for (matched against full paths).\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision (branch name, commit SHA, etc.). Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"maxResults\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of results. Defaults to 100, max 1000.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"isRegex\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is a regex. Defaults to false (glob-style matching).\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"caseSensitive\",\n            \"in\": \"query\",\n            \"description\": \"Whether the query is case-sensitive. Defaults to false.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"File search results\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FilenameSearchResult\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/tarball\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Download a tarball of a repo\",\n        \"description\": \"Download the contents of a repo as a tarball.\",\n        \"operationId\": \"handle_download_tarball\",\n        \"parameters\": [\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision (branch name, commit SHA, etc.). Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success (byte stream)\",\n            \"content\": {\n              \"application/x-tar\": {}\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/trigger\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"List git triggers for a repository\",\n        \"description\": \"List git triggers for the given repository.\",\n        \"operationId\": \"handle_list_git_triggers\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListGitTriggersSuccess\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: Forbidden\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: RepoNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Create a git trigger\",\n        \"description\": \"Create a git trigger for the given repository.\",\n        \"operationId\": \"handle_create_git_trigger\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"trigger\",\n                  \"action\"\n                ],\n                \"properties\": {\n                  \"trigger\": {\n                    \"oneOf\": [\n                      {\n                        \"type\": \"object\",\n                        \"required\": [\n                          \"event\"\n                        ],\n                        \"properties\": {\n                          \"branches\": {\n                            \"type\": [\n                              \"array\",\n                              \"null\"\n                            ],\n                            \"items\": {\n                              \"type\": \"string\"\n                            }\n                          },\n                          \"globs\": {\n                            \"type\": [\n                              \"array\",\n                              \"null\"\n                            ],\n                            \"items\": {\n                              \"type\": \"string\"\n                            }\n                          },\n                          \"event\": {\n                            \"type\": \"string\",\n                            \"enum\": [\n                              \"push\"\n                            ]\n                          }\n                        }\n                      }\n                    ]\n                  },\n                  \"action\": {\n                    \"oneOf\": [\n                      {\n                        \"type\": \"object\",\n                        \"required\": [\n                          \"endpoint\",\n                          \"action\"\n                        ],\n                        \"properties\": {\n                          \"endpoint\": {\n                            \"type\": \"string\"\n                          },\n                          \"action\": {\n                            \"type\": \"string\",\n                            \"enum\": [\n                              \"webhook\"\n                            ]\n                          }\n                        }\n                      }\n                    ]\n                  }\n                }\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Trigger created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"triggerId\"\n                  ],\n                  \"properties\": {\n                    \"triggerId\": {\n                      \"type\": \"string\",\n                      \"format\": \"uuid\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Invalid request\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"User does not have permission to create a trigger on this repository\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Repository does not exist\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/trigger/{trigger}\": {\n      \"delete\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Delete a git trigger\",\n        \"description\": \"Delete a git trigger. This is irreversible.\",\n        \"operationId\": \"handle_delete_git_trigger\",\n        \"parameters\": [\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"trigger\",\n            \"in\": \"path\",\n            \"description\": \"The trigger id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Trigger deleted successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Invalid request\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"User does not have permission to delete a trigger on this repository\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Trigger does not exist\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"message\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/git/v1/repo/{repo}/zip\": {\n      \"get\": {\n        \"tags\": [\n          \"Git\"\n        ],\n        \"summary\": \"Download a zip of a repo\",\n        \"description\": \"Download the contents of a repo as a zip.\",\n        \"operationId\": \"handle_download_zip\",\n        \"parameters\": [\n          {\n            \"name\": \"rev\",\n            \"in\": \"query\",\n            \"description\": \"The git revision (branch name, commit SHA, etc.). Defaults to HEAD.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The repository id\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success (byte stream)\",\n            \"content\": {\n              \"application/zip\": {}\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities\": {\n      \"get\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"List identities\",\n        \"description\": \"List identities created by your account.\",\n        \"operationId\": \"handle_list_identities\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"includeManaged\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of identities\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListIdentitiesSuccess\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Create an identity\",\n        \"description\": \"Create an identity. This identity will be used to authenticate with the Git server.\",\n        \"operationId\": \"handle_create_identity\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Identity created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleIdentity\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}\": {\n      \"delete\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Delete an identity\",\n        \"description\": \"Delete an identity. This will revoke all permissions granted to this identity.\",\n        \"operationId\": \"handle_delete_identity\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Identity deleted\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}/permissions/git\": {\n      \"get\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"List repository permissions for an identity\",\n        \"description\": \"List repository permissions for an identity. This will return a list of repositories that the identity has access to.\",\n        \"operationId\": \"handle_list_git_permissions\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of repositories to return\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Offset for the list of repositories\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission list\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListGitPermissionSuccess\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}/permissions/git/{repo}\": {\n      \"get\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Get the git permission of an identity on a repository\",\n        \"description\": \"Get the permission of an identity on a repository. This will return the access level of the identity on the repository.\",\n        \"operationId\": \"handle_describe_git_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission info\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DescribeGitPermissionSuccess\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Update a git repository permission for an identity\",\n        \"description\": \"Update a permission for an identity on a repository\",\n        \"operationId\": \"handle_update_git_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateGitPermissionRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission updated successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Grant a git repository permission to an identity\",\n        \"description\": \"Grant a permission to an identity on a repository\",\n        \"operationId\": \"handle_grant_git_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/GrantGitPermissionRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission granted successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Revoke git repository permission from an identity\",\n        \"description\": \"Revoke a permission to an identity on a repository\",\n        \"operationId\": \"handle_revoke_git_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"repo\",\n            \"in\": \"path\",\n            \"description\": \"The git repository ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Permission revoked successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}/permissions/vm\": {\n      \"get\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"List VM permissions for an identity\",\n        \"description\": \"List all VM permissions granted to a specific Git identity\",\n        \"operationId\": \"handle_list_vm_permissions\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of VM permissions\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListVmPermissionsSuccess\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}/permissions/vm/{vm_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Get VM permission details\",\n        \"description\": \"Get the details of a VM permission for a specific identity and VM\",\n        \"operationId\": \"handle_describe_vm_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The VM ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"VM permission details\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/VmPermission\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Update allowed users for VM permission\",\n        \"description\": \"Update the list of allowed users for a VM permission. Set to null to allow all users, or provide a list to restrict access.\",\n        \"operationId\": \"handle_update_allowed_users\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The VM ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateAllowedUsersRequestBody\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Allowed users updated successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/VmPermission\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Grant VM permission to an identity for a VM\",\n        \"description\": \"Grant VM access permission to an identity for a specific VM. Optionally restrict access to specific Linux users.\",\n        \"operationId\": \"handle_grant_vm_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The VM ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/GrantVmPermissionRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"VM permission granted successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/VmPermission\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Revoke VM permission from an identity for a VM\",\n        \"description\": \"Revoke VM permission from an identity for a specific VM\",\n        \"operationId\": \"handle_revoke_vm_permission\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"description\": \"The git identity ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The VM ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"VM permission revoked successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}/tokens\": {\n      \"get\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"List access tokens for an identity\",\n        \"description\": \"List access tokens for an identity\",\n        \"operationId\": \"handle_list_git_tokens\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Token list\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListGitTokensSuccess\"\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Create an access token for an identity\",\n        \"description\": \"Create an access token for an identity\",\n        \"operationId\": \"handle_create_git_token\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Token created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreatedToken\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/identity/v1/identities/{identity}/tokens/{token}\": {\n      \"delete\": {\n        \"tags\": [\n          \"Identity\"\n        ],\n        \"summary\": \"Revoke an access token for an identity\",\n        \"description\": \"Revoke an access token for an identity\",\n        \"operationId\": \"handle_revoke_git_token\",\n        \"parameters\": [\n          {\n            \"name\": \"identity\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"token\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Token revoked\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/EmptyResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/observability/v1/logs\": {\n      \"get\": {\n        \"tags\": [\n          \"Observability\"\n        ],\n        \"summary\": \"Logs\",\n        \"description\": \"Get logs for a deployment, domain, VM, or background request\",\n        \"operationId\": \"handle_get_logs\",\n        \"parameters\": [\n          {\n            \"name\": \"deploymentId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"requestId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/RequestId\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"buildId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/BuildId\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"instanceId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/VmInstanceId\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"domain\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"vmId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/VmId\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"runId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"vmService\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"pageToken\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"pageSize\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int32\"\n            }\n          },\n          {\n            \"name\": \"startTime\",\n            \"in\": \"query\",\n            \"description\": \"Start time in RFC3339 format (e.g., \\\"2024-01-01T00:00:00Z\\\"). Defaults to 24 hours ago if not specified.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"endTime\",\n            \"in\": \"query\",\n            \"description\": \"End time in RFC3339 format (e.g., \\\"2024-01-02T00:00:00Z\\\"). Defaults to now if not specified.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"search\",\n            \"in\": \"query\",\n            \"description\": \"Full-text search filter — case-insensitive substring match on log message body.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"resourceType\",\n            \"in\": \"query\",\n            \"description\": \"Filter logs by resource type: \\\"deployment\\\" or \\\"vm\\\". Only applies to account-wide queries.\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleGetLogsResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/cron/schedules\": {\n      \"get\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_list_schedules\",\n        \"parameters\": [\n          {\n            \"name\": \"deploymentId\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/DeploymentId\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"metricsStart\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ],\n              \"format\": \"date-time\"\n            }\n          },\n          {\n            \"name\": \"metricsEnd\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ],\n              \"format\": \"date-time\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Schedules retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListSchedulesResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_create_schedule\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateScheduleRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Schedule created successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateScheduleResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Invalid request\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    },\n    \"/v1/cron/schedules/{id}\": {\n      \"get\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_get_schedule\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"description\": \"Schedule ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Schedule retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GetScheduleResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Schedule not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_delete_schedule\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"description\": \"Schedule ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Schedule deleted successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DeleteScheduleResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"patch\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_update_schedule\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"description\": \"Schedule ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateScheduleRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Schedule updated successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UpdateScheduleResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Schedule not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    },\n    \"/v1/cron/schedules/{id}/executions\": {\n      \"get\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_list_schedule_executions\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"description\": \"Schedule ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Executions retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListScheduleExecutionsResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Schedule not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    },\n    \"/v1/cron/schedules/{id}/metrics-timeline\": {\n      \"get\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_get_metrics_timeline\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"description\": \"Schedule ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"start\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          {\n            \"name\": \"end\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          {\n            \"name\": \"bucketMinutes\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int64\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Metrics timeline retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/MetricsTimelineResponseBody\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Schedule not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    },\n    \"/v1/cron/schedules/{id}/success-rate\": {\n      \"get\": {\n        \"tags\": [\n          \"Cron\"\n        ],\n        \"operationId\": \"handle_get_schedule_success_rate\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"description\": \"Schedule ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          },\n          {\n            \"name\": \"start\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          {\n            \"name\": \"end\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Success rate retrieved successfully\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ScheduleSuccessRateResponseBody\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Schedule not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    },\n    \"/v1/vms\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"List VMs\",\n        \"operationId\": \"list_vms\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int32\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ],\n              \"format\": \"int32\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"vmState\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/components/schemas/VMState\"\n                }\n              ]\n            }\n          },\n          {\n            \"name\": \"includeDeleted\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"search\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListVmsResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Create VM\",\n        \"operationId\": \"create_vm\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateVmRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateVmResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/builds/{build_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Fetch a single build by id.\",\n        \"operationId\": \"get_build\",\n        \"parameters\": [\n          {\n            \"name\": \"build_id\",\n            \"in\": \"path\",\n            \"description\": \"Build id\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/BuildId\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Build record\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BuildRecord\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Possible errors: BuildNotFound, BuildNotFoundForSnapshot, BuildNotFoundForVm\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/builds/{build_id}/phases\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Append-only timeline of phases this build passed through. Phases are ordered by started_at; the last entry is the current phase.\",\n        \"operationId\": \"list_build_phases\",\n        \"parameters\": [\n          {\n            \"name\": \"build_id\",\n            \"in\": \"path\",\n            \"description\": \"Build id\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/BuildId\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Ordered phase timeline for a build\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListBuildPhasesResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Possible errors: BuildNotFound, BuildNotFoundForSnapshot, BuildNotFoundForVm\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/snapshots\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"List all snapshots.\",\n        \"operationId\": \"list_snapshots\",\n        \"parameters\": [\n          {\n            \"name\": \"includeDeleted\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"includeFailed\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          },\n          {\n            \"name\": \"includeBuilding\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": [\n                \"boolean\",\n                \"null\"\n              ]\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of snapshots\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListSnapshotsResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: SnapshotVmBadRequest\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: SnapshotSetupFailed, FinalizeSnapshotFailed, InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Create a snapshot by creating a temporary VM, starting it, snapshotting it, then deleting the VM. Supports multi-layer recursive specs via `spec.snapshot`.\",\n        \"operationId\": \"create_snapshot\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateSnapshotRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Created snapshot\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateSnapshotResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/snapshots/{snapshot_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Fetch a single snapshot by id. Returns deleted/failed rows too — useful for opening a deep-link to a layer-snapshot that's since been cleaned up.\",\n        \"operationId\": \"get_snapshot\",\n        \"parameters\": [\n          {\n            \"name\": \"snapshot_id\",\n            \"in\": \"path\",\n            \"description\": \"Snapshot id\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/SnapshotId\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Snapshot record\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SnapshotInfo\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: SnapshotNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Delete a snapshot\",\n        \"operationId\": \"delete_snapshot\",\n        \"parameters\": [\n          {\n            \"name\": \"snapshot_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the snapshot to delete\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DeleteSnapshotResponses\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: SnapshotNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"409\": {\n            \"description\": \"Possible errors: SnapshotAlreadyDeleted, SnapshotIsAccountDefault\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"patch\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Update snapshot metadata\",\n        \"operationId\": \"update_snapshot\",\n        \"parameters\": [\n          {\n            \"name\": \"snapshot_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the snapshot to update\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateSnapshotRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UpdateSnapshotResponses\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: SnapshotNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{id}/resize\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Resize VM\",\n        \"operationId\": \"resize_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ResizeVmRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ResizeVmResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: InvalidParameters\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: InternalResizeVmNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: ResizeFailed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Get VM\",\n        \"operationId\": \"get_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/GetVmResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: VmDeleted, InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Delete VM\",\n        \"operationId\": \"delete_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to delete\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DeleteVmResponses\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: ClientError, CleanupError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/await\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Wait for VM to stop\",\n        \"operationId\": \"wait_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to wait for\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/WaitVmResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/build\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Fetch the build that produced a VM. Joins through vm_records.build_id.\",\n        \"operationId\": \"get_build_for_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"VM id\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/VmId\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Build that produced this VM\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BuildRecord\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Possible errors: BuildNotFound, BuildNotFoundForSnapshot, BuildNotFoundForVm\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/exec-await\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Execute command in VM and await result\",\n        \"operationId\": \"exec_await\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to execute the command in\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ExecAwaitRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ExecAwaitVmResponse\"\n                }\n              }\n            }\n          },\n          \"408\": {\n            \"description\": \"Error: ExecTimedOut\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/files/{filepath}\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Get file from VM\",\n        \"operationId\": \"get_file\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to get the file from\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"filepath\",\n            \"in\": \"path\",\n            \"description\": \"The path of the file to get\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FileSystemResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: FilesBadRequest\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: FileNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Put file to VM\",\n        \"operationId\": \"put_file\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to put the file to\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"filepath\",\n            \"in\": \"path\",\n            \"description\": \"The path of the file to put\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/WriteFileRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/WriteFileResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: FilesBadRequest\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: FileNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/fork\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Fork VM\",\n        \"operationId\": \"fork_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ForkVmRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ForkVmResponse\"\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Error: AccessDenied\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: FailedToPreRegister\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/kill\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Kill VM\",\n        \"operationId\": \"kill_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to kill\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/KillVmResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: InternalError, NotVmOwner\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/optimize\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Suspends a VM and reallocates storage for more efficient forking.\",\n        \"operationId\": \"optimize_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to optimize\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/OptimizeVmResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/snapshot\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Create a snapshot of a VM. The snapshot is stored in a special snapshots folder and cannot be booted directly, but can be used to create new VMs.\",\n        \"operationId\": \"snapshot_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SnapshotVmRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Created snapshot\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SnapshotVmResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/start\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Start VM\",\n        \"operationId\": \"start_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/StartVmRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/StartedVmResponse\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/stats/stream\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Stream live VM stats (memory + CPU) as NDJSON. Sourced from inside the guest — untrusted, do not use for billing.\",\n        \"operationId\": \"stats_stream\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to stream stats for\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"interval_ms\",\n            \"in\": \"query\",\n            \"description\": \"Sample interval in ms (default 1000, clamped 100-10000)\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          }\n        ],\n        \"responses\": {}\n      }\n    },\n    \"/v1/vms/{vm_id}/stop\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Stop VM\",\n        \"operationId\": \"stop_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to stop\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/StopVmResponse\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Error: VmNotRunning\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/suspend\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Suspend VM\",\n        \"operationId\": \"suspend_vm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to suspend\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SuspendVmResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: InternalError, PauseFailed, SnapshotFailed, MaterializeDonorChainFailed, NetworkInterfaceLookupFailed, SuspendFailedAndStopped, SuspendFailedAndStopFailed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/restart\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Restart multiple systemd services\",\n        \"operationId\": \"batch_restart_services\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BatchServiceRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BatchServiceResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/services\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"List all systemd services for a VM\",\n        \"operationId\": \"list_services\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemdListServicesResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Create a new systemd service\",\n        \"operationId\": \"create_service\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SystemdUnitSpec\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemdCreateServiceResponse\"\n                }\n              }\n            }\n          },\n          \"409\": {\n            \"description\": \"Error: ServiceAlreadyExists\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/services/{service_id}\": {\n      \"delete\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Delete a systemd service\",\n        \"operationId\": \"delete_service\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"service_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the service\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemdDeleteServiceResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: ServiceNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/services/{service_id}/logs\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Get logs for a systemd service\",\n        \"operationId\": \"get_service_logs\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"service_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the service\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"lines\",\n            \"in\": \"query\",\n            \"description\": \"Number of log lines to return\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"since\",\n            \"in\": \"query\",\n            \"description\": \"Only show logs since this timestamp\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/JournaldLogsResponse\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: ServiceNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/services/{service_id}/status\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Get status of a systemd service\",\n        \"operationId\": \"get_service_status\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"service_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the service\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemdServiceStatus\"\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: ServiceNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/start\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Start multiple systemd services\",\n        \"operationId\": \"batch_start_services\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BatchServiceRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BatchServiceResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/systemd/stop\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Stop multiple systemd services\",\n        \"operationId\": \"batch_stop_services\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BatchServiceRequest\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/BatchServiceResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/terminals\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"List all terminal sessions for a VM\",\n        \"operationId\": \"list_terminals\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TerminalListResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/terminals/{terminal_id}/logs\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Get terminal logs as plain text array\",\n        \"operationId\": \"get_terminal_logs\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"terminal_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the terminal session\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TerminalLogsArrayResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/terminals/{terminal_id}/xterm-256color\": {\n      \"get\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Get terminal output with xterm formatting\",\n        \"operationId\": \"get_terminal_xterm\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"terminal_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the terminal session\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TerminalLogsResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: InternalError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/v1/vms/{vm_id}/watch-files\": {\n      \"post\": {\n        \"tags\": [\n          \"VM\"\n        ],\n        \"description\": \"Watch VM Files\",\n        \"operationId\": \"watch_files\",\n        \"parameters\": [\n          {\n            \"name\": \"vm_id\",\n            \"in\": \"path\",\n            \"description\": \"The ID of the VM to watch files for\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {}\n      }\n    },\n    \"/web/v1/deploy\": {\n      \"post\": {\n        \"tags\": [\n          \"Deprecated\"\n        ],\n        \"summary\": \"Deploy a Website (v1)\",\n        \"description\": \"Deploy a website. Files is a map of file paths to file contents. Configuration is optional and contains additional information about the deployment.\",\n        \"operationId\": \"handle_deploy_web\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleDeployWebPayload\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successfully deployed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleDeployWebSuccessResponseV2\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"failed to deploy\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleDeployWebErrorResponse\"\n                }\n              }\n            }\n          }\n        },\n        \"deprecated\": true\n      }\n    },\n    \"/web/v1/deployment\": {\n      \"post\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Deploy a Website\",\n        \"description\": \"Deploy a website. Files is a map of file paths to file contents. Configuration is optional and contains additional information about the deployment.\",\n        \"operationId\": \"handle_deploy_web_v2\",\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FreestyleDeployWebPayloadV2\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successfully deployed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/FreestyleDeployWebSuccessResponseV2\"\n                }\n              }\n            }\n          },\n          \"400\": {\n            \"description\": \"Possible errors: WebDeploymentBadRequest, InvalidDomains, EntrypointNotFound, NoEntrypointFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"403\": {\n            \"description\": \"Possible errors: DeploymentLimitExceeded, TimeoutLimitExceeded, Forbidden, NoDomainOwnership\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"404\": {\n            \"description\": \"Error: DeploymentNotFound\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Possible errors: Internal, DomainMappingError, UploadError, LockfileError\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"502\": {\n            \"description\": \"Possible errors: CertificateProvisioningError, ServerDeploymentFailed\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/web/v1/deployments\": {\n      \"get\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"List web deploys\",\n        \"description\": \"List web deploys.\",\n        \"operationId\": \"handle_list_web_deploys\",\n        \"parameters\": [\n          {\n            \"name\": \"limit\",\n            \"in\": \"query\",\n            \"description\": \"Maximum number of deployments to return\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"offset\",\n            \"in\": \"query\",\n            \"description\": \"Offset for pagination\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\",\n              \"minimum\": 0\n            }\n          },\n          {\n            \"name\": \"search\",\n            \"in\": \"query\",\n            \"description\": \"Search by deployment ID or domain\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"List of deployments\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ListDeploymentsResponse\"\n                }\n              }\n            }\n          },\n          \"500\": {\n            \"description\": \"Error: Internal\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"object\",\n                  \"required\": [\n                    \"error\",\n                    \"message\"\n                  ],\n                  \"properties\": {\n                    \"error\": {\n                      \"type\": \"string\",\n                      \"description\": \"Error code in SCREAMING_SNAKE_CASE\"\n                    },\n                    \"message\": {\n                      \"type\": \"string\",\n                      \"description\": \"Human-readable error message\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/web/v1/deployments/{deployment_id}\": {\n      \"get\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Get information on web deploy\",\n        \"description\": \"Get information about a web deploy by its ID.\",\n        \"operationId\": \"handle_get_web_deploy_details\",\n        \"responses\": {}\n      }\n    },\n    \"/web/v1/deployments/{deployment_id}/fetch\": {\n      \"get\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"put\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"options\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"head\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      },\n      \"patch\": {\n        \"tags\": [\n          \"Web\"\n        ],\n        \"summary\": \"Fetch content from a deployment\",\n        \"description\": \"Fetch content from a deployment by making a request to nginx-web with the deployment ID header. Supports any HTTP method.\",\n        \"operationId\": \"handle_fetch_deployment\",\n        \"parameters\": [\n          {\n            \"name\": \"deployment_id\",\n            \"in\": \"path\",\n            \"description\": \"Deployment ID\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"string\",\n              \"format\": \"uuid\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Successful response from deployment\"\n          },\n          \"403\": {\n            \"description\": \"Forbidden\"\n          },\n          \"404\": {\n            \"description\": \"Deployment not found\"\n          },\n          \"500\": {\n            \"description\": \"Internal server error\"\n          }\n        }\n      }\n    }\n  },\n  \"components\": {\n    \"schemas\": {\n      \"AccessLevel\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"read\",\n          \"write\"\n        ]\n      },\n      \"AccessTokenInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      },\n      \"AccessibleRepository\": {\n        \"type\": \"object\",\n        \"description\": \"Identical to [`RepositoryInfo`], but with the permissions field added.\",\n        \"required\": [\n          \"id\",\n          \"accountId\",\n          \"permissions\",\n          \"visibility\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"permissions\": {\n            \"$ref\": \"#/components/schemas/AccessLevel\"\n          },\n          \"visibility\": {\n            \"$ref\": \"#/components/schemas/Visibility\"\n          }\n        }\n      },\n      \"AccountId\": {\n        \"type\": \"string\",\n        \"description\": \"Account identifier — either \\\"system\\\" or a user UUID\"\n      },\n      \"BackgroundRequestErrorResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"BackgroundRequestPendingResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"requestId\",\n          \"status\"\n        ],\n        \"properties\": {\n          \"requestId\": {\n            \"$ref\": \"#/components/schemas/RequestId\"\n          },\n          \"status\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"BaseImageSpec\": {\n        \"type\": \"object\",\n        \"description\": \"Specifies a Docker base image via inline Dockerfile content.\\nUsed as an alternative to `docker_image` when you want to build\\na custom image on the fly without a pre-published registry image.\\nNo build context is supported yet.\",\n        \"required\": [\n          \"dockerfileContent\"\n        ],\n        \"properties\": {\n          \"dockerfileContent\": {\n            \"type\": \"string\",\n            \"description\": \"The text content of a Dockerfile (e.g., `\\\"FROM debian:trixie-slim\\\"`).\"\n          }\n        }\n      },\n      \"BatchServiceOperationResult\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"serviceId\",\n          \"success\",\n          \"message\"\n        ],\n        \"properties\": {\n          \"serviceId\": {\n            \"type\": \"string\"\n          },\n          \"success\": {\n            \"type\": \"boolean\"\n          },\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"BatchServiceRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"services\"\n        ],\n        \"properties\": {\n          \"services\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/ServiceIdItem\"\n            }\n          }\n        }\n      },\n      \"BatchServiceResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"results\"\n        ],\n        \"properties\": {\n          \"results\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/BatchServiceOperationResult\"\n            }\n          }\n        }\n      },\n      \"Behavior\": {\n        \"type\": \"string\",\n        \"default\": \"exact\",\n        \"enum\": [\n          \"regex\",\n          \"exact\"\n        ]\n      },\n      \"BlobEncoding\": {\n        \"type\": \"string\",\n        \"description\": \"The encoding of a blob from the API. Always `base64`.\",\n        \"enum\": [\n          \"base64\"\n        ]\n      },\n      \"BlobObject\": {\n        \"type\": \"object\",\n        \"description\": \"Blob object\",\n        \"required\": [\n          \"content\",\n          \"encoding\",\n          \"sha\",\n          \"size\"\n        ],\n        \"properties\": {\n          \"content\": {\n            \"type\": \"string\",\n            \"description\": \"The content of the blob, base64 encoded.\"\n          },\n          \"encoding\": {\n            \"$ref\": \"#/components/schemas/BlobEncoding\",\n            \"description\": \"The encoding of the blob. Always `base64`.\"\n          },\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The object's hash.\"\n          },\n          \"size\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"description\": \"The blob's size in bytes\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"BranchDetails\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"default\",\n          \"name\"\n        ],\n        \"properties\": {\n          \"default\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"target\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"BranchInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"commit\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The latest commit ID on this branch. Null if the branch is empty.\"\n          }\n        }\n      },\n      \"BuildId\": {\n        \"type\": \"string\",\n        \"description\": \"Branded build ID in the format `bld-<20 lowercase alphanumeric chars>`.\"\n      },\n      \"BuildPhase\": {\n        \"type\": \"object\",\n        \"description\": \"One phase the build passed through. Append-only — rows are never\\nupdated. The implicit `finished_at` of any phase is the next phase\\nrow's `started_at`, or `builds.finished_at` for the last phase.\",\n        \"required\": [\n          \"phaseId\",\n          \"buildId\",\n          \"name\",\n          \"startedAt\"\n        ],\n        \"properties\": {\n          \"phaseId\": {\n            \"$ref\": \"#/components/schemas/BuildPhaseId\"\n          },\n          \"buildId\": {\n            \"$ref\": \"#/components/schemas/BuildId\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"snapshotId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotId\",\n                \"description\": \"Snapshot this phase is about, when applicable: the cached snapshot a\\n\\\"(cached)\\\" phase references, or the snapshot a build phase produces.\\n`None` for phases that don't map to a single snapshot (e.g. variant\\nresize prep that hasn't been pre-allocated yet).\"\n              }\n            ]\n          },\n          \"startedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"BuildPhaseId\": {\n        \"type\": \"string\",\n        \"description\": \"Branded build phase ID in the format `bph-<20 lowercase alphanumeric chars>`.\"\n      },\n      \"BuildRecord\": {\n        \"type\": \"object\",\n        \"description\": \"One row in the `builds` table — a long-running snapshot creation task.\\n\\nBuilds do not form trees. Sub-work (Docker pulls, systemd installs,\\nper-layer captures of a multi-layer spec) is captured via append-only\\n`build_phases` rows on this build, not via child builds. Builds related\\nto one user request (e.g. retries that produce a fresh build for the\\nsame template) share a `request_id` — that's the only correlation\\nmechanism between builds.\\n\\nBuild outputs are recorded on the artifact, not the build:\\n`vm_snapshots.build_id` is the only link.\",\n        \"required\": [\n          \"buildId\",\n          \"accountId\",\n          \"state\",\n          \"plannedPhases\",\n          \"startedAt\",\n          \"updatedAt\"\n        ],\n        \"properties\": {\n          \"buildId\": {\n            \"$ref\": \"#/components/schemas/BuildId\"\n          },\n          \"accountId\": {\n            \"$ref\": \"#/components/schemas/AccountId\"\n          },\n          \"requestId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/RequestId\"\n              }\n            ]\n          },\n          \"state\": {\n            \"$ref\": \"#/components/schemas/BuildState\"\n          },\n          \"templateHash\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Inputs that identify the unit of work. Historical / informational\\nonly — not used for dedupe in Phase 1.\"\n          },\n          \"failureReason\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Set when state is `Failed` or `RolledBack`.\"\n          },\n          \"plannedPhases\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Phase names this build plans to emit, in order, populated once at\\nbuild open and never updated. Diffing against `build_phases.name`\\nyields \\\"what's still pending\\\" without polling for state changes.\"\n          },\n          \"startedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"finishedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"BuildState\": {\n        \"type\": \"string\",\n        \"description\": \"Lifecycle state of a build row.\",\n        \"enum\": [\n          \"pending\",\n          \"running\",\n          \"succeeded\",\n          \"failed\"\n        ]\n      },\n      \"CommitAuthor\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"email\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the author/committer\"\n          },\n          \"email\": {\n            \"type\": \"string\",\n            \"description\": \"The email of the author/committer\"\n          },\n          \"date\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\",\n            \"description\": \"Optional date (if not provided, uses current time)\"\n          }\n        }\n      },\n      \"CommitAuthorInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"email\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the author/committer\"\n          },\n          \"email\": {\n            \"type\": \"string\",\n            \"description\": \"The email of the author/committer\"\n          }\n        }\n      },\n      \"CommitComparison\": {\n        \"type\": \"object\",\n        \"description\": \"Response containing the comparison between two commits\",\n        \"required\": [\n          \"status\",\n          \"ahead_by\",\n          \"behind_by\",\n          \"total_commits\",\n          \"files\"\n        ],\n        \"properties\": {\n          \"status\": {\n            \"$ref\": \"#/components/schemas/ComparisonStatus\",\n            \"description\": \"Status of the comparison\"\n          },\n          \"ahead_by\": {\n            \"type\": \"integer\",\n            \"description\": \"Number of commits the head is ahead of base\",\n            \"minimum\": 0\n          },\n          \"behind_by\": {\n            \"type\": \"integer\",\n            \"description\": \"Number of commits the head is behind base\",\n            \"minimum\": 0\n          },\n          \"total_commits\": {\n            \"type\": \"integer\",\n            \"description\": \"Total number of commits in the comparison\",\n            \"minimum\": 0\n          },\n          \"files\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DiffFile\"\n            },\n            \"description\": \"List of changed files\"\n          }\n        }\n      },\n      \"CommitList\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"commits\",\n          \"count\",\n          \"limit\",\n          \"order\"\n        ],\n        \"properties\": {\n          \"commits\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/CommitObject\"\n            },\n            \"description\": \"List of commits\"\n          },\n          \"count\": {\n            \"type\": \"integer\",\n            \"description\": \"Number of commits returned in this page\",\n            \"minimum\": 0\n          },\n          \"offset\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"description\": \"Number of commits skipped (offset) - deprecated, use `since`/`until` selectors instead\",\n            \"minimum\": 0\n          },\n          \"limit\": {\n            \"type\": \"integer\",\n            \"description\": \"Maximum number of commits requested (limit)\",\n            \"minimum\": 0\n          },\n          \"total\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"description\": \"Total number of commits in the branch/range.\\nOmitted when the caller passed `disableTotalCount=true`.\",\n            \"minimum\": 0\n          },\n          \"order\": {\n            \"$ref\": \"#/components/schemas/CommitOrder\",\n            \"description\": \"Sort order used for this query\"\n          },\n          \"selector\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CommitsSelector\",\n                \"description\": \"The selector used for this query (echoed back)\"\n              }\n            ]\n          },\n          \"next_commit\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"SHA of the next commit for pagination. None if there are no more commits.\\n- For `order=desc`: use `until=next_commit` to get the next page\\n- For `order=asc`: use `since=next_commit` to get the next page\"\n          }\n        }\n      },\n      \"CommitObject\": {\n        \"type\": \"object\",\n        \"description\": \"Commit object\",\n        \"required\": [\n          \"author\",\n          \"committer\",\n          \"message\",\n          \"tree\",\n          \"parents\",\n          \"sha\"\n        ],\n        \"properties\": {\n          \"author\": {\n            \"$ref\": \"#/components/schemas/Signature\",\n            \"description\": \"The author of the commit\"\n          },\n          \"committer\": {\n            \"$ref\": \"#/components/schemas/Signature\",\n            \"description\": \"The committer\"\n          },\n          \"message\": {\n            \"type\": \"string\",\n            \"description\": \"The commit message\"\n          },\n          \"tree\": {\n            \"$ref\": \"#/components/schemas/CommitTree\",\n            \"description\": \"The ID of the tree pointed to by this commit\"\n          },\n          \"parents\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/CommitParent\"\n            },\n            \"description\": \"Parent commit(s) of this commit\"\n          },\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The commit's hash ID\"\n          }\n        }\n      },\n      \"CommitOrder\": {\n        \"type\": \"string\",\n        \"description\": \"Sort order for commit listing\",\n        \"enum\": [\n          \"desc\",\n          \"asc\"\n        ]\n      },\n      \"CommitParent\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"sha\"\n        ],\n        \"properties\": {\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The commit's hash ID\"\n          }\n        }\n      },\n      \"CommitSearchEntry\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"sha\",\n          \"message\",\n          \"fullMessage\",\n          \"authorName\",\n          \"authorEmail\",\n          \"timestamp\"\n        ],\n        \"properties\": {\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The commit SHA.\"\n          },\n          \"message\": {\n            \"type\": \"string\",\n            \"description\": \"The commit message (first line / summary).\"\n          },\n          \"fullMessage\": {\n            \"type\": \"string\",\n            \"description\": \"The full commit message.\"\n          },\n          \"authorName\": {\n            \"type\": \"string\",\n            \"description\": \"The author name.\"\n          },\n          \"authorEmail\": {\n            \"type\": \"string\",\n            \"description\": \"The author email.\"\n          },\n          \"timestamp\": {\n            \"type\": \"string\",\n            \"description\": \"The commit timestamp (ISO 8601).\"\n          }\n        }\n      },\n      \"CommitSearchResult\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"totalCommits\",\n          \"hasMore\",\n          \"commits\"\n        ],\n        \"properties\": {\n          \"totalCommits\": {\n            \"type\": \"integer\",\n            \"description\": \"Total number of matching commits found.\",\n            \"minimum\": 0\n          },\n          \"hasMore\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether there are more results beyond those returned.\"\n          },\n          \"commits\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/CommitSearchEntry\"\n            },\n            \"description\": \"The matching commits.\"\n          }\n        }\n      },\n      \"CommitTree\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"sha\"\n        ],\n        \"properties\": {\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The tree's hash ID\"\n          }\n        }\n      },\n      \"CommitsSelector\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"title\": \"Range\",\n            \"description\": \"Select commits in a range (like git's A..B)\",\n            \"required\": [\n              \"Range\"\n            ],\n            \"properties\": {\n              \"Range\": {\n                \"type\": \"object\",\n                \"description\": \"Select commits in a range (like git's A..B)\",\n                \"required\": [\n                  \"since\",\n                  \"until\"\n                ],\n                \"properties\": {\n                  \"since\": {\n                    \"type\": \"string\",\n                    \"description\": \"Exclude this commit and its ancestors\"\n                  },\n                  \"until\": {\n                    \"type\": \"string\",\n                    \"description\": \"Start from this commit (inclusive)\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Since\",\n            \"description\": \"Select commits since this commit SHA (exclusive)\",\n            \"required\": [\n              \"Since\"\n            ],\n            \"properties\": {\n              \"Since\": {\n                \"type\": \"string\",\n                \"format\": \"Commit SHA\",\n                \"description\": \"Select commits since this commit SHA (exclusive)\"\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Until\",\n            \"description\": \"Select commits until this commit SHA (inclusive)\",\n            \"required\": [\n              \"Until\"\n            ],\n            \"properties\": {\n              \"Until\": {\n                \"type\": \"string\",\n                \"format\": \"Commit SHA\",\n                \"description\": \"Select commits until this commit SHA (inclusive)\"\n              }\n            }\n          }\n        ],\n        \"title\": \"CommitsSelector\",\n        \"description\": \"Selector for commits based on since/until\"\n      },\n      \"ComparisonStatus\": {\n        \"type\": \"string\",\n        \"description\": \"The status of a commit comparison\",\n        \"enum\": [\n          \"identical\",\n          \"ahead\",\n          \"behind\",\n          \"diverged\"\n        ]\n      },\n      \"ConfigureGithubSyncRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"githubRepoName\"\n        ],\n        \"properties\": {\n          \"githubRepoName\": {\n            \"type\": \"string\",\n            \"description\": \"The GitHub repository name in \\\"owner/repo\\\" format\"\n          }\n        }\n      },\n      \"CreateBranchRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"sha\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The SHA of the commit this branch should point to.\\nIf not provided, the branch will be created from the default branch.\"\n          }\n        }\n      },\n      \"CreateBranchResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"sha\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the created branch\"\n          },\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The SHA of the commit the branch points to\"\n          }\n        }\n      },\n      \"CreateCommitRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\",\n          \"files\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\",\n            \"description\": \"The commit message\"\n          },\n          \"files\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FileChange\"\n            },\n            \"description\": \"Files to add, modify, or delete in this commit\"\n          },\n          \"branch\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The branch to commit to (e.g., \\\"main\\\"). If not provided, commits to the default branch.\\nIf the branch does not exist, it is created as an orphan branch with this commit as its root.\"\n          },\n          \"author\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CommitAuthorInfo\",\n                \"description\": \"Optional author information (if not provided, uses default)\"\n              }\n            ]\n          },\n          \"expectedSha\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional expected parent SHA for optimistic concurrency control.\\nIf provided, the commit will only be created if the current branch tip (or parent) matches this SHA.\\nThis prevents race conditions when multiple commits are being created concurrently.\\nReturns a conflict error if the check fails.\"\n          }\n        }\n      },\n      \"CreateCommitResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"commit\"\n        ],\n        \"properties\": {\n          \"commit\": {\n            \"$ref\": \"#/components/schemas/CommitObject\",\n            \"description\": \"The created commit object\"\n          }\n        }\n      },\n      \"CreateDomainMappingRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"deploymentId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              }\n            ]\n          },\n          \"vmId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmId\"\n              }\n            ]\n          },\n          \"vmPort\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\"\n          }\n        }\n      },\n      \"CreateDomainMappingSuccess\": {\n        \"$ref\": \"#/components/schemas/FreestyleSandboxDomainMapping\"\n      },\n      \"CreateOdbCommitRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\",\n          \"tree\",\n          \"parents\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\",\n            \"description\": \"The commit message\"\n          },\n          \"tree\": {\n            \"type\": \"string\",\n            \"description\": \"The SHA of the tree for this commit\"\n          },\n          \"parents\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"The SHAs of the parent commits (empty array for initial commit)\"\n          },\n          \"author\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CommitAuthor\",\n                \"description\": \"Optional author information (if not provided, uses committer info)\"\n              }\n            ]\n          },\n          \"committer\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CommitAuthor\",\n                \"description\": \"Optional committer information (if not provided, uses default)\"\n              }\n            ]\n          }\n        }\n      },\n      \"CreateOdbCommitResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"commit\"\n        ],\n        \"properties\": {\n          \"commit\": {\n            \"$ref\": \"#/components/schemas/CommitObject\",\n            \"description\": \"The created commit object\"\n          }\n        }\n      },\n      \"CreateRecordParams\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"domain\",\n          \"record\"\n        ],\n        \"properties\": {\n          \"domain\": {\n            \"type\": \"string\"\n          },\n          \"record\": {\n            \"$ref\": \"#/components/schemas/DnsRecordData\"\n          }\n        }\n      },\n      \"CreateRecordResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"record\"\n        ],\n        \"properties\": {\n          \"record\": {\n            \"$ref\": \"#/components/schemas/DnsRecord\"\n          }\n        }\n      },\n      \"CreateRepoImport\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"title\": \"Files\",\n            \"required\": [\n              \"files\",\n              \"commitMessage\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"files\": {\n                \"type\": \"object\",\n                \"title\": \"Files\",\n                \"description\": \"A map of file names to their contents.\",\n                \"additionalProperties\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"commitMessage\": {\n                \"type\": \"string\"\n              },\n              \"authorName\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"authorEmail\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"files\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Tar\",\n            \"required\": [\n              \"url\",\n              \"commitMessage\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"url\": {\n                \"type\": \"string\",\n                \"format\": \"uri\"\n              },\n              \"dir\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"commitMessage\": {\n                \"type\": \"string\"\n              },\n              \"authorName\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"authorEmail\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"tar\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Zip\",\n            \"required\": [\n              \"url\",\n              \"commitMessage\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"url\": {\n                \"type\": \"string\",\n                \"format\": \"uri\"\n              },\n              \"dir\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"commitMessage\": {\n                \"type\": \"string\"\n              },\n              \"authorName\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"authorEmail\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"zip\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Git\",\n            \"required\": [\n              \"url\",\n              \"commitMessage\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"url\": {\n                \"type\": \"string\",\n                \"format\": \"uri\"\n              },\n              \"branch\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ],\n                \"deprecated\": true\n              },\n              \"rev\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ],\n                \"description\": \"The revision (branch, tag, or commit hash) to checkout from the source repo.\\n\\nThis field supersedes 'branch'.\"\n              },\n              \"dir\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"commitMessage\": {\n                \"type\": \"string\"\n              },\n              \"authorName\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"authorEmail\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"git\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"CreateRepoRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"source\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CreateRepoSource\"\n              }\n            ]\n          },\n          \"import\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CreateRepoImport\"\n              }\n            ]\n          },\n          \"defaultBranch\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"CreateRepoSource\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"url\"\n        ],\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\",\n            \"format\": \"uri\"\n          },\n          \"branch\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"deprecated\": true\n          },\n          \"rev\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The revision (branch, tag, or commit hash) to checkout from the source repo.\\nThe given revision will be used as the new repository's default branch.\\n\\nThis field supersedes 'branch'.\"\n          },\n          \"depth\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\"\n          },\n          \"allBranches\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"If true, all branches and tags will be fetched from the source repository.\\nDefaults to false, which only fetches the default branch (unless `rev` is set).\"\n          }\n        }\n      },\n      \"CreateRepositoryRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"This name is not visible to users, and is only accessible to you via API and in the\\ndashboard. Mostly useful for observability.\"\n          },\n          \"public\": {\n            \"type\": \"boolean\",\n            \"default\": false\n          },\n          \"defaultBranch\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The default branch name for the repository. Defaults to \\\"main\\\" if not specified.\"\n          },\n          \"source\": {\n            \"$ref\": \"#/components/schemas/CreateRepoSource\",\n            \"description\": \"Fork from another Git repository. Cannot be used with `import`.\"\n          },\n          \"import\": {\n            \"$ref\": \"#/components/schemas/CreateRepoImport\",\n            \"description\": \"Import static content with an initial commit. Cannot be used with `source`.\"\n          }\n        }\n      },\n      \"CreateRepositoryResponseSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"repoId\"\n        ],\n        \"properties\": {\n          \"repoId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      },\n      \"CreateScheduleRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"cron\"\n        ],\n        \"properties\": {\n          \"deploymentId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentId\",\n                \"description\": \"The deployment to invoke on each tick. Exactly one of `deploymentId` or `run` must be set.\"\n              }\n            ]\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"path\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"cron\": {\n            \"type\": \"string\"\n          },\n          \"timezone\": {\n            \"type\": \"string\"\n          },\n          \"retries\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"payload\": {},\n          \"run\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CronRunConfig\",\n                \"description\": \"Serverless run config to execute on each tick. Exactly one of `deploymentId` or `run` must be set.\"\n              }\n            ]\n          }\n        }\n      },\n      \"CreateScheduleResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"schedule\"\n        ],\n        \"properties\": {\n          \"schedule\": {\n            \"$ref\": \"#/components/schemas/Schedule\"\n          }\n        }\n      },\n      \"CreateSnapshotRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"spec\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotSpec\",\n                \"description\": \"Recursive snapshot spec. When set, `template` must be omitted.\\n`spec.snapshot` materializes into a chain of cached snapshots before\\nthe outermost layer is built.\\n\\n**Deprecated: VM specs are scheduled for removal in a future API version.**\"\n              }\n            ]\n          },\n          \"template\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmTemplate\",\n                \"description\": \"Legacy single-layer snapshot template. Subsumed by the recursive\\n`spec` chain, which supports multiple cacheable layers.\\n\\n**Deprecated: use `spec` instead.**\"\n              }\n            ]\n          },\n          \"persistence\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotPersistence\",\n                \"description\": \"Defaults to persistent. If set to sticky we will intelligently clean it up as your account reaches its limits.\"\n              }\n            ]\n          },\n          \"dockerCredentials\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DockerCredentials\",\n                \"description\": \"Optional Docker registry credentials required when using a private image\\nin `spec.baseImage`.\"\n              }\n            ]\n          }\n        }\n      },\n      \"CreateSnapshotResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"snapshotId\"\n        ],\n        \"properties\": {\n          \"snapshotId\": {\n            \"$ref\": \"#/components/schemas/SnapshotId\"\n          }\n        }\n      },\n      \"CreateVmRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"spec\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmSpec\",\n                \"description\": \"Top-level recursive spec for the VM. When set, all other top-level\\nfields (including `template`) must be omitted — use the fields inside\\n`spec` instead. Supports arbitrary-depth snapshot layering through\\n`spec.snapshot`, materialized server-side into a chain of cached\\nsnapshots.\\n\\n**Deprecated: VM specs are scheduled for removal in a future API version.**\"\n              }\n            ]\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional name/label for the VM. VM-instance metadata — not part of the\\ncacheable spec, so it lives at the top level alongside `spec`.\"\n          },\n          \"idleTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Idle timeout in seconds. If set, the VM will be automatically suspended\\nafter this many seconds of no network activity.\"\n          },\n          \"ports\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PortMapping\"\n            },\n            \"description\": \"Optional list of ports to expose externally. If not provided, port 3000\\nwill be exposed on port 443 by default. Pass an empty array to disable\\nexternal ports. Only ports 8081 and 443 can be configured externally for\\nnow. Any target port is allowed.\",\n            \"example\": [\n              {\n                \"port\": 443,\n                \"targetPort\": 3000\n              }\n            ]\n          },\n          \"waitForReadySignal\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"Whether the api request should wait for the VM to be ready before\\nreturning. By default, the VM is considered ready when the serial\\nconsole is ready for login.\",\n            \"default\": true,\n            \"example\": true\n          },\n          \"readySignalTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"How long to wait for the ready signal before timing out. Defaults to 120\\nseconds if not provided.\"\n          },\n          \"workdir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional working directory for the VM. File system and shell commands\\nwill be executed in this directory.\\n\\n**Deprecated: use `spec.snapshot.workdir` instead.**\",\n            \"deprecated\": true\n          },\n          \"persistence\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmPersistence\",\n                \"description\": \"Persistence strategy for the VM instance. If not provided, defaults to\\n'sticky' with priority 5.\"\n              }\n            ]\n          },\n          \"systemd\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SystemdConfig\",\n                \"description\": \"Optional systemd configuration for services to run in the VM.\\n\\n**Deprecated: scheduled for removal in a future API version.**\"\n              }\n            ]\n          },\n          \"users\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LinuxUserSpec\"\n            }\n          },\n          \"groups\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LinuxGroupSpec\"\n            }\n          },\n          \"additionalFiles\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"**Deprecated: scheduled for removal in a future API version.**\",\n            \"additionalProperties\": {\n              \"$ref\": \"#/components/schemas/FreestyleFile\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            },\n            \"deprecated\": true\n          },\n          \"snapshotId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotId\",\n                \"description\": \"ID of a previously-created snapshot to boot directly as the VM's base.\\nThis is distinct from `spec.snapshot.snapshotId`, which materializes a\\nnew cacheable snapshot layer based on that snapshot before creating the VM.\"\n              }\n            ]\n          },\n          \"template\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmTemplate\",\n                \"description\": \"Legacy single-layer VM template. Subsumed by the recursive\\n`spec.snapshot` chain, which supports multiple cacheable layers.\\n\\n**Deprecated: use `spec.snapshot` instead.**\"\n              }\n            ]\n          },\n          \"gitRepos\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/GitRepositorySpec\"\n            },\n            \"description\": \"Legacy list of git repositories to clone into the VM at startup.\\n\\n**Deprecated: use `spec.git.repos` instead.**\",\n            \"deprecated\": true\n          },\n          \"git\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/GitOptions\",\n                \"description\": \"Git configuration for the VM, including user settings and repositories to clone into the VM at startup.\"\n              }\n            ]\n          },\n          \"recreate\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"If true, the VM can be recreated if it is deleted. The VM will keep the same ID\\nand be recreated with the same configuration when something tries to start it.\",\n            \"default\": false\n          },\n          \"aptDeps\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Optional list of apt packages to install when setting up the VM.\\nThese packages will be installed using `apt-get install` on VM startup.\\n\\n**Deprecated: scheduled for removal in a future API version.**\",\n            \"deprecated\": true,\n            \"example\": [\n              \"git\",\n              \"curl\",\n              \"vim\"\n            ]\n          },\n          \"domains\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/VmDomainConfig\"\n            },\n            \"description\": \"Optional list of custom domains to map to this VM. Each domain can optionally\\nspecify a vm port. If vm_port is not specified, defaults to 443.\\nDomains must be verified and owned by the account before they can be mapped.\",\n            \"example\": [\n              {\n                \"domain\": \"myapp.example.com\",\n                \"vmPort\": 3000\n              }\n            ]\n          },\n          \"activityThresholdBytes\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Minimum bytes of network traffic per check interval to count as real\\nactivity for the idle timer.\",\n            \"minimum\": 0\n          },\n          \"dockerCredentials\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DockerCredentials\",\n                \"description\": \"Optional Docker registry credentials required when using a private\\nimage in the spec's base image.\"\n              }\n            ]\n          },\n          \"vcpuCount\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"Number of vCPUs for the VM. Must be a power of two (1, 2, 4, ..., 32).\\nWhen `spec` is also provided, the spec's leaf-layer `vcpuCount` wins\\nand this field is ignored.\",\n            \"minimum\": 0\n          },\n          \"memSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"VM memory in GiB. Must satisfy the same power-of-two constraints as\\nthe firecracker backend. When `spec` is also provided, the spec's\\nleaf-layer `memSizeGb` wins and this field is ignored.\",\n            \"minimum\": 0\n          },\n          \"rootfsSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Rootfs size in GiB. When `spec` is also provided, the spec's\\nleaf-layer `rootfsSizeGb` wins and this field is ignored.\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"CreateVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"domains\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"domains\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"consoleUrl\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"**Deprecated:** this field is scheduled for removal and is no longer\\npopulated. The default `{vm_id}.style.dev` hostname still resolves via\\nfirecracker's host registry; consumers should construct it themselves\\nif needed.\",\n            \"deprecated\": true\n          },\n          \"snapshotId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotId\",\n                \"description\": \"Debugging tool, if you believe its base is incorrect you can go off it.\"\n              }\n            ]\n          }\n        }\n      },\n      \"CreatedToken\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"token\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"token\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"CronRunConfig\": {\n        \"allOf\": [\n          {\n            \"$ref\": \"#/components/schemas/CronRunConfigParams\"\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"code\"\n            ],\n            \"properties\": {\n              \"code\": {\n                \"type\": \"string\",\n                \"description\": \"The JavaScript or TypeScript module to execute. Must export a default function.\"\n              }\n            }\n          }\n        ],\n        \"description\": \"Configuration for running a serverless script when a cron schedule fires.\\nThis is an alternative to targeting a deployment — use this to run ad-hoc\\ncode on each cron tick without needing a deployed project.\"\n      },\n      \"CronRunConfigParams\": {\n        \"type\": \"object\",\n        \"description\": \"Optional configuration for a cron-triggered serverless run.\",\n        \"properties\": {\n          \"envVars\": {\n            \"type\": \"object\",\n            \"description\": \"Environment variables available to the script\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"nodeModules\": {\n            \"type\": \"object\",\n            \"description\": \"Node modules to install (package name → version)\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"inferNodeModules\": {\n            \"type\": \"boolean\",\n            \"description\": \"If true, Freestyle will best-effort infer npm packages from script imports.\",\n            \"default\": false\n          },\n          \"timeout\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"Script execution timeout in seconds\",\n            \"default\": null,\n            \"minimum\": 0\n          },\n          \"tags\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Tags for organizing runs\",\n            \"default\": []\n          },\n          \"peerDependencyResolution\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"If false, peer dependencies are not auto-resolved.\",\n            \"default\": null\n          },\n          \"networkPermissions\": {\n            \"description\": \"Outbound network permission rules.\"\n          },\n          \"customHeaders\": {\n            \"type\": \"object\",\n            \"description\": \"Headers injected into outgoing fetch requests.\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"proxy\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Proxy URL for outbound requests.\",\n            \"default\": null\n          },\n          \"egress\": {\n            \"description\": \"Egress control configuration.\"\n          },\n          \"zeroRetention\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"If true, avoid retaining logs/results/code for this run.\",\n            \"default\": null\n          }\n        }\n      },\n      \"CustomBuildOptions\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"command\"\n        ],\n        \"properties\": {\n          \"command\": {\n            \"type\": \"string\"\n          },\n          \"outDir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"envVars\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"DeleteRecordResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"DeleteRepositorySuccess\": {\n        \"type\": \"object\"\n      },\n      \"DeleteScheduleResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"success\"\n        ],\n        \"properties\": {\n          \"success\": {\n            \"type\": \"boolean\"\n          }\n        }\n      },\n      \"DeleteSnapshotResponses\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"snapshot_id\"\n            ],\n            \"properties\": {\n              \"snapshot_id\": {\n                \"$ref\": \"#/components/schemas/SnapshotId\"\n              }\n            }\n          }\n        ]\n      },\n      \"DeleteVmResponses\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"id\",\n              \"recreate\"\n            ],\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"recreate\": {\n                \"type\": \"boolean\"\n              }\n            }\n          }\n        ]\n      },\n      \"DeploymentBuildOptions\": {\n        \"oneOf\": [\n          {\n            \"type\": \"boolean\"\n          },\n          {\n            \"$ref\": \"#/components/schemas/CustomBuildOptions\"\n          }\n        ]\n      },\n      \"DeploymentId\": {\n        \"type\": \"string\",\n        \"format\": \"uuid\"\n      },\n      \"DeploymentLogEntry\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"deploymentId\",\n          \"accountId\",\n          \"provisionedAt\",\n          \"timeout\",\n          \"state\",\n          \"domains\",\n          \"envVars\"\n        ],\n        \"properties\": {\n          \"deploymentId\": {\n            \"$ref\": \"#/components/schemas/DeploymentId\"\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"provisionedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"timeout\": {\n            \"type\": \"string\"\n          },\n          \"state\": {\n            \"$ref\": \"#/components/schemas/DeploymentState\"\n          },\n          \"deployedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"domains\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"envVars\": {\n            \"type\": \"object\",\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"DeploymentSource\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"title\": \"Files\",\n            \"required\": [\n              \"files\",\n              \"kind\"\n            ],\n            \"properties\": {\n              \"files\": {\n                \"type\": \"object\",\n                \"additionalProperties\": {\n                  \"$ref\": \"#/components/schemas/FreestyleFile\"\n                },\n                \"propertyNames\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"kind\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"files\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Tar\",\n            \"required\": [\n              \"url\",\n              \"kind\"\n            ],\n            \"properties\": {\n              \"url\": {\n                \"type\": \"string\"\n              },\n              \"kind\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"tar\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Git\",\n            \"description\": \"`dir` is the Directory to deploy from. If not provided, the root of the repository will be used.\",\n            \"required\": [\n              \"url\",\n              \"kind\"\n            ],\n            \"properties\": {\n              \"url\": {\n                \"type\": \"string\"\n              },\n              \"branch\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ],\n                \"example\": \"main\"\n              },\n              \"dir\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ],\n                \"example\": \"dist\"\n              },\n              \"kind\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"git\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"DeploymentState\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"provisioning\",\n          \"deployed\",\n          \"failed\"\n        ]\n      },\n      \"DescribeGitPermissionSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"identity\",\n          \"repo\"\n        ],\n        \"properties\": {\n          \"identity\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"repo\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"accessLevel\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/AccessLevel\"\n              }\n            ]\n          }\n        }\n      },\n      \"DiffFile\": {\n        \"type\": \"object\",\n        \"description\": \"A file that was changed in the comparison\",\n        \"required\": [\n          \"filename\",\n          \"status\",\n          \"additions\",\n          \"deletions\",\n          \"changes\"\n        ],\n        \"properties\": {\n          \"sha\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The blob SHA of the file\"\n          },\n          \"filename\": {\n            \"type\": \"string\",\n            \"description\": \"The file path\"\n          },\n          \"status\": {\n            \"$ref\": \"#/components/schemas/DiffFileStatus\",\n            \"description\": \"The status of the file (added, removed, modified, renamed, copied, changed, unchanged)\"\n          },\n          \"additions\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"description\": \"Number of lines added\",\n            \"minimum\": 0\n          },\n          \"deletions\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"description\": \"Number of lines deleted\",\n            \"minimum\": 0\n          },\n          \"changes\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"description\": \"Total number of changes (additions + deletions)\",\n            \"minimum\": 0\n          },\n          \"previous_filename\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Previous filename (for renamed/copied files)\"\n          }\n        }\n      },\n      \"DiffFileMatch\": {\n        \"type\": \"object\",\n        \"description\": \"A file within a commit that contained matching changed content.\",\n        \"required\": [\n          \"path\",\n          \"matches\"\n        ],\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"The file path relative to the repository root.\"\n          },\n          \"matches\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DiffLineMatch\"\n            },\n            \"description\": \"The matching lines in the diff for this file.\"\n          }\n        }\n      },\n      \"DiffFileStatus\": {\n        \"type\": \"string\",\n        \"description\": \"The status of a file in a diff\",\n        \"enum\": [\n          \"added\",\n          \"removed\",\n          \"modified\",\n          \"renamed\",\n          \"copied\",\n          \"changed\",\n          \"unchanged\"\n        ]\n      },\n      \"DiffLineMatch\": {\n        \"type\": \"object\",\n        \"description\": \"A line that was added or changed in a diff that matched the search query.\",\n        \"required\": [\n          \"line\",\n          \"lineNumber\",\n          \"startColumn\",\n          \"endColumn\",\n          \"isAddition\"\n        ],\n        \"properties\": {\n          \"line\": {\n            \"type\": \"string\",\n            \"description\": \"The matched line content (without the leading +/- prefix).\"\n          },\n          \"lineNumber\": {\n            \"type\": \"integer\",\n            \"description\": \"1-based line number in the new file (for additions) or old file (for deletions).\",\n            \"minimum\": 0\n          },\n          \"startColumn\": {\n            \"type\": \"integer\",\n            \"description\": \"0-based byte offset of the match start within the line.\",\n            \"minimum\": 0\n          },\n          \"endColumn\": {\n            \"type\": \"integer\",\n            \"description\": \"0-based byte offset of the match end within the line.\",\n            \"minimum\": 0\n          },\n          \"isAddition\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether this was an added line (true) or a deleted line (false).\"\n          }\n        }\n      },\n      \"DiffSearchCommit\": {\n        \"type\": \"object\",\n        \"description\": \"A commit that contained matching diff content.\",\n        \"required\": [\n          \"sha\",\n          \"message\",\n          \"authorName\",\n          \"authorEmail\",\n          \"timestamp\",\n          \"files\"\n        ],\n        \"properties\": {\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The commit SHA.\"\n          },\n          \"message\": {\n            \"type\": \"string\",\n            \"description\": \"The commit message summary (first line).\"\n          },\n          \"authorName\": {\n            \"type\": \"string\",\n            \"description\": \"The author name.\"\n          },\n          \"authorEmail\": {\n            \"type\": \"string\",\n            \"description\": \"The author email.\"\n          },\n          \"timestamp\": {\n            \"type\": \"string\",\n            \"description\": \"The commit timestamp (ISO 8601).\"\n          },\n          \"files\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DiffFileMatch\"\n            },\n            \"description\": \"Files in this commit with matching changed content.\"\n          }\n        }\n      },\n      \"DiffSearchResult\": {\n        \"type\": \"object\",\n        \"description\": \"Diff content search results.\",\n        \"required\": [\n          \"totalCommits\",\n          \"hasMore\",\n          \"commits\"\n        ],\n        \"properties\": {\n          \"totalCommits\": {\n            \"type\": \"integer\",\n            \"description\": \"Total number of commits with matching changes (before pagination).\",\n            \"minimum\": 0\n          },\n          \"hasMore\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether there are more results beyond the current page.\"\n          },\n          \"commits\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DiffSearchCommit\"\n            },\n            \"description\": \"The matching commits with their file-level diff matches.\"\n          }\n        }\n      },\n      \"DnsRecord\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"kind\",\n          \"name\",\n          \"value\",\n          \"ttl\",\n          \"managed\"\n        ],\n        \"properties\": {\n          \"kind\": {\n            \"$ref\": \"#/components/schemas/DnsRecordKind\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"type\": \"string\"\n          },\n          \"ttl\": {\n            \"type\": \"string\"\n          },\n          \"priority\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"managed\": {\n            \"type\": \"boolean\"\n          }\n        }\n      },\n      \"DnsRecordData\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"kind\",\n          \"name\",\n          \"value\"\n        ],\n        \"properties\": {\n          \"kind\": {\n            \"$ref\": \"#/components/schemas/DnsRecordKind\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"type\": \"string\"\n          },\n          \"ttl\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"priority\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"DnsRecordKind\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"A\",\n          \"AAAA\",\n          \"CNAME\",\n          \"TXT\",\n          \"NS\"\n        ]\n      },\n      \"DockerCredentials\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"registry\",\n          \"username\",\n          \"password\"\n        ],\n        \"properties\": {\n          \"registry\": {\n            \"type\": \"string\",\n            \"description\": \"Docker registry URL (e.g., \\\"ghcr.io\\\", \\\"docker.io\\\")\"\n          },\n          \"username\": {\n            \"type\": \"string\",\n            \"description\": \"Username for the registry\"\n          },\n          \"password\": {\n            \"type\": \"string\",\n            \"description\": \"Password or token for the registry\"\n          }\n        }\n      },\n      \"DomainMappingError\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"FailedToCheckDomainMappingPermissions\"\n            ],\n            \"properties\": {\n              \"FailedToCheckDomainMappingPermissions\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"message\"\n                ],\n                \"properties\": {\n                  \"message\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"FailedPermissionsCheck\"\n            ],\n            \"properties\": {\n              \"FailedPermissionsCheck\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"domain\"\n                ],\n                \"properties\": {\n                  \"domain\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"FailedRemoveDomainMapping\"\n            ],\n            \"properties\": {\n              \"FailedRemoveDomainMapping\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"message\"\n                ],\n                \"properties\": {\n                  \"message\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"FailedToInsertOwnership\"\n            ],\n            \"properties\": {\n              \"FailedToInsertOwnership\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"message\"\n                ],\n                \"properties\": {\n                  \"message\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"DomainAlreadyExists\"\n            ],\n            \"properties\": {\n              \"DomainAlreadyExists\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"domain\"\n                ],\n                \"properties\": {\n                  \"domain\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"InvalidRequest\"\n            ],\n            \"properties\": {\n              \"InvalidRequest\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"message\"\n                ],\n                \"properties\": {\n                  \"message\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"FailedInsertDomainMapping\"\n            ],\n            \"properties\": {\n              \"FailedInsertDomainMapping\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"message\"\n                ],\n                \"properties\": {\n                  \"message\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"FailedToProvisionCertificateForMapping\"\n            ],\n            \"properties\": {\n              \"FailedToProvisionCertificateForMapping\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"message\"\n                ],\n                \"properties\": {\n                  \"message\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"DeploymentAccessDenied\"\n            ],\n            \"properties\": {\n              \"DeploymentAccessDenied\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"deployment_id\"\n                ],\n                \"properties\": {\n                  \"deployment_id\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"VmAccessDeniedForMapping\"\n            ],\n            \"properties\": {\n              \"VmAccessDeniedForMapping\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"vm_id\"\n                ],\n                \"properties\": {\n                  \"vm_id\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"DomainOwnershipNotVerified\"\n            ],\n            \"properties\": {\n              \"DomainOwnershipNotVerified\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"domain\"\n                ],\n                \"properties\": {\n                  \"domain\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          }\n        ]\n      },\n      \"DomainVerificationRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"domain\",\n          \"accountId\",\n          \"verificationCode\",\n          \"createdAt\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\",\n            \"example\": \"1234-5678-9012-3456\"\n          },\n          \"domain\": {\n            \"type\": \"string\",\n            \"example\": \"example.com\"\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\",\n            \"example\": \"1234-5678-9012-3456\"\n          },\n          \"verificationCode\": {\n            \"type\": \"string\",\n            \"example\": \"freestyle-verification-v1-1234-5678-9012-3456\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"example\": \"1234567890\"\n          }\n        }\n      },\n      \"DynamicConfig\": {\n        \"type\": \"object\",\n        \"description\": \"Dynamic route configuration for paths that should be handled by the worker\",\n        \"required\": [\n          \"source\"\n        ],\n        \"properties\": {\n          \"source\": {\n            \"type\": \"string\",\n            \"description\": \"Source pattern (regex or glob pattern like \\\"/api/.*\\\" or \\\"/api/**\\\")\"\n          },\n          \"methods\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"HTTP methods this route applies to (if None, applies to all methods)\"\n          }\n        }\n      },\n      \"EgressAllowRules\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"domains\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"Whitelist of domains. Empty object means no domains allowed.\\n\\\"*\\\" means allow all domains.\\nDomain name maps to a list of transformations (currently just headers).\",\n            \"additionalProperties\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/EgressDomainConfig\"\n              }\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"ips\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"Whitelist of IPs. Empty object means no IPs allowed.\\nCIDR notation supported (e.g., \\\"173.194.0.0/16\\\").\\nIPs are allowed on any port/protocol.\",\n            \"additionalProperties\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/EgressIpConfig\"\n              }\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"EgressConfig\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"allow\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/EgressAllowRules\",\n                \"description\": \"Allow rules for egress traffic\"\n              }\n            ]\n          },\n          \"deny\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/EgressDenyRules\",\n                \"description\": \"Deny rules for egress traffic (evaluated after allow)\"\n              }\n            ]\n          }\n        }\n      },\n      \"EgressDenyRules\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"ips\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"Blacklist of IPs. These override allow rules.\\nCIDR notation supported.\",\n            \"additionalProperties\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/EgressIpConfig\"\n              }\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"EgressDomainConfig\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"transform\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/EgressTransform\"\n            },\n            \"description\": \"Transformations to apply to requests to this domain\"\n          }\n        }\n      },\n      \"EgressIpConfig\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"transform\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/EgressTransform\"\n            },\n            \"description\": \"Transformations to apply to requests to this IP\"\n          }\n        }\n      },\n      \"EgressTransform\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"headers\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"Headers to set on outgoing requests\",\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"EmptyResponse\": {\n        \"type\": \"object\"\n      },\n      \"ErrorResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"Error_DomainMappingError\": {\n        \"type\": \"object\",\n        \"description\": \"The structure of an error - should rarely be interacted with directly.\\n\\nCreate your own error types, implement [`ServiceError`] for them, and they will automatically\\nconvert to [`Error`] with `?` or `.into()`.\",\n        \"required\": [\n          \"error\"\n        ],\n        \"properties\": {\n          \"error\": {\n            \"oneOf\": [\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"FailedToCheckDomainMappingPermissions\"\n                ],\n                \"properties\": {\n                  \"FailedToCheckDomainMappingPermissions\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"message\"\n                    ],\n                    \"properties\": {\n                      \"message\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"FailedPermissionsCheck\"\n                ],\n                \"properties\": {\n                  \"FailedPermissionsCheck\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"domain\"\n                    ],\n                    \"properties\": {\n                      \"domain\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"FailedRemoveDomainMapping\"\n                ],\n                \"properties\": {\n                  \"FailedRemoveDomainMapping\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"message\"\n                    ],\n                    \"properties\": {\n                      \"message\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"FailedToInsertOwnership\"\n                ],\n                \"properties\": {\n                  \"FailedToInsertOwnership\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"message\"\n                    ],\n                    \"properties\": {\n                      \"message\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"DomainAlreadyExists\"\n                ],\n                \"properties\": {\n                  \"DomainAlreadyExists\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"domain\"\n                    ],\n                    \"properties\": {\n                      \"domain\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"InvalidRequest\"\n                ],\n                \"properties\": {\n                  \"InvalidRequest\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"message\"\n                    ],\n                    \"properties\": {\n                      \"message\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"FailedInsertDomainMapping\"\n                ],\n                \"properties\": {\n                  \"FailedInsertDomainMapping\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"message\"\n                    ],\n                    \"properties\": {\n                      \"message\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"FailedToProvisionCertificateForMapping\"\n                ],\n                \"properties\": {\n                  \"FailedToProvisionCertificateForMapping\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"message\"\n                    ],\n                    \"properties\": {\n                      \"message\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"DeploymentAccessDenied\"\n                ],\n                \"properties\": {\n                  \"DeploymentAccessDenied\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"deployment_id\"\n                    ],\n                    \"properties\": {\n                      \"deployment_id\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"VmAccessDeniedForMapping\"\n                ],\n                \"properties\": {\n                  \"VmAccessDeniedForMapping\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"vm_id\"\n                    ],\n                    \"properties\": {\n                      \"vm_id\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"DomainOwnershipNotVerified\"\n                ],\n                \"properties\": {\n                  \"DomainOwnershipNotVerified\": {\n                    \"type\": \"object\",\n                    \"required\": [\n                      \"domain\"\n                    ],\n                    \"properties\": {\n                      \"domain\": {\n                        \"type\": \"string\"\n                      }\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          \"headers\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"context\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {},\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"ExecAwaitRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"command\"\n        ],\n        \"properties\": {\n          \"command\": {\n            \"type\": \"string\"\n          },\n          \"terminal\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"timeoutMs\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ExecAwaitVmResponse\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"stdout\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"stderr\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"statusCode\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\"\n          }\n        }\n      },\n      \"ExecuteLogEntry\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"deployment\",\n          \"accountId\",\n          \"provisionedAt\",\n          \"state\",\n          \"envVars\"\n        ],\n        \"properties\": {\n          \"deployment\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"provisionedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"startedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"duration\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"state\": {\n            \"$ref\": \"#/components/schemas/ExecuteRunState\"\n          },\n          \"envVars\": {\n            \"type\": \"object\",\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"ExecuteRunInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"code\",\n          \"nodeModules\"\n        ],\n        \"properties\": {\n          \"code\": {\n            \"type\": \"string\"\n          },\n          \"nodeModules\": {\n            \"type\": \"object\",\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"ExecuteRunState\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"starting\",\n          \"running\",\n          \"complete\"\n        ]\n      },\n      \"ExecuteScriptSuccess\": {\n        \"type\": \"object\",\n        \"description\": \"Success result from script execution\",\n        \"required\": [\n          \"result\",\n          \"logs\"\n        ],\n        \"properties\": {\n          \"result\": {},\n          \"logs\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/JavascriptLog\"\n            }\n          }\n        }\n      },\n      \"Execution\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"scheduleId\",\n          \"runAt\",\n          \"status\",\n          \"attempts\",\n          \"maxAttempts\",\n          \"createdAt\",\n          \"updatedAt\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"scheduleId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"deploymentId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              }\n            ]\n          },\n          \"runAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"nextRetryAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"status\": {\n            \"$ref\": \"#/components/schemas/ExecutionStatus\"\n          },\n          \"attempts\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"maxAttempts\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"lockedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"lockOwner\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"lastError\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"instanceId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"startedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"completedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"ExecutionAttempt\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"executionId\",\n          \"attemptNumber\",\n          \"status\",\n          \"startedAt\",\n          \"createdAt\",\n          \"updatedAt\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"executionId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"attemptNumber\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"status\": {\n            \"$ref\": \"#/components/schemas/ExecutionStatus\"\n          },\n          \"instanceId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"error\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"startedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"completedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"ExecutionStatus\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"queued\",\n          \"running\",\n          \"succeeded\",\n          \"failed\",\n          \"retry\"\n        ]\n      },\n      \"ExecutionWithAttempts\": {\n        \"allOf\": [\n          {\n            \"$ref\": \"#/components/schemas/Execution\"\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"attemptHistory\"\n            ],\n            \"properties\": {\n              \"attemptHistory\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/ExecutionAttempt\"\n                }\n              }\n            }\n          }\n        ]\n      },\n      \"FileChange\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"path\"\n        ],\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"The path of the file in the repository (e.g., \\\"src/main.rs\\\")\"\n          },\n          \"content\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The content of the file. Mutually exclusive with `deleted`.\\nIf encoding is base64, this should be a base64-encoded string.\"\n          },\n          \"encoding\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/FileEncoding\",\n                \"description\": \"The encoding of the content. Defaults to utf8.\"\n              }\n            ]\n          },\n          \"deleted\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"Whether to delete this file. Mutually exclusive with `content`.\"\n          }\n        }\n      },\n      \"FileEncoding\": {\n        \"type\": \"string\",\n        \"description\": \"File content encoding\",\n        \"enum\": [\n          \"utf8\",\n          \"base64\"\n        ]\n      },\n      \"FileInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"kind\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"kind\": {\n            \"$ref\": \"#/components/schemas/FileKind\"\n          }\n        }\n      },\n      \"FileKind\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"file\",\n          \"directory\"\n        ]\n      },\n      \"FileSearchResult\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"path\",\n          \"size\",\n          \"matches\"\n        ],\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"The file path relative to the repository root.\"\n          },\n          \"extension\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The file extension (e.g. \\\"rs\\\", \\\"ts\\\"), if any.\"\n          },\n          \"size\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"description\": \"The size of the file in bytes.\",\n            \"minimum\": 0\n          },\n          \"matches\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LineMatch\"\n            },\n            \"description\": \"The matches found in this file.\"\n          }\n        }\n      },\n      \"FileSystemResponse\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"content\"\n            ],\n            \"properties\": {\n              \"content\": {\n                \"type\": \"string\"\n              },\n              \"encoding\": {\n                \"$ref\": \"#/components/schemas/FileEncoding\"\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"files\"\n            ],\n            \"properties\": {\n              \"files\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/FileInfo\"\n                }\n              }\n            }\n          }\n        ]\n      },\n      \"FilenameEntry\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"path\",\n          \"size\"\n        ],\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"The full file path relative to the repository root.\"\n          },\n          \"extension\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The file extension (e.g. \\\"rs\\\", \\\"ts\\\"), if any.\"\n          },\n          \"size\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"description\": \"The file size in bytes.\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"FilenameSearchResult\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"totalFiles\",\n          \"hasMore\",\n          \"files\"\n        ],\n        \"properties\": {\n          \"totalFiles\": {\n            \"type\": \"integer\",\n            \"description\": \"Total number of matching files.\",\n            \"minimum\": 0\n          },\n          \"hasMore\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether the results were truncated.\"\n          },\n          \"files\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FilenameEntry\"\n            },\n            \"description\": \"The matching file paths.\"\n          }\n        }\n      },\n      \"ForkVmRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"count\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ForkVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"vmId\",\n          \"forks\"\n        ],\n        \"properties\": {\n          \"vmId\": {\n            \"type\": \"string\"\n          },\n          \"forks\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/ForkedVmResponse\"\n            }\n          }\n        }\n      },\n      \"ForkedVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"domains\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"domains\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"consoleUrl\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"FreestyleCloudstateDeployConfiguration\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"domains\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"ID of the project to deploy, if not provided will create a new project\",\n            \"default\": null\n          },\n          \"envVars\": {\n            \"type\": \"object\",\n            \"description\": \"The environment variables that the cloudstate deploy can access\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"cloudstateDatabaseId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"uuid\",\n            \"default\": null\n          }\n        }\n      },\n      \"FreestyleCloudstateDeployErrorResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"FreestyleCloudstateDeployRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"classes\"\n        ],\n        \"properties\": {\n          \"classes\": {\n            \"type\": \"string\"\n          },\n          \"config\": {\n            \"$ref\": \"#/components/schemas/FreestyleCloudstateDeployConfiguration\"\n          }\n        }\n      },\n      \"FreestyleCloudstateDeploySuccessResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"deploymentId\",\n          \"cloudstateDatabaseId\"\n        ],\n        \"properties\": {\n          \"deploymentId\": {\n            \"$ref\": \"#/components/schemas/DeploymentId\"\n          },\n          \"cloudstateDatabaseId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      },\n      \"FreestyleDeleteDomainVerificationRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"domain\",\n          \"verificationCode\"\n        ],\n        \"properties\": {\n          \"domain\": {\n            \"type\": \"string\",\n            \"description\": \"The domain to create a verification code for\",\n            \"example\": \"example.com\"\n          },\n          \"verificationCode\": {\n            \"type\": \"string\",\n            \"description\": \"The verification code\"\n          }\n        }\n      },\n      \"FreestyleDeployWebConfiguration\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"domains\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"entrypoint\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"envVars\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"nodeModules\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"timeout\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"The amount of milliseconds after with no traffic we kill your server. For rate limiting purposes we count any started server as active for the 5 seconds after the last request.\",\n            \"minimum\": 0\n          },\n          \"serverStartCheck\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ]\n          },\n          \"networkPermissions\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FreestyleNetworkPermission\"\n            }\n          },\n          \"egress\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/EgressConfig\",\n                \"description\": \"Egress control configuration for outbound requests (domains, IPs, transformations)\"\n              }\n            ]\n          },\n          \"build\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentBuildOptions\"\n              }\n            ]\n          },\n          \"await\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ]\n          },\n          \"staticDir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Directory containing static files to be served directly (e.g., \\\".next/static\\\", \\\"_next/static\\\").\\nFiles are served at the URL path specified by static_path_prefix (defaults to root \\\"/\\\").\",\n            \"example\": \".next/static\"\n          },\n          \"staticPathPrefix\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"URL path prefix where static files are served (e.g., \\\"/_next/static\\\"). Defaults to \\\"/\\\" (root).\\nWhen set, only requests matching this prefix will be served from static_dir.\",\n            \"example\": \"/_next/static\"\n          },\n          \"publicDir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Directory containing public files to be served at the root of the domain (e.g., \\\"public\\\").\\nThese files are served without any path prefix - a file at public/favicon.ico is served at /favicon.ico.\",\n            \"example\": \"public\"\n          },\n          \"prerenderDir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Directory containing prerendered HTML files (e.g., \\\".next/standalone/.next/server/app\\\" for Next.js).\\nFiles are served as: ${prerender_dir}/${path}.html or ${prerender_dir}/index.html for root.\",\n            \"example\": \".next/standalone/.next/server/app\"\n          },\n          \"staticOnly\": {\n            \"type\": \"boolean\",\n            \"description\": \"Set to true for static-only deployments (no dynamic server/entrypoint required)\"\n          },\n          \"redirects\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/RedirectConfig\"\n            },\n            \"description\": \"Redirects (permanent or temporary)\"\n          },\n          \"rewrites\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/RewriteConfig\"\n            },\n            \"description\": \"Rewrites (internal URL rewrites with capture groups)\"\n          },\n          \"dynamic\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DynamicConfig\"\n            },\n            \"description\": \"Dynamic routes that should be handled by the worker\"\n          },\n          \"headers\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/HeaderConfig\"\n            },\n            \"description\": \"Custom headers for matching paths\"\n          },\n          \"cleanUrls\": {\n            \"type\": \"boolean\",\n            \"description\": \"When true, all HTML files will have their extension removed. Visiting a path with .html will redirect to extensionless path (308).\\nFor example, a static file named about.html will be served when visiting /about. Visiting /about.html will redirect to /about.\"\n          },\n          \"trailingSlash\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"When false, visiting a path with a trailing slash will redirect (308) to path without trailing slash.\\nWhen true, opposite behavior occurs. When None (default), no automatic redirects based on trailing slash.\"\n          },\n          \"experimental\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/FreestyleDeployWebExperimentalConfiguration\",\n                \"description\": \"Experimental feature flags. Avoid relying on these for long-term API stability.\"\n              }\n            ]\n          }\n        }\n      },\n      \"FreestyleDeployWebErrorResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"FreestyleDeployWebExperimentalConfiguration\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"nextjsOptimization\": {\n            \"type\": \"boolean\"\n          }\n        }\n      },\n      \"FreestyleDeployWebPayload\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"files\"\n        ],\n        \"properties\": {\n          \"files\": {\n            \"type\": \"object\",\n            \"description\": \"The files to deploy, a map of file paths to file contents, e.g. { \\\\\\\"index.js\\\\\\\": {\\\\\\\"content\\\\\\\": \\\\\\\"your main\\\\\\\", \\\\\\\"encoding\\\\\\\": \\\\\\\"utf-8\\\\\\\"}, \\\\\\\"file2.js\\\\\\\": {\\\\\\\"content\\\\\\\": \\\\\\\"your helper\\\\\\\" } }\\n\\n**Do not include node modules in this bundle, they will not work**. Instead, includes a package-lock.json, bun.lockb, pnpm-lock.yaml, or yarn.lock, the node modules for the project will be installed from that lock file, or use the node_modules field in the configuration to specify the node modules to install.\",\n            \"additionalProperties\": {\n              \"$ref\": \"#/components/schemas/FreestyleFile\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            },\n            \"example\": {\n              \"index.js\": {\n                \"content\": \"import http from 'node:http';\\\\n// import { resolver } from './file2.js';\\\\n\\\\nconsole.log('starting server');\\\\n\\\\nconst server = http.createServer(async(req, res) => {\\\\n  // wait 5 seconds before responding\\\\n  // await new Promise((resolve) => setTimeout(resolve, 5000));\\\\n  res.writeHead(200, { 'Content-Type': 'text/plain' });\\\\n  res.end('Welcome to New York its been waiting for you');\\\\n});\\\\n\\\\nserver.listen(3000, () => {\\\\n  console.log('Server is running at http://localhost:3000');\\\\n});\"\n              }\n            }\n          },\n          \"config\": {\n            \"$ref\": \"#/components/schemas/FreestyleDeployWebConfiguration\"\n          }\n        }\n      },\n      \"FreestyleDeployWebPayloadV2\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"source\",\n          \"config\"\n        ],\n        \"properties\": {\n          \"source\": {\n            \"$ref\": \"#/components/schemas/DeploymentSource\"\n          },\n          \"config\": {\n            \"$ref\": \"#/components/schemas/FreestyleDeployWebConfiguration\"\n          }\n        }\n      },\n      \"FreestyleDeployWebSuccessResponseV2\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"deploymentId\",\n              \"projectId\"\n            ],\n            \"properties\": {\n              \"deploymentId\": {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              },\n              \"projectId\": {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              },\n              \"domains\": {\n                \"type\": [\n                  \"array\",\n                  \"null\"\n                ],\n                \"items\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"entrypoint\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ],\n                \"description\": \"The entrypoint file for the website. If not specified we try to automatically detect it.\\nFor static-only deployments (static: true), this will be None.\"\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"deploymentId\"\n            ],\n            \"properties\": {\n              \"deploymentId\": {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              }\n            }\n          }\n        ]\n      },\n      \"FreestyleDomainVerificationRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"domain\"\n        ],\n        \"properties\": {\n          \"domain\": {\n            \"type\": \"string\",\n            \"description\": \"The domain to create a verification code for\",\n            \"example\": \"example.com\"\n          }\n        }\n      },\n      \"FreestyleExecuteScriptParams\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"script\"\n        ],\n        \"properties\": {\n          \"script\": {\n            \"type\": \"string\",\n            \"description\": \"The JavaScript or TypeScript script to execute\",\n            \"example\": \"export default () => {\\n  // get the value of the factorials of the numbers from 1 to 10 combined\\n  const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\\n\\n  function factorial(n) {\\n    if (n === 0) {\\n      return 1;\\n    }\\n    return n * factorial(n - 1);\\n  }\\n\\n  const b = a.map(factorial);\\n\\n  return b.reduce((a, b) => a + b);\\n};\\n\"\n          },\n          \"executionId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"uuid\",\n            \"description\": \"Optional execution ID for callers that need deterministic run correlation.\"\n          },\n          \"config\": {\n            \"$ref\": \"#/components/schemas/FreestyleExecuteScriptParamsConfiguration\"\n          }\n        }\n      },\n      \"FreestyleExecuteScriptParamsConfiguration\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"envVars\": {\n            \"type\": \"object\",\n            \"description\": \"The environment variables to set for the script\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            },\n            \"example\": {\n              \"RESEND_API_KEY\": \"re_123456789\"\n            }\n          },\n          \"nodeModules\": {\n            \"type\": \"object\",\n            \"description\": \"The node modules to install for the script\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            },\n            \"example\": {\n              \"resend\": \"4.0.1\"\n            }\n          },\n          \"inferNodeModules\": {\n            \"type\": \"boolean\",\n            \"description\": \"If true, Freestyle will best-effort infer npm packages from script imports.\",\n            \"default\": false\n          },\n          \"tags\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Tags for you to organize your scripts, useful for tracking what you're running\",\n            \"example\": [\n              \"email\"\n            ],\n            \"default\": []\n          },\n          \"timeout\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"The script timeout\",\n            \"default\": null,\n            \"minimum\": 0\n          },\n          \"peerDependencyResolution\": {\n            \"type\": \"boolean\",\n            \"description\": \"If false, we'll not resolve peer dependencies for the packages given, this can speed up execute performance, but will break packages with peers unless the peers are manually specified.\",\n            \"default\": true\n          },\n          \"networkPermissions\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FreestyleNetworkPermission\"\n            },\n            \"default\": null\n          },\n          \"customHeaders\": {\n            \"type\": \"object\",\n            \"description\": \"These headers will be added to every fetch request made through the script\",\n            \"default\": {},\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"proxy\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Proxy all outgoing requests through this URL\",\n            \"default\": null,\n            \"example\": \"https://aproxyyouown.com\"\n          },\n          \"egress\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/EgressConfig\",\n                \"description\": \"Egress control configuration for outbound requests (domains, IPs, transformations)\"\n              }\n            ],\n            \"default\": null\n          },\n          \"zeroRetention\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"If true, Freestyle will not retain the code, any logs, environment variables, or results from this execution.\",\n            \"default\": null,\n            \"example\": false\n          }\n        }\n      },\n      \"FreestyleExecuteScriptResultSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"result\",\n          \"logs\"\n        ],\n        \"properties\": {\n          \"result\": {\n            \"description\": \"The return value of the default export of the script\"\n          },\n          \"logs\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FreestyleJavaScriptLog\"\n            }\n          }\n        }\n      },\n      \"FreestyleFile\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"content\"\n        ],\n        \"properties\": {\n          \"content\": {\n            \"type\": \"string\",\n            \"description\": \"The content of the file\"\n          },\n          \"encoding\": {\n            \"type\": \"string\",\n            \"description\": \"The encoding of the file. Either **utf-8** or **base64**\"\n          },\n          \"executable\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether the file should be marked executable after being written\"\n          }\n        }\n      },\n      \"FreestyleGetLogsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"logs\"\n        ],\n        \"properties\": {\n          \"logs\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FreestyleLogResponseObject\"\n            }\n          },\n          \"nextPageToken\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"FreestyleIdentity\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"managed\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"managed\": {\n            \"type\": \"boolean\"\n          }\n        }\n      },\n      \"FreestyleJavaScriptLog\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\",\n          \"type\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\",\n            \"description\": \"The log message\",\n            \"example\": \"I'm a log!\"\n          },\n          \"type\": {\n            \"type\": \"string\",\n            \"description\": \"The log level\",\n            \"example\": \"log\"\n          }\n        }\n      },\n      \"FreestyleLogResponseObject\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\",\n          \"timestamp\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          },\n          \"timestamp\": {\n            \"type\": \"string\"\n          },\n          \"source\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"resourceType\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"origin\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"resourceId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"instanceId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmInstanceId\"\n              }\n            ]\n          },\n          \"level\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"vmService\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"buildId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/BuildId\"\n              }\n            ]\n          }\n        }\n      },\n      \"FreestyleNetworkPermission\": {\n        \"oneOf\": [\n          {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/NetworkPermissionData\"\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"action\"\n                ],\n                \"properties\": {\n                  \"action\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"allow\"\n                    ]\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/NetworkPermissionData\"\n              },\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"action\"\n                ],\n                \"properties\": {\n                  \"action\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"deny\"\n                    ]\n                  }\n                }\n              }\n            ]\n          }\n        ]\n      },\n      \"FreestyleSandboxDomainMapping\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"domain\",\n          \"ownershipId\",\n          \"createdAt\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"domain\": {\n            \"type\": \"string\"\n          },\n          \"deploymentId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              }\n            ]\n          },\n          \"vmId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"vmPort\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\"\n          },\n          \"ownershipId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"unmappedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"FreestyleVerifyDomainRequest\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"domain\"\n            ],\n            \"properties\": {\n              \"domain\": {\n                \"type\": \"string\",\n                \"example\": \"example.com\"\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"id\"\n            ],\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\",\n                \"format\": \"uuid\",\n                \"example\": \"1234-5678-9012-3456\"\n              }\n            }\n          }\n        ],\n        \"description\": \"Verify a domain verification request, can either be done for a domain, or for a specific request\"\n      },\n      \"GetDefaultBranchResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"defaultBranch\"\n        ],\n        \"properties\": {\n          \"defaultBranch\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"GetScheduleResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"schedule\"\n        ],\n        \"properties\": {\n          \"schedule\": {\n            \"$ref\": \"#/components/schemas/Schedule\"\n          }\n        }\n      },\n      \"GetVisibilityResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"visibility\"\n        ],\n        \"properties\": {\n          \"visibility\": {\n            \"$ref\": \"#/components/schemas/Visibility\"\n          }\n        }\n      },\n      \"GetVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"recreate\",\n          \"state\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"$ref\": \"#/components/schemas/VmId\"\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"recreate\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether this VM can be recreated after deletion.\"\n          },\n          \"vmInstanceId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmInstanceId\",\n                \"description\": \"Unique ID for the current VM run (new ID generated on each start/resume)\"\n              }\n            ]\n          },\n          \"lastNetworkActivity\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"state\": {\n            \"$ref\": \"#/components/schemas/VMState\"\n          },\n          \"cpuTimeSeconds\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"buildId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/BuildId\",\n                \"description\": \"Build that produced this VM, if it was created via a build saga.\"\n              }\n            ]\n          }\n        }\n      },\n      \"GitConfig\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"user\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/GitUser\"\n              }\n            ]\n          }\n        }\n      },\n      \"GitContents\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"title\": \"File\",\n            \"required\": [\n              \"name\",\n              \"path\",\n              \"sha\",\n              \"size\",\n              \"content\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"path\": {\n                \"type\": \"string\"\n              },\n              \"sha\": {\n                \"type\": \"string\",\n                \"description\": \"The hash / object ID of the file.\"\n              },\n              \"size\": {\n                \"type\": \"integer\",\n                \"format\": \"int64\",\n                \"minimum\": 0\n              },\n              \"content\": {\n                \"type\": \"string\",\n                \"description\": \"Base64-encoded content.\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"file\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Directory\",\n            \"required\": [\n              \"name\",\n              \"path\",\n              \"sha\",\n              \"entries\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"path\": {\n                \"type\": \"string\"\n              },\n              \"sha\": {\n                \"type\": \"string\",\n                \"description\": \"The hash / object ID of the directory.\"\n              },\n              \"entries\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/GitContentsDirEntryItem\"\n                }\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"dir\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"GitContentsDirEntryItem\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"title\": \"File Entry\",\n            \"required\": [\n              \"name\",\n              \"path\",\n              \"sha\",\n              \"size\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"path\": {\n                \"type\": \"string\"\n              },\n              \"sha\": {\n                \"type\": \"string\",\n                \"description\": \"The hash / object ID of the file.\"\n              },\n              \"size\": {\n                \"type\": \"integer\",\n                \"format\": \"int64\",\n                \"minimum\": 0\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"file\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Directory Entry\",\n            \"description\": \"Directory\",\n            \"required\": [\n              \"name\",\n              \"path\",\n              \"sha\",\n              \"entries\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"path\": {\n                \"type\": \"string\"\n              },\n              \"sha\": {\n                \"type\": \"string\",\n                \"description\": \"The hash / object ID of the directory.\"\n              },\n              \"entries\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"oneOf\": [\n                    {\n                      \"type\": \"object\",\n                      \"title\": \"File Entry\"\n                    },\n                    {\n                      \"type\": \"object\",\n                      \"title\": \"Dir Entry (recursive)\"\n                    }\n                  ]\n                }\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"dir\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"GitOptions\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"config\"\n        ],\n        \"properties\": {\n          \"config\": {\n            \"$ref\": \"#/components/schemas/GitConfig\"\n          },\n          \"repos\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/GitRepositorySpec\"\n            }\n          }\n        }\n      },\n      \"GitReference\": {\n        \"type\": \"object\",\n        \"description\": \"A reference to a Git object\",\n        \"required\": [\n          \"name\",\n          \"sha\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the ref (e.g., \\\"refs/heads/main\\\" or \\\"refs/tags/v1.0.0\\\")\"\n          },\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The SHA-1 hash of the Git object this reference points to\"\n          }\n        }\n      },\n      \"GitRepositorySpec\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"repo\",\n          \"path\"\n        ],\n        \"properties\": {\n          \"repo\": {\n            \"type\": \"string\",\n            \"description\": \"url or id of the git repository\"\n          },\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"path to place the repo on\"\n          },\n          \"rev\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"optional rev (branch, tag, commit)\"\n          }\n        }\n      },\n      \"GitRepositoryTrigger\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"repositoryId\",\n          \"trigger\",\n          \"action\",\n          \"managed\",\n          \"id\",\n          \"createdAt\"\n        ],\n        \"properties\": {\n          \"repositoryId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"trigger\": {\n            \"oneOf\": [\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"event\"\n                ],\n                \"properties\": {\n                  \"branches\": {\n                    \"type\": [\n                      \"array\",\n                      \"null\"\n                    ],\n                    \"items\": {\n                      \"type\": \"string\"\n                    }\n                  },\n                  \"globs\": {\n                    \"type\": [\n                      \"array\",\n                      \"null\"\n                    ],\n                    \"items\": {\n                      \"type\": \"string\"\n                    }\n                  },\n                  \"event\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"push\"\n                    ]\n                  }\n                }\n              }\n            ]\n          },\n          \"action\": {\n            \"oneOf\": [\n              {\n                \"type\": \"object\",\n                \"required\": [\n                  \"endpoint\",\n                  \"action\"\n                ],\n                \"properties\": {\n                  \"endpoint\": {\n                    \"type\": \"string\"\n                  },\n                  \"action\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"webhook\"\n                    ]\n                  }\n                }\n              }\n            ]\n          },\n          \"managed\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"GitTrigger\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"event\"\n            ],\n            \"properties\": {\n              \"branches\": {\n                \"type\": [\n                  \"array\",\n                  \"null\"\n                ],\n                \"items\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"globs\": {\n                \"type\": [\n                  \"array\",\n                  \"null\"\n                ],\n                \"items\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"event\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"push\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"GitTriggerAction\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"endpoint\",\n              \"action\"\n            ],\n            \"properties\": {\n              \"endpoint\": {\n                \"type\": \"string\"\n              },\n              \"action\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"webhook\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"GitUser\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"email\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"signingkey\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"GithubRepoSyncConfig\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"freestyleRepoId\",\n          \"accountId\",\n          \"installationId\",\n          \"githubRepoId\",\n          \"githubRepoName\",\n          \"createdAt\"\n        ],\n        \"properties\": {\n          \"freestyleRepoId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"installationId\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"githubRepoId\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"githubRepoName\": {\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"GithubSyncConfigResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"githubRepoName\"\n        ],\n        \"properties\": {\n          \"githubRepoName\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"GrantGitPermissionRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"permission\"\n        ],\n        \"properties\": {\n          \"permission\": {\n            \"$ref\": \"#/components/schemas/AccessLevel\"\n          }\n        }\n      },\n      \"GrantVmPermissionRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"allowedUsers\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"List of allowed Linux users. If null, identity can SSH as any user.\\nIf specified, identity can only SSH as users in this list.\"\n          }\n        }\n      },\n      \"HeaderConfig\": {\n        \"type\": \"object\",\n        \"description\": \"Header configuration for setting custom headers on matching paths\",\n        \"required\": [\n          \"source\",\n          \"headers\"\n        ],\n        \"properties\": {\n          \"source\": {\n            \"type\": \"string\",\n            \"description\": \"Source pattern (regex pattern)\"\n          },\n          \"headers\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/HeaderKeyValue\"\n            },\n            \"description\": \"Headers to set (array of key-value pairs)\"\n          }\n        }\n      },\n      \"HeaderKeyValue\": {\n        \"type\": \"object\",\n        \"description\": \"Key-value pair for headers\",\n        \"required\": [\n          \"key\",\n          \"value\"\n        ],\n        \"properties\": {\n          \"key\": {\n            \"type\": \"string\",\n            \"description\": \"Header name\"\n          },\n          \"value\": {\n            \"type\": \"string\",\n            \"description\": \"Header value\"\n          }\n        }\n      },\n      \"InternalServerError\": {\n        \"type\": \"string\"\n      },\n      \"JavascriptLog\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"message\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"message\": {\n                \"type\": \"string\"\n              },\n              \"callstack\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"log\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"message\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"message\": {\n                \"type\": \"string\"\n              },\n              \"callstack\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"error\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"JournaldLogItem\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"message\",\n          \"timestamp\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          },\n          \"timestamp\": {\n            \"type\": \"string\"\n          },\n          \"priority\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"unit\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"JournaldLogsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"logs\"\n        ],\n        \"properties\": {\n          \"logs\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/JournaldLogItem\"\n            }\n          }\n        }\n      },\n      \"KillVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"$ref\": \"#/components/schemas/VmId\"\n          }\n        }\n      },\n      \"LineMatch\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"lineNumber\",\n          \"line\",\n          \"startColumn\",\n          \"endColumn\",\n          \"contextBefore\",\n          \"contextAfter\"\n        ],\n        \"properties\": {\n          \"lineNumber\": {\n            \"type\": \"integer\",\n            \"description\": \"1-based line number of the match.\",\n            \"minimum\": 0\n          },\n          \"line\": {\n            \"type\": \"string\",\n            \"description\": \"The full text of the matching line.\"\n          },\n          \"startColumn\": {\n            \"type\": \"integer\",\n            \"description\": \"0-based column offset of the first match in the line.\",\n            \"minimum\": 0\n          },\n          \"endColumn\": {\n            \"type\": \"integer\",\n            \"description\": \"0-based column offset of the end of the first match in the line.\",\n            \"minimum\": 0\n          },\n          \"contextBefore\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Context lines before the match.\"\n          },\n          \"contextAfter\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Context lines after the match.\"\n          }\n        }\n      },\n      \"LinuxGroupSpec\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"Unique group name\"\n          },\n          \"gid\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"Optional fixed GID; if None, allocate\",\n            \"minimum\": 0\n          },\n          \"system\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"System group (allocator uses system range)\",\n            \"default\": false\n          }\n        }\n      },\n      \"LinuxUserSpec\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"Unique username\"\n          },\n          \"uid\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"Optional fixed UID; if None, allocate\",\n            \"minimum\": 0\n          },\n          \"gecos\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"GECOS field (descriptive string, e.g., full name)\"\n          },\n          \"groups\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Groups to add user to (all groups use 'm' membership lines)\"\n          },\n          \"home\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Home directory path (optional, defaults to /home/{username} for regular users, / for system users)\"\n          },\n          \"shell\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Login shell (optional, defaults to /bin/bash for regular users, /usr/sbin/nologin for system users)\"\n          },\n          \"system\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"System user (allocator uses system range)\",\n            \"default\": false\n          }\n        }\n      },\n      \"ListBranchesResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"branches\"\n        ],\n        \"properties\": {\n          \"branches\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/BranchInfo\"\n            }\n          }\n        }\n      },\n      \"ListBuildPhasesResponse\": {\n        \"type\": \"object\",\n        \"description\": \"Ordered timeline of phases for a single build.\\n\\nPhases are append-only; consumers wanting the \\\"current phase\\\" pick the\\nlast entry. Empty for a build whose top-level saga short-circuited\\n(e.g. fully-cached chain) before any phase was recorded.\",\n        \"required\": [\n          \"phases\"\n        ],\n        \"properties\": {\n          \"phases\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/BuildPhase\"\n            }\n          }\n        }\n      },\n      \"ListDeploymentsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"entries\",\n          \"total\",\n          \"offset\"\n        ],\n        \"properties\": {\n          \"entries\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DeploymentLogEntry\"\n            }\n          },\n          \"total\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"offset\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ListGitPermissionSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"repositories\"\n        ],\n        \"properties\": {\n          \"repositories\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AccessibleRepository\"\n            }\n          }\n        }\n      },\n      \"ListGitTokensSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"tokens\"\n        ],\n        \"properties\": {\n          \"tokens\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AccessTokenInfo\"\n            }\n          }\n        }\n      },\n      \"ListGitTriggersSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"triggers\"\n        ],\n        \"properties\": {\n          \"triggers\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/GitRepositoryTrigger\"\n            }\n          }\n        }\n      },\n      \"ListIdentitiesSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"identities\",\n          \"offset\",\n          \"total\"\n        ],\n        \"properties\": {\n          \"identities\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FreestyleIdentity\"\n            }\n          },\n          \"offset\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"total\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ListRecordsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"records\"\n        ],\n        \"properties\": {\n          \"records\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DnsRecord\"\n            }\n          }\n        }\n      },\n      \"ListRepositoriesSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"repositories\",\n          \"total\",\n          \"offset\"\n        ],\n        \"properties\": {\n          \"repositories\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/RepositoryMetadata\"\n            }\n          },\n          \"total\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"offset\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ListScheduleExecutionsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"executions\",\n          \"total\",\n          \"offset\",\n          \"limit\"\n        ],\n        \"properties\": {\n          \"executions\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/ExecutionWithAttempts\"\n            }\n          },\n          \"total\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"offset\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"limit\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          }\n        }\n      },\n      \"ListSchedulesResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"schedules\"\n        ],\n        \"properties\": {\n          \"schedules\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/ScheduleWithStats\"\n            }\n          }\n        }\n      },\n      \"ListSnapshotsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"snapshots\",\n          \"totalCount\",\n          \"buildingCount\",\n          \"readyCount\",\n          \"failedCount\",\n          \"cancelledCount\",\n          \"lostCount\",\n          \"deletedCount\"\n        ],\n        \"properties\": {\n          \"snapshots\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SnapshotInfo\"\n            }\n          },\n          \"totalCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"buildingCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"readyCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"failedCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"cancelledCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"lostCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"deletedCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ListTagsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"tags\"\n        ],\n        \"properties\": {\n          \"tags\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/TagObject\"\n            }\n          }\n        }\n      },\n      \"ListVmPermissionsSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"permissions\",\n          \"offset\",\n          \"total\"\n        ],\n        \"properties\": {\n          \"permissions\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/VmPermission\"\n            }\n          },\n          \"offset\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"total\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ListVmsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"vms\",\n          \"totalCount\",\n          \"runningCount\",\n          \"startingCount\",\n          \"suspendedCount\",\n          \"stoppedCount\"\n        ],\n        \"properties\": {\n          \"vms\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/VmInfo\"\n            }\n          },\n          \"totalCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"buildingCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"runningCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"startingCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"suspendingCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"suspendedCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"stoppedCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"lostCount\": {\n            \"type\": \"integer\",\n            \"minimum\": 0\n          },\n          \"userId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"LogEntry\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"line\"\n        ],\n        \"properties\": {\n          \"line\": {\n            \"type\": \"string\"\n          },\n          \"timestamp\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"MaterializedSizing\": {\n        \"type\": \"object\",\n        \"description\": \"Concrete sizing the VM actually boots with — `Option<_>` request fields stay separate so \\\"caller said null\\\" is preserved.\",\n        \"required\": [\n          \"vcpuCount\",\n          \"memSizeMib\",\n          \"rootfsSizeMb\"\n        ],\n        \"properties\": {\n          \"vcpuCount\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"memSizeMib\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"rootfsSizeMb\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"MetricsDataPoint\": {\n        \"type\": \"object\",\n        \"description\": \"A single bucket of execution metrics.\\n\\n`succeeded_count` includes every terminal success. The first-try and retry\\nsuccess counts split that total and sum to `succeeded_count`.\\n`execution_count` is `succeeded_count + failed_count`.\",\n        \"required\": [\n          \"timestamp\",\n          \"executionCount\",\n          \"succeededCount\",\n          \"succeededOnFirstTryCount\",\n          \"succeededOnRetryCount\",\n          \"failedCount\"\n        ],\n        \"properties\": {\n          \"timestamp\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"executionCount\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"succeededCount\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"succeededOnFirstTryCount\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"succeededOnRetryCount\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"failedCount\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"averageLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"averageSuccessLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"averageFailureLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"p50SuccessLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"p90SuccessLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"p99SuccessLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          }\n        }\n      },\n      \"MetricsTimelineResponseBody\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"scheduleId\",\n          \"dataPoints\",\n          \"start\",\n          \"end\"\n        ],\n        \"properties\": {\n          \"scheduleId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"dataPoints\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/MetricsDataPoint\"\n            }\n          },\n          \"start\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"end\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"NetworkPermissionData\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"query\"\n        ],\n        \"properties\": {\n          \"query\": {\n            \"type\": \"string\"\n          },\n          \"behavior\": {\n            \"$ref\": \"#/components/schemas/Behavior\"\n          }\n        }\n      },\n      \"OptimizeVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"message\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"PortConfig\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"port\",\n          \"targetPort\"\n        ],\n        \"properties\": {\n          \"port\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"targetPort\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"PortMapping\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"port\",\n          \"targetPort\"\n        ],\n        \"properties\": {\n          \"port\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"targetPort\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          }\n        }\n      },\n      \"Public_DomainMappingError\": {\n        \"$ref\": \"#/components/schemas/Error_DomainMappingError\",\n        \"description\": \"Public API error wrapper. Mark public APIs with `Public<T>` to ensure private error\\ndetails aren't exposed.\"\n      },\n      \"RedirectConfig\": {\n        \"type\": \"object\",\n        \"description\": \"Redirect configuration for permanent or temporary redirects (Vercel-compatible)\",\n        \"required\": [\n          \"source\",\n          \"destination\"\n        ],\n        \"properties\": {\n          \"source\": {\n            \"type\": \"string\",\n            \"description\": \"Source pattern (can be exact path or regex)\"\n          },\n          \"destination\": {\n            \"type\": \"string\",\n            \"description\": \"Destination path or URL\"\n          },\n          \"statusCode\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"HTTP status code for redirect (301, 302, 307, 308). Takes precedence over `permanent`.\\nIf neither `status_code` nor `permanent` is provided, defaults to 308.\",\n            \"minimum\": 0\n          },\n          \"permanent\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"If true, uses 308 (permanent redirect). If false, uses 307 (temporary redirect).\\nIgnored if `status_code` is explicitly set. Vercel-compatible alternative to `status_code`.\"\n          }\n        }\n      },\n      \"RepairAccepted\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"jobId\",\n          \"repoId\",\n          \"status\"\n        ],\n        \"properties\": {\n          \"jobId\": {\n            \"type\": \"string\"\n          },\n          \"repoId\": {\n            \"type\": \"string\"\n          },\n          \"depth\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"status\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"RepairJobList\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"jobs\"\n        ],\n        \"properties\": {\n          \"jobs\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/RepairJobView\"\n            }\n          }\n        }\n      },\n      \"RepairJobView\": {\n        \"type\": \"object\",\n        \"description\": \"JSON view of a job for the GET endpoint. Status is tagged so the\\n`result` and `error` fields are unambiguous to consumers.\",\n        \"required\": [\n          \"jobId\",\n          \"repoId\",\n          \"status\",\n          \"createdAt\",\n          \"progress\"\n        ],\n        \"properties\": {\n          \"jobId\": {\n            \"type\": \"string\"\n          },\n          \"repoId\": {\n            \"type\": \"string\"\n          },\n          \"accountId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Account this job is charged against for the per-account\\nconcurrency cap. None for admin/internal POSTs that didn't\\nsupply X-Freestyle-User-Id.\"\n          },\n          \"depth\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"status\": {\n            \"type\": \"string\",\n            \"description\": \"One of: pending, running, completed, failed, cancelled.\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\"\n          },\n          \"completedAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"progress\": {\n            \"type\": \"object\",\n            \"description\": \"Live counters from the walk. Updated by the worker every 500\\ncommits and every 10k blob lookups, plus before/after each ref.\\nAlways present; zeros until the walk publishes its first sample.\"\n          },\n          \"result\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/RepairResult\",\n                \"description\": \"Populated when status == \\\"completed\\\".\"\n              }\n            ]\n          },\n          \"error\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Populated when status == \\\"failed\\\".\"\n          },\n          \"verification\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VerificationFailureView\",\n                \"description\": \"Populated when verification failed after a successful rewrite\\nphase. Carries the offending OID and the rewrites that were\\nalready persisted to the repo.\"\n              }\n            ]\n          }\n        }\n      },\n      \"RepairResult\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"refsExamined\",\n          \"rewrites\"\n        ],\n        \"properties\": {\n          \"refsExamined\": {\n            \"type\": \"integer\",\n            \"description\": \"Number of refs walked.\",\n            \"minimum\": 0\n          },\n          \"rewrites\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/RewrittenRef\"\n            },\n            \"description\": \"Refs whose tip was rewritten because their reachable history had\\nmissing objects. Empty for healthy repos.\"\n          }\n        }\n      },\n      \"RepositoryInfoRaw\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"accountId\",\n          \"visibility\",\n          \"defaultBranch\",\n          \"createdAt\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"examples\": [\n              \"my-repo\"\n            ]\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"visibility\": {\n            \"$ref\": \"#/components/schemas/Visibility\"\n          },\n          \"defaultBranch\": {\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      },\n      \"RepositoryMetadata\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"branches\",\n          \"tags\",\n          \"defaultBranch\"\n        ],\n        \"properties\": {\n          \"branches\": {\n            \"type\": \"object\",\n            \"additionalProperties\": {\n              \"$ref\": \"#/components/schemas/BranchDetails\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"tags\": {\n            \"type\": \"object\",\n            \"additionalProperties\": {\n              \"$ref\": \"#/components/schemas/TagDetails\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"defaultBranch\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"RequestId\": {\n        \"type\": \"string\",\n        \"description\": \"Branded request identifier — `ri-<20 lowercase alphanumeric chars>` for newly\\nminted IDs. The wrapped string is otherwise opaque, so legacy UUID-formatted\\nIDs (from in-flight requests during rollout) round-trip unchanged.\"\n      },\n      \"ResizeVmRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"rootfsSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"memSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"vcpuCount\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"ResizeVmResponse\": {\n        \"type\": \"object\"\n      },\n      \"RevokeGitTokenRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"tokenId\"\n        ],\n        \"properties\": {\n          \"tokenId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      },\n      \"RewriteConfig\": {\n        \"type\": \"object\",\n        \"description\": \"Rewrite configuration for URL rewrites (internal, not visible to client)\",\n        \"required\": [\n          \"source\",\n          \"destination\"\n        ],\n        \"properties\": {\n          \"source\": {\n            \"type\": \"string\",\n            \"description\": \"Source pattern (regex pattern)\"\n          },\n          \"destination\": {\n            \"type\": \"string\",\n            \"description\": \"Destination path with optional capture group substitution ($1, $2, etc.)\"\n          }\n        }\n      },\n      \"RewrittenRef\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"originalOid\",\n          \"rewrittenOid\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"Full ref name (e.g. `refs/heads/main`).\"\n          },\n          \"originalOid\": {\n            \"type\": \"string\",\n            \"description\": \"OID the ref pointed at before repair.\"\n          },\n          \"rewrittenOid\": {\n            \"type\": \"string\",\n            \"description\": \"OID the ref now points at after substituting missing objects.\"\n          }\n        }\n      },\n      \"Schedule\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"accountId\",\n          \"cron\",\n          \"timezone\",\n          \"retries\",\n          \"payload\",\n          \"active\",\n          \"createdAt\",\n          \"updatedAt\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"deploymentId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentId\",\n                \"description\": \"The deployment to invoke on each tick. Mutually exclusive with `runConfig`.\"\n              }\n            ]\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"path\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"cron\": {\n            \"type\": \"string\"\n          },\n          \"timezone\": {\n            \"type\": \"string\"\n          },\n          \"retries\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"payload\": {},\n          \"active\": {\n            \"type\": \"boolean\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"runConfig\": {\n            \"description\": \"Serverless run config to execute on each tick. Mutually exclusive with `deploymentId`.\"\n          }\n        }\n      },\n      \"ScheduleSuccessRateResponseBody\": {\n        \"type\": \"object\",\n        \"description\": \"Aggregate success-rate stats over a time window.\\n\\nOnly terminal executions are counted: `total = succeeded + failed`.\\nIn-flight executions (status `queued`, `running`, or `retry`) are excluded.\\n`succeeded` counts a run as successful regardless of how many retries it\\ntook to get there - i.e. retries are included in `succeeded` once the run\\nultimately completes successfully.\",\n        \"required\": [\n          \"total\",\n          \"succeeded\",\n          \"failed\",\n          \"successRate\",\n          \"start\",\n          \"end\"\n        ],\n        \"properties\": {\n          \"total\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"succeeded\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"failed\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"successRate\": {\n            \"type\": \"number\",\n            \"format\": \"double\"\n          },\n          \"start\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"end\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"averageLatencyMs\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          }\n        }\n      },\n      \"ScheduleWithStats\": {\n        \"allOf\": [\n          {\n            \"$ref\": \"#/components/schemas/Schedule\"\n          },\n          {\n            \"type\": \"object\",\n            \"properties\": {\n              \"successRate\": {\n                \"type\": [\n                  \"number\",\n                  \"null\"\n                ],\n                \"format\": \"double\"\n              },\n              \"averageLatencyMs\": {\n                \"type\": [\n                  \"number\",\n                  \"null\"\n                ],\n                \"format\": \"double\"\n              },\n              \"executionCount\": {\n                \"type\": [\n                  \"integer\",\n                  \"null\"\n                ],\n                \"format\": \"int64\"\n              }\n            }\n          }\n        ]\n      },\n      \"SearchResult\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"totalFiles\",\n          \"totalMatches\",\n          \"hasMore\",\n          \"files\"\n        ],\n        \"properties\": {\n          \"totalFiles\": {\n            \"type\": \"integer\",\n            \"description\": \"Total number of files with matches (before pagination).\",\n            \"minimum\": 0\n          },\n          \"totalMatches\": {\n            \"type\": \"integer\",\n            \"description\": \"Total number of individual line matches across all files (before pagination).\",\n            \"minimum\": 0\n          },\n          \"hasMore\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether there are more results beyond the current page.\"\n          },\n          \"files\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FileSearchResult\"\n            },\n            \"description\": \"The matching files with their line matches (paginated).\"\n          }\n        }\n      },\n      \"ServiceIdItem\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SetDefaultBranchRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"defaultBranch\"\n        ],\n        \"properties\": {\n          \"defaultBranch\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SetDefaultBranchResponse\": {\n        \"type\": \"object\"\n      },\n      \"SetVisibilityRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"visibility\"\n        ],\n        \"properties\": {\n          \"visibility\": {\n            \"$ref\": \"#/components/schemas/Visibility\"\n          }\n        }\n      },\n      \"SetVisibilityResponse\": {\n        \"type\": \"object\"\n      },\n      \"Signature\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"date\",\n          \"name\",\n          \"email\"\n        ],\n        \"properties\": {\n          \"date\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"The date marker for this signature\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"email\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SnapshotId\": {\n        \"type\": \"string\",\n        \"description\": \"Branded snapshot ID in the format `sc-<20 lowercase alphanumeric chars>`.\\nUnlike `VmShortId`, this is a plain `String` wrapper with no fixed-size array or padding.\"\n      },\n      \"SnapshotInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"snapshotId\",\n          \"state\",\n          \"createdAt\",\n          \"failed\",\n          \"cancelled\",\n          \"lost\",\n          \"deleted\",\n          \"snapshotPersistence\"\n        ],\n        \"properties\": {\n          \"snapshotId\": {\n            \"$ref\": \"#/components/schemas/SnapshotId\",\n            \"description\": \"The ID of the snapshot\"\n          },\n          \"state\": {\n            \"$ref\": \"#/components/schemas/SnapshotStateTag\",\n            \"description\": \"Lifecycle state. `building` rows are in flight and may have\\nlate-bound fields (sourceVmId, etc) unset.\"\n          },\n          \"sourceVmId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmId\",\n                \"description\": \"Source VM the snapshot was captured from. None while state=building.\"\n              }\n            ]\n          },\n          \"accountId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/AccountId\",\n                \"description\": \"Account ID of the creator\"\n              }\n            ]\n          },\n          \"createdAt\": {\n            \"type\": \"string\",\n            \"description\": \"When the snapshot was created\"\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional name for the snapshot\"\n          },\n          \"failed\": {\n            \"type\": \"boolean\",\n            \"description\": \"`state == failed`. Kept for backward compat; prefer reading `state`.\",\n            \"deprecated\": true\n          },\n          \"cancelled\": {\n            \"type\": \"boolean\",\n            \"description\": \"`state == cancelled`.\"\n          },\n          \"lost\": {\n            \"type\": \"boolean\",\n            \"description\": \"`state == lost`.\"\n          },\n          \"failureReason\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"deleted\": {\n            \"type\": \"boolean\",\n            \"description\": \"Whether the snapshot has been soft-deleted\"\n          },\n          \"snapshotPersistence\": {\n            \"$ref\": \"#/components/schemas/SnapshotPersistence\",\n            \"description\": \"Snapshot persistence strategy\"\n          },\n          \"buildId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/BuildId\",\n                \"description\": \"Build that produced this snapshot, if any.\"\n              }\n            ]\n          },\n          \"templateHash\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Template hash used for cache lookups.\"\n          },\n          \"vcpuCount\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"Number of vCPUs configured at snapshot time\",\n            \"minimum\": 0\n          },\n          \"memSizeMib\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"Memory size in MiB configured at snapshot time\",\n            \"minimum\": 0\n          },\n          \"rootfsSizeMb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Root filesystem size in MB\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"SnapshotLayerId\": {\n        \"type\": \"string\",\n        \"description\": \"Branded snapshot layer ID — always a 16-character alphanumeric lowercase string prefixed with \\\"sl-\\\".\"\n      },\n      \"SnapshotPersistence\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"description\": \"When storage quota is reached, the least recently used snapshots will be\\ndeleted. Higher priority = less likely to be evicted. Range 0-10, default 5.\",\n            \"required\": [\n              \"type\"\n            ],\n            \"properties\": {\n              \"priority\": {\n                \"type\": [\n                  \"integer\",\n                  \"null\"\n                ],\n                \"format\": \"int32\",\n                \"default\": 5,\n                \"maximum\": 10,\n                \"minimum\": 0\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"sticky\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"description\": \"The snapshot will be stored until manually deleted.\",\n            \"required\": [\n              \"type\"\n            ],\n            \"properties\": {\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"persistent\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"SnapshotSpec\": {\n        \"type\": \"object\",\n        \"description\": \"A cacheable snapshot layer. Recursive via `snapshot` — an optional inner\\nlayer that is materialized into a snapshot before this layer builds. The\\nresulting `snapshot_id` becomes the base for this layer. `snapshot`,\\n`snapshot_id`, and `base_image` are mutually exclusive.\",\n        \"properties\": {\n          \"snapshot\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotSpec\",\n                \"description\": \"Inner cacheable layer. Materialized first, its resulting snapshot_id\\nbecomes the base for this layer.\"\n              }\n            ]\n          },\n          \"snapshotId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotId\",\n                \"description\": \"Pre-existing snapshot to base this layer on. Mutually exclusive with\\n`snapshot` and `base_image`.\"\n              }\n            ]\n          },\n          \"baseImage\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/BaseImageSpec\",\n                \"description\": \"Inline Dockerfile content to build and import a custom base image\\nfor this layer. Mutually exclusive with `snapshot` and `snapshot_id`.\"\n              }\n            ]\n          },\n          \"rootfsSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"memSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"vcpuCount\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"workdir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional working directory for the VM. Defaults to '/'.\"\n          },\n          \"idleTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Idle timeout in seconds. If set, the VM will be automatically\\nsuspended after this many seconds of no network activity.\",\n            \"minimum\": 0\n          },\n          \"waitForReadySignal\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ]\n          },\n          \"readySignalTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"ports\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PortConfig\"\n            },\n            \"description\": \"Optional list of ports to expose externally.\"\n          },\n          \"systemd\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SystemdConfig\"\n              }\n            ]\n          },\n          \"users\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LinuxUserSpec\"\n            },\n            \"description\": \"Linux users to create on VM startup.\"\n          },\n          \"groups\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LinuxGroupSpec\"\n            },\n            \"description\": \"Linux groups to create on VM startup.\"\n          },\n          \"additionalFiles\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {\n              \"$ref\": \"#/components/schemas/FreestyleFile\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"git\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/GitOptions\",\n                \"description\": \"Repositories to clone and git options for the VM.\"\n              }\n            ]\n          },\n          \"aptDeps\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"apt packages to install on VM startup.\",\n            \"example\": [\n              \"git\",\n              \"curl\",\n              \"vim\"\n            ]\n          },\n          \"discriminator\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional discriminator to differentiate snapshots with otherwise\\nidentical configurations.\"\n          },\n          \"skipCache\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"When true, bypasses the snapshot cache and always creates a new\\nsnapshot. The new snapshot still stores the template hash, so it\\nbecomes the updated cache entry for future requests that do not set\\nskip_cache.\"\n          }\n        }\n      },\n      \"SnapshotStateTag\": {\n        \"type\": \"string\",\n        \"description\": \"Lifecycle state of a snapshot row.\\n\\n  `Building`  — saga in flight, late-bound fields NULL.\\n  `Ready`     — saga finalized cleanly; usable as a base.\\n  `Failed`    — bytes complete but VM was broken at capture; bookable\\n                for debugging.\\n  `Cancelled` — saga rolled back / dependency failed; no bytes.\\n  `Lost`      — reaper terminated a `building` row after a node\\n                crash; bytes absent or partial.\",\n        \"enum\": [\n          \"building\",\n          \"ready\",\n          \"failed\",\n          \"cancelled\",\n          \"lost\"\n        ]\n      },\n      \"SnapshotVmRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional name/label for the snapshot\"\n          },\n          \"persistence\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotPersistence\",\n                \"description\": \"Persistence strategy for the snapshot. Defaults to Sticky with priority 5.\"\n              }\n            ]\n          }\n        }\n      },\n      \"SnapshotVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"snapshotId\",\n          \"sourceVmId\"\n        ],\n        \"properties\": {\n          \"snapshotId\": {\n            \"$ref\": \"#/components/schemas/SnapshotId\",\n            \"description\": \"The ID of the snapshot\"\n          },\n          \"sourceVmId\": {\n            \"$ref\": \"#/components/schemas/VmId\",\n            \"description\": \"The ID of the source VM\"\n          },\n          \"sourceVmInstanceId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmInstanceId\",\n                \"description\": \"The instance ID of the source VM\"\n              }\n            ]\n          }\n        }\n      },\n      \"StartVmRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"idleTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\"\n          },\n          \"readySignalTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\"\n          },\n          \"waitForReadySignal\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ]\n          },\n          \"activityThresholdBytes\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"StartedVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"domains\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"domains\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"console_url\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"StopVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"vmId\",\n          \"vmInstanceId\"\n        ],\n        \"properties\": {\n          \"vmId\": {\n            \"$ref\": \"#/components/schemas/VmId\"\n          },\n          \"vmInstanceId\": {\n            \"$ref\": \"#/components/schemas/VmInstanceId\"\n          }\n        }\n      },\n      \"SuccessfullyDeletedDomainMapping\": {\n        \"type\": \"object\"\n      },\n      \"SuspendVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"vmInstanceId\",\n          \"snapshotLayerId\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"The ID of the VM that was suspended\"\n          },\n          \"vmInstanceId\": {\n            \"$ref\": \"#/components/schemas/VmInstanceId\",\n            \"description\": \"The ID of the VM instance that was suspended\"\n          },\n          \"snapshotLayerId\": {\n            \"$ref\": \"#/components/schemas/SnapshotLayerId\",\n            \"description\": \"The ID of the snapshot layer created for this VM — if a layer was created\"\n          }\n        }\n      },\n      \"SystemdConfig\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"services\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SystemdUnitSpec\"\n            }\n          },\n          \"patchedServices\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SystemdUnitSpecPatch\"\n            }\n          }\n        }\n      },\n      \"SystemdCreateServiceResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"success\",\n          \"message\",\n          \"serviceName\"\n        ],\n        \"properties\": {\n          \"success\": {\n            \"type\": \"boolean\"\n          },\n          \"message\": {\n            \"type\": \"string\"\n          },\n          \"serviceName\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SystemdDeleteServiceResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"success\",\n          \"message\"\n        ],\n        \"properties\": {\n          \"success\": {\n            \"type\": \"boolean\"\n          },\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SystemdListServicesResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"services\"\n        ],\n        \"properties\": {\n          \"services\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SystemdServiceListItem\"\n            }\n          }\n        }\n      },\n      \"SystemdRestartPolicy\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"policy\"\n        ],\n        \"properties\": {\n          \"policy\": {\n            \"$ref\": \"#/components/schemas/SystemdRestartPolicyKind\",\n            \"description\": \"\\\"no\\\" | \\\"on-failure\\\" | \\\"always\\\" | \\\"on-abnormal\\\"\"\n          },\n          \"restartSec\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"startLimitBurst\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"startLimitIntervalSec\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"SystemdRestartPolicyKind\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"no\",\n          \"on-failure\",\n          \"always\",\n          \"on-abnormal\"\n        ]\n      },\n      \"SystemdServiceListItem\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SystemdServiceStatus\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"activeState\",\n          \"subState\",\n          \"loadState\",\n          \"description\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"activeState\": {\n            \"type\": \"string\"\n          },\n          \"subState\": {\n            \"type\": \"string\"\n          },\n          \"loadState\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"SystemdUnitMode\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"oneshot\",\n          \"service\"\n        ]\n      },\n      \"SystemdUnitSpec\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"mode\",\n          \"exec\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"Unique slug; becomes unit name \\\"<name>.service\\\".\"\n          },\n          \"mode\": {\n            \"$ref\": \"#/components/schemas/SystemdUnitMode\",\n            \"description\": \"\\\"oneshot\\\" (run and exit) or \\\"service\\\" (long-running/healing).\"\n          },\n          \"exec\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Executable to run (can specify multiple commands that run sequentially).\"\n          },\n          \"env\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"Environment variables.\",\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"user\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Linux user to run the service as.\"\n          },\n          \"group\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Linux group to run the service in.\"\n          },\n          \"workdir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Working directory.\"\n          },\n          \"after\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Establishes an ordering dependency. The current unit will start only\\nafter the units listed in After= have started. This is useful for\\nensuring that certain services are up and running before the current\\nservice begins its operation.\"\n          },\n          \"requires\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Establishes a strong dependency. If the required unit fails to\\nstart or stops unexpectedly, the current unit will also be stopped. This\\nensures that a service critical to the functioning of the current unit\\nis running and stable. Units listed in Requires= are activated along\\nwith the current unit. If the required unit is not active, systemd will\\nattempt to start it. This directive signifies a tight coupling between\\nservices, where the current service cannot function without the required\\nservice.\"\n          },\n          \"onFailure\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Units to activate when this unit enters a failed state. This is useful\\nfor triggering recovery actions, notifications, or cleanup services when\\nthe current service fails.\"\n          },\n          \"wantedBy\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Target used when enabling (default: multi-user.target).\",\n            \"default\": \"multi-user.target\"\n          },\n          \"enable\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"Whether to enable this service (calls `systemctl enable <service>`).\\nWhen enabled, the service will start automatically at boot.\",\n            \"default\": true\n          },\n          \"timeoutSec\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Overall start/stop timeout.\",\n            \"minimum\": 0\n          },\n          \"deleteAfterSuccess\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"For oneshot: remove unit on success.\",\n            \"default\": false\n          },\n          \"remainAfterExit\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"For oneshot: remain active after exit (default: true).\\nWhen false, the service can be started again even if it already ran.\",\n            \"default\": true\n          },\n          \"readySignal\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"Use sd_notify; maps to Type=notify.\",\n            \"default\": false\n          },\n          \"watchdogSec\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Enable systemd watchdog (seconds).\",\n            \"minimum\": 0\n          },\n          \"restartPolicy\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SystemdRestartPolicy\",\n                \"description\": \"Restart semantics (service mode).\"\n              }\n            ]\n          }\n        }\n      },\n      \"SystemdUnitSpecPatch\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"Unique slug; becomes unit name \\\"<name>.service\\\".\"\n          },\n          \"mode\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SystemdUnitMode\",\n                \"description\": \"\\\"oneshot\\\" (run and exit) or \\\"service\\\" (long-running/healing).\"\n              }\n            ]\n          },\n          \"exec\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Executable to run (can specify multiple commands that run sequentially).\"\n          },\n          \"env\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"description\": \"Environment variables.\",\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"user\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Linux user to run the service as.\"\n          },\n          \"group\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Linux group to run the service in.\"\n          },\n          \"workdir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Working directory.\"\n          },\n          \"after\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Establishes an ordering dependency. The current unit will start only\\nafter the units listed in After= have started. This is useful for\\nensuring that certain services are up and running before the current\\nservice begins its operation.\"\n          },\n          \"requires\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Establishes a strong dependency. If the required unit fails to\\nstart or stops unexpectedly, the current unit will also be stopped. This\\nensures that a service critical to the functioning of the current unit\\nis running and stable. Units listed in Requires= are activated along\\nwith the current unit. If the required unit is not active, systemd will\\nattempt to start it. This directive signifies a tight coupling between\\nservices, where the current service cannot function without the required\\nservice.\"\n          },\n          \"onFailure\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Units to activate when this unit enters a failed state. This is useful\\nfor triggering recovery actions, notifications, or cleanup services when\\nthe current service fails.\"\n          },\n          \"wantedBy\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Target used when enabling (default: multi-user.target).\"\n          },\n          \"enable\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"Whether to enable this service (calls `systemctl enable <service>`).\\nWhen enabled, the service will start automatically at boot.\"\n          },\n          \"timeoutSec\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Overall start/stop timeout.\",\n            \"minimum\": 0\n          },\n          \"deleteAfterSuccess\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"For oneshot: remove unit on success.\"\n          },\n          \"readySignal\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"Use sd_notify; maps to Type=notify.\"\n          },\n          \"watchdogSec\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Enable systemd watchdog (seconds).\",\n            \"minimum\": 0\n          },\n          \"restartPolicy\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SystemdRestartPolicy\",\n                \"description\": \"Restart semantics (service mode).\"\n              }\n            ]\n          }\n        }\n      },\n      \"TagDetails\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"target\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"target\": {\n            \"type\": \"string\"\n          },\n          \"message\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"TagObject\": {\n        \"type\": \"object\",\n        \"description\": \"Tag object\",\n        \"required\": [\n          \"name\",\n          \"target\",\n          \"sha\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The tag name\"\n          },\n          \"tagger\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/Signature\",\n                \"description\": \"The tagger who created the tag\"\n              }\n            ]\n          },\n          \"message\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"The tag message\"\n          },\n          \"target\": {\n            \"$ref\": \"#/components/schemas/TagTarget\",\n            \"description\": \"The object this tag points to\"\n          },\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The tag's hash ID\"\n          }\n        }\n      },\n      \"TagTarget\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"sha\"\n        ],\n        \"properties\": {\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The target object's hash ID\"\n          }\n        }\n      },\n      \"TerminalListResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"terminals\"\n        ],\n        \"properties\": {\n          \"terminals\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/TerminalSession\"\n            }\n          }\n        }\n      },\n      \"TerminalLogsArrayResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"logs\"\n        ],\n        \"properties\": {\n          \"logs\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LogEntry\"\n            }\n          }\n        }\n      },\n      \"TerminalLogsResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"output\"\n        ],\n        \"properties\": {\n          \"output\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"TerminalSession\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"name\",\n          \"status\"\n        ],\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"status\": {\n            \"type\": \"string\"\n          },\n          \"created\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"TreeEntry\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"title\": \"Blob\",\n            \"required\": [\n              \"path\",\n              \"sha\",\n              \"size\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"path\": {\n                \"type\": \"string\"\n              },\n              \"sha\": {\n                \"type\": \"string\"\n              },\n              \"size\": {\n                \"type\": \"integer\",\n                \"format\": \"int64\",\n                \"minimum\": 0\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"blob\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"title\": \"Tree\",\n            \"required\": [\n              \"path\",\n              \"sha\",\n              \"type\"\n            ],\n            \"properties\": {\n              \"path\": {\n                \"type\": \"string\"\n              },\n              \"sha\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"tree\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"TreeObject\": {\n        \"type\": \"object\",\n        \"description\": \"Tree object\",\n        \"required\": [\n          \"tree\",\n          \"sha\"\n        ],\n        \"properties\": {\n          \"tree\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/TreeEntry\"\n            },\n            \"description\": \"The tree's entries\"\n          },\n          \"sha\": {\n            \"type\": \"string\",\n            \"description\": \"The tree's hash ID\"\n          }\n        }\n      },\n      \"UpdateAllowedUsersRequestBody\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"allowedUsers\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"List of allowed Linux users. If null, identity can SSH as any user.\\nIf specified, identity can only SSH as users in this list.\"\n          }\n        }\n      },\n      \"UpdateGitPermissionRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"permission\"\n        ],\n        \"properties\": {\n          \"permission\": {\n            \"$ref\": \"#/components/schemas/AccessLevel\"\n          }\n        }\n      },\n      \"UpdateScheduleRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"deploymentId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/DeploymentId\"\n              }\n            ]\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"active\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ]\n          },\n          \"path\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"cron\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"timezone\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"retries\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\"\n          },\n          \"payload\": {},\n          \"run\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/CronRunConfig\",\n                \"description\": \"Update the serverless run config. Set to null to clear (requires a deploymentId to be set separately).\"\n              }\n            ]\n          }\n        }\n      },\n      \"UpdateScheduleResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"success\"\n        ],\n        \"properties\": {\n          \"success\": {\n            \"type\": \"boolean\"\n          }\n        }\n      },\n      \"UpdateSnapshotRequest\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          }\n        }\n      },\n      \"UpdateSnapshotResponses\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"snapshot_id\"\n            ],\n            \"properties\": {\n              \"snapshot_id\": {\n                \"$ref\": \"#/components/schemas/SnapshotId\"\n              },\n              \"name\": {\n                \"type\": [\n                  \"string\",\n                  \"null\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"VMState\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"building\",\n          \"starting\",\n          \"running\",\n          \"suspending\",\n          \"suspended\",\n          \"stopped\",\n          \"lost\"\n        ]\n      },\n      \"VerificationFailureView\": {\n        \"type\": \"object\",\n        \"description\": \"Failure shape for the post-rewrite verification phase. Surfaced via\\n`RepairJobStatus::Failed` when the dry-run pack build fails, so the\\noperator can see which OID is still missing without grepping logs.\",\n        \"required\": [\n          \"message\",\n          \"rewrites\",\n          \"refsExamined\"\n        ],\n        \"properties\": {\n          \"message\": {\n            \"type\": \"string\"\n          },\n          \"oid\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"40-char hex OID extracted from the libgit2 error, if any.\"\n          },\n          \"refName\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Ref the verification was processing when it failed, if any.\"\n          },\n          \"rewrites\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/RewrittenRef\"\n            },\n            \"description\": \"Snapshot of refs that *were* successfully rewritten before\\nverification failed. Operators want this — the rewrites are\\nalready persisted to the repo, so seeing what changed even on a\\nfailed run is load-bearing for follow-up debugging.\"\n          },\n          \"refsExamined\": {\n            \"type\": \"integer\",\n            \"description\": \"Number of refs the rewrite phase walked before verification ran.\",\n            \"minimum\": 0\n          }\n        }\n      },\n      \"VerifyDomainSuccess\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"domain\"\n        ],\n        \"properties\": {\n          \"domain\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"Visibility\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"public\",\n          \"private\"\n        ]\n      },\n      \"VmDeleteEvent\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"OnStop\",\n          \"OnSuspend\"\n        ]\n      },\n      \"VmDomainConfig\": {\n        \"type\": \"object\",\n        \"description\": \"Domain configuration for a VM, specifying the domain and optional target port\",\n        \"required\": [\n          \"domain\"\n        ],\n        \"properties\": {\n          \"domain\": {\n            \"type\": \"string\",\n            \"description\": \"The domain name to map to the VM\",\n            \"example\": \"myapp.example.com\"\n          },\n          \"vmPort\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"description\": \"The port on the VM to route traffic to. Defaults to 443 if not specified.\",\n            \"example\": 3000\n          }\n        }\n      },\n      \"VmId\": {\n        \"type\": \"string\",\n        \"description\": \"VM ID — always 20 alphanumeric lowercase characters.\\nNew IDs are fully random. Legacy short IDs are right-padded with '0' on parse.\"\n      },\n      \"VmInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"state\",\n          \"sizing\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"$ref\": \"#/components/schemas/VmId\"\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ]\n          },\n          \"state\": {\n            \"$ref\": \"#/components/schemas/VMState\"\n          },\n          \"metrics\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmMetricsInfo\"\n              }\n            ]\n          },\n          \"createdAt\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"lastNetworkActivity\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"date-time\"\n          },\n          \"cpuTimeSeconds\": {\n            \"type\": [\n              \"number\",\n              \"null\"\n            ],\n            \"format\": \"double\"\n          },\n          \"persistence\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmPersistence\"\n              }\n            ]\n          },\n          \"snapshotId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotId\",\n                \"description\": \"The snapshot this VM was created from, if any.\"\n              }\n            ]\n          },\n          \"deleted\": {\n            \"type\": \"boolean\"\n          },\n          \"createdDeclaratively\": {\n            \"type\": \"boolean\"\n          },\n          \"buildId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/BuildId\",\n                \"description\": \"Build that produced this VM, if it was created via a build saga.\"\n              }\n            ]\n          },\n          \"sizing\": {\n            \"$ref\": \"#/components/schemas/MaterializedSizing\",\n            \"description\": \"Materialized sizing the VM will boot with (falls back to platform defaults).\"\n          }\n        }\n      },\n      \"VmInstanceId\": {\n        \"type\": \"string\"\n      },\n      \"VmMetricsInfo\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"wallTimeSeconds\",\n          \"billingDay\",\n          \"isActiveToday\"\n        ],\n        \"properties\": {\n          \"wallTimeSeconds\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"billingDay\": {\n            \"type\": \"string\"\n          },\n          \"isActiveToday\": {\n            \"type\": \"boolean\"\n          }\n        }\n      },\n      \"VmPermission\": {\n        \"type\": \"object\",\n        \"description\": \"Full VM permission record\",\n        \"required\": [\n          \"id\",\n          \"vmId\",\n          \"identityId\",\n          \"grantedAt\",\n          \"grantedBy\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"vmId\": {\n            \"type\": \"string\"\n          },\n          \"identityId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"allowedUsers\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"grantedAt\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"grantedBy\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      },\n      \"VmPersistence\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\",\n            \"description\": \"When your storage quota is reached, the least recently used VMs will be\\ndeleted.\",\n            \"required\": [\n              \"type\"\n            ],\n            \"properties\": {\n              \"priority\": {\n                \"type\": [\n                  \"integer\",\n                  \"null\"\n                ],\n                \"format\": \"int32\",\n                \"description\": \"Priority for eviction when storage quota is reached. Higher values\\nmean the VM is less likely to be evicted. Range is 0-10, default is\\n5.\",\n                \"default\": 5,\n                \"maximum\": 10,\n                \"minimum\": 0\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"sticky\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"description\": \"The VM will be deleted after the idle timeout. It's not guaranteed that\\nthe VM will be deleted immediately.\",\n            \"required\": [\n              \"type\"\n            ],\n            \"properties\": {\n              \"deleteEvent\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"null\"\n                  },\n                  {\n                    \"$ref\": \"#/components/schemas/VmDeleteEvent\"\n                  }\n                ]\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"ephemeral\"\n                ]\n              }\n            }\n          },\n          {\n            \"type\": \"object\",\n            \"required\": [\n              \"type\"\n            ],\n            \"properties\": {\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"persistent\"\n                ]\n              }\n            }\n          }\n        ]\n      },\n      \"VmSpec\": {\n        \"type\": \"object\",\n        \"description\": \"Top-level spec for `POST /v1/vms`. Identifies a reusable unit via `name`\\nand carries the cacheable `snapshot` chain that produces this VM's base.\\n\\n**Deprecated: VM specs are scheduled for removal in a future API version.**\",\n        \"properties\": {\n          \"snapshot\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotSpec\",\n                \"description\": \"Cacheable snapshot chain. The outermost layer becomes this VM's base.\"\n              }\n            ]\n          },\n          \"name\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Name of the spec itself — identifies this spec as a reusable unit,\\nindependent of any VM instance created from it. Distinct from the\\ntop-level VM `name` in `CreateVmRequest`, which names a VM instance.\"\n          }\n        },\n        \"deprecated\": true\n      },\n      \"VmTemplate\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"snapshotId\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SnapshotId\",\n                \"description\": \"Optional snapshot ID to create a VM from. If provided, the new VM will be\\ncreated from the specified snapshot. Cannot be used together with fork_vm_id or docker_image.\"\n              }\n            ]\n          },\n          \"baseImage\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/BaseImageSpec\",\n                \"description\": \"Optional inline Dockerfile content to build and import a custom image from.\\nCannot be used together with snapshot_id.\\nThe image is built inside a temporary sandbox VM (no build context is used).\"\n              }\n            ]\n          },\n          \"rootfsSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"memSizeGb\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"vcpuCount\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int32\",\n            \"minimum\": 0\n          },\n          \"workdir\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional working directory for the VM. If not provided, the default to '/'\"\n          },\n          \"idleTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"description\": \"Idle timeout in seconds. If set, the VM will be automatically suspended\\nafter this many seconds of no network activity. Defaults to 300 seconds\\n(5 minutes) if not provided or the last used timeout for the forked VM.\",\n            \"minimum\": 0\n          },\n          \"waitForReadySignal\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ]\n          },\n          \"readySignalTimeoutSeconds\": {\n            \"type\": [\n              \"integer\",\n              \"null\"\n            ],\n            \"format\": \"int64\",\n            \"minimum\": 0\n          },\n          \"persistence\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/VmPersistence\",\n                \"description\": \"Persistence strategy for the VM. If not provided, defaults to 'sticky'\\nwith priority 5.\"\n              }\n            ]\n          },\n          \"ports\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"object\",\n              \"required\": [\n                \"port\",\n                \"targetPort\"\n              ],\n              \"properties\": {\n                \"port\": {\n                  \"type\": \"integer\",\n                  \"format\": \"int32\",\n                  \"minimum\": 0\n                },\n                \"targetPort\": {\n                  \"type\": \"integer\",\n                  \"format\": \"int32\",\n                  \"minimum\": 0\n                }\n              }\n            },\n            \"description\": \"Optional list of ports to expose externally. If not provided, port 3000\\nwill be exposed on port 443 by default. Pass an empty array to disable\\nexternal ports. Only ports 8081 and 443 can be configured externally for\\nnow. Any target port is allowed.\",\n            \"example\": [\n              {\n                \"port\": 443,\n                \"targetPort\": 3000\n              }\n            ]\n          },\n          \"systemd\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/SystemdConfig\"\n              }\n            ]\n          },\n          \"users\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LinuxUserSpec\"\n            },\n            \"description\": \"Linux users to create on VM startup\"\n          },\n          \"groups\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/LinuxGroupSpec\"\n            },\n            \"description\": \"Linux groups to create on VM startup\"\n          },\n          \"additionalFiles\": {\n            \"type\": [\n              \"object\",\n              \"null\"\n            ],\n            \"additionalProperties\": {\n              \"$ref\": \"#/components/schemas/FreestyleFile\"\n            },\n            \"propertyNames\": {\n              \"type\": \"string\"\n            }\n          },\n          \"gitRepos\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/GitRepositorySpec\"\n            },\n            \"deprecated\": true\n          },\n          \"git\": {\n            \"oneOf\": [\n              {\n                \"type\": \"null\"\n              },\n              {\n                \"$ref\": \"#/components/schemas/GitOptions\",\n                \"description\": \"Repositories to clone and git options for the VM.\"\n              }\n            ]\n          },\n          \"discriminator\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"Optional discriminator to differentiate snapshots with otherwise identical configurations\"\n          },\n          \"aptDeps\": {\n            \"type\": [\n              \"array\",\n              \"null\"\n            ],\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"description\": \"Optional list of apt packages to install when setting up the VM.\\nThese packages will be installed using `apt-get install` on VM startup.\",\n            \"example\": [\n              \"git\",\n              \"curl\",\n              \"vim\"\n            ]\n          },\n          \"skipCache\": {\n            \"type\": [\n              \"boolean\",\n              \"null\"\n            ],\n            \"description\": \"When true, bypasses the snapshot cache and always creates a new snapshot.\\nThe new snapshot still stores the template hash, so it becomes the updated cache entry\\nfor future requests that do not set skip_cache.\"\n          }\n        }\n      },\n      \"WaitVmResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"exitStatus\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"$ref\": \"#/components/schemas/VmId\"\n          },\n          \"exitStatus\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"WhoAmIResponse\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"accountId\"\n        ],\n        \"properties\": {\n          \"accountId\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"identityId\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"format\": \"uuid\"\n          }\n        }\n      },\n      \"WriteFileRequest\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"content\"\n        ],\n        \"properties\": {\n          \"content\": {\n            \"type\": \"string\"\n          },\n          \"encoding\": {\n            \"$ref\": \"#/components/schemas/FileEncoding\"\n          }\n        }\n      },\n      \"WriteFileResponse\": {\n        \"oneOf\": [\n          {\n            \"type\": \"object\"\n          }\n        ]\n      }\n    },\n    \"responses\": {\n      \"ExecuteScriptSuccess\": {\n        \"description\": \"Success result from script execution\",\n        \"content\": {\n          \"application/json\": {\n            \"schema\": {\n              \"type\": \"object\",\n              \"description\": \"Success result from script execution\",\n              \"required\": [\n                \"result\",\n                \"logs\"\n              ],\n              \"properties\": {\n                \"result\": {},\n                \"logs\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/JavascriptLog\"\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"FreestyleExecuteScriptResultSuccess\": {\n        \"description\": \"\",\n        \"content\": {\n          \"application/json\": {\n            \"schema\": {\n              \"type\": \"object\",\n              \"required\": [\n                \"result\",\n                \"logs\"\n              ],\n              \"properties\": {\n                \"result\": {\n                  \"description\": \"The return value of the default export of the script\"\n                },\n                \"logs\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/FreestyleJavaScriptLog\"\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"securitySchemes\": {\n      \"bearerAuth\": {\n        \"type\": \"http\",\n        \"scheme\": \"bearer\"\n      }\n    }\n  },\n  \"tags\": [\n    {\n      \"name\": \"Web\",\n      \"description\": \"APIs for deploying websites. We handle node modules caching, scaling, certificates and the whole end to end process. Send the code using the [deploy](#tag/web/POST/web/v1/deploy) endpoint, and you'll get a full hosted website back. Works with any TypeScript or JavaScript codebase.\"\n    },\n    {\n      \"name\": \"Execute\",\n      \"description\": \"APIs for running code. Send the code using the [execute](#tag/execute/POST/execute/v1/execute) endpoint, and you'll get the output back. Works with any TypeScript or JavaScript code + handles any node modules and environment variables you want.\"\n    },\n    {\n      \"name\": \"Domains\",\n      \"description\": \"APIs for managing domains. This is only relevant when you want to start to deploy to custom domains. \\nPlease read [this guide](https://github.com/freestyle-sh/sandbox_sdks/blob/main/docs/custom_domains.md) to understand how deployments work with custom domains.\"\n    },\n    {\n      \"name\": \"Git\",\n      \"description\": \"APIs for managing git repositories and accessing git objects like commits, trees, blobs, tags, and refs.\"\n    },\n    {\n      \"name\": \"Identity\",\n      \"description\": \"APIs for managing identities and access tokens.\"\n    },\n    {\n      \"name\": \"Observability\",\n      \"description\": \"APIs for observability.\"\n    },\n    {\n      \"name\": \"DNS\",\n      \"description\": \"APIs for managing DNS records.\"\n    },\n    {\n      \"name\": \"Certs\",\n      \"description\": \"APIs for managing SSL certificates.\"\n    },\n    {\n      \"name\": \"VM\",\n      \"description\": \"APIs for managing lightweight virtual machines (VMs) to run your code in isolated environments.\"\n    },\n    {\n      \"name\": \"Deprecated\",\n      \"description\": \"Deprecated APIs that are planned to be removed in future versions.\"\n    }\n  ]\n}"