{
  "swagger": "2.0",
  "info": {
    "title": "Koyeb Rest API",
    "description": "Welcome to the Koyeb API documentation.\n\nThe Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests.\nThe API has predictable resource-oriented URLs, allowing you to request, retrieve and execute actions on resources efficiently.\n\nThe API returns JSON-encoded responses and uses standard HTTP response codes, and verbs.\n\nAll of the functionality available in the Koyeb Control Panel is also available via the API, allowing you to automate repetitive and complex actions as required.\n\nAll production API requests are made to:\n\n- https://app.koyeb.com/<version>\n\nAll data is sent and received as JSON.\n\n## Constructing Requests\n\nRequests are made of three components:\n\n- Base URL: `https://app.koyeb.com`\n- API Version: `v1`\n- Resource path: `apps`\n\nTo construct a proper request, you need to format the URL as follows:\n\n`https://app.koyeb.com/{version}/{resource}`\n\nExample: `https://app.koyeb.com/v1/apps`\n\nThe following code is an example request to retrieve the list of Apps.\n\n```\n$ curl -H 'Authorization: Bearer 1111-1111-1111-1111-1111' https://app.koyeb.com/v1/apps\n{\n  \"apps\": [\n    {\n      \"id\": \"e267e09d-a2ef-4672-95c7-bf88d787a274\",\n      \"name\": \"demo\",\n      \"organization_id\": \"c402bcad-d06d-4fd6-8af2-08b790c0e249\",\n      \"updated_at\": \"2021-04-26T08:28:59.221274Z\",\n      \"created_at\": \"2021-04-26T08:28:59.221274Z\",\n      \"domains\": [\n        {\n          \"name\": \"demo-koyeb.koyeb.app\",\n          \"deployment_group\": \"prod\"\n        }\n      ]\n    },\n    {\n      \"id\": \"e38caea5-5acb-4fec-aa65-81749546b470\",\n      \"name\": \"www\",\n      \"organization_id\": \"c402bcad-d06d-4fd6-8af2-08b790c0e249\",\n      \"updated_at\": \"2021-05-04T08:56:40.557792Z\",\n      \"created_at\": \"2021-05-04T08:56:40.557792Z\",\n      \"domains\": [\n        {\n          \"name\": \"www-koyeb.koyeb.app\",\n          \"deployment_group\": \"prod\"\n        }\n      ]\n    }\n  ],\n  \"limit\": 20,\n  \"offset\": 0,\n  \"count\": 2\n}\n```\n\n# Authentication\n\nThe Koyeb API uses API keys to authenticate requests. You can view and manage your API keys in the Koyeb Control Panel.\n\nYour API keys carry many privileges. Take care to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, Slack, client-side code, and so forth.\n\nTo make an authenticated request, include a bearer-type Authorization header containing your API key, prefixed with `Bearer `:\n\n```\nAuthorization: Bearer <your-api-key>\n```\n\nAll API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.\n\n# Errors\n\nWe use conventional HTTP response codes to indicate the success or failure of an API request.\n\nIn general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g., a required parameter is missing, resource not found), and codes in the 5xx range indicate an error with our servers.\n\n## HTTP Status Code Summary\n\n- `200 OK` - Everything worked as expected.\n- `400 Bad Request` - Often missing a required parameter.\n- `401 Unauthorized` - No valid API key provided.\n- `402 Request Failed` - Parameters were valid, but the request failed.\n- `403 Forbidden` - Insufficient privileges to access the requested resource.\n- `404 Not Found` - The requested item doesn't exist.\n- `50x` Server errors - Something went wrong on the API domain's end.\n\nInput and output data must be valid JSON with the appropriate Content-Type header set.\n\n## Attributes\n\n- code:\n\n  - `invalid_argument`: Occur when your request has invalid parameters.\n  - `unknown_resource`: Occur when the resource doesn't exist.\n  - `authentication_error`: Arise when there is a problem with authentication.\n  - `rate_limit_error`: Too many requests hit the API too quickly.\n  - `authorization_required`: You don't have sufficient right to access the resource.\n  - `api_error`: API errors use in case of a problem with api domain's servers (extremely uncommon).\n\n- message:\n\n  - A human-readable error giving more details about the error\n\n- status:\n\n  - The HTTP code returned by the server.\n\n- fields (Optional):\n\n  - An array of parameters with a human-readable message giving more details about the error.\n\n## Errors responses example\n\nResponse 400 (application/json)\n\n```\n{\n  \"status\": 400,\n  \"code\": \"invalid_argument\",\n  \"message\": \"Invalid argument\",\n  \"fields\": [\n    {\n      \"field\": \"definition.docker.image\",\n      \"description\": \"cannot be blank\"\n    }\n  ]\n}\n```\n\nResponse 401 (application/json)\n\n```\n{\n  \"status\": 401,\n  \"code\": \"authentication_error\",\n  \"message\": \"Request unauthenticated with bearer\"\n}\n```\n\nResponse 403 (application/json)\n\n```\n{\n  \"status\": 403,\n  \"code\": \"authentication_required\",\n  \"message\": \"You don't have the requested permission to access to resource.\"\n}\n```\n\n\nResponse 404 (application/json)\n\n```\n{\n  \"status\": 404,\n  \"code\": \"unknown_resource\",\n  \"message\": \"App not found\"\n}\n```\n\n# Pagination\n\nAll top-level API resources receive a paginated response. For instance, list Apps, list Services, and others share a standard structure, taking two parameters: limit and offset.\n\n**Paginated request**\n\nRequests against paginated endpoints accept two query string arguments:\n\n* *limit*, a positive integer lower or equal to 100 to select the number of items to display.\n* *offset*, an integer to indicate the position to start at.\n\nPaginated endpoints usually also accept filters to search and sort results.\nThese filters are documented along with each endpoint documentation.\n",
    "version": "1.0.0"
  },
  "host": "app.koyeb.com",
  "schemes": [
    "https"
  ],
  "x-tagGroups": [
    {
      "name": "API",
      "tags": [
        "Profile",
        "Sessions",
        "Users",
        "organization",
        "Projects",
        "OrganizationMembers",
        "OrganizationInvitations",
        "OrganizationConfirmations",
        "Subscriptions",
        "Coupons",
        "Credentials",
        "Secrets",
        "activity",
        "Apps",
        "Services",
        "Deployments",
        "Archives",
        "RegionalDeployments",
        "Instances",
        "Domains",
        "PersistentVolumes",
        "Snapshots",
        "Compose",
        "Repositories",
        "Logs",
        "Metrics",
        "Catalog",
        "CatalogRegions",
        "CatalogInstances",
        "Usages",
        "Summary",
        "DockerHelper"
      ]
    }
  ],
  "paths": {
    "/v1/account/activities": {
      "get": {
        "operationId": "GetAccountActivities",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ActivityList"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "activity"
        ]
      }
    },
    "/v1/account/idenfy": {
      "get": {
        "summary": "Begin a session with iDenfy, emit an authToken",
        "operationId": "GetIdenfyToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetIdenfyTokenReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Profile"
        ]
      },
      "post": {
        "summary": "ClearIdenfyVerificationResult marks the current result for idenfy as\nsuperseded",
        "operationId": "ClearIdenfyVerificationResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ClearIdenfyVerificationResultReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClearIdenfyVerificationResultRequest"
            }
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/invite": {
      "post": {
        "summary": "DEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "CreateInvite",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/Empty"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InviteUserRequest"
            }
          }
        ],
        "tags": [
          "invite"
        ]
      }
    },
    "/v1/account/login_method": {
      "get": {
        "summary": "Get the login method for an email address\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "LoginMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginMethodReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/oauth": {
      "get": {
        "summary": "Get OAuth Providers",
        "operationId": "GetOAuthOptions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOAuthOptionsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "action",
            "description": "Which authentication flow is being initiated",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "signin",
              "signup",
              "register"
            ],
            "default": "signin"
          },
          {
            "name": "metadata",
            "description": "A small (limited to 400 characters) string of arbitrary metadata which will\nbe encoded in the state",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      },
      "post": {
        "summary": "Authenticate using OAuth",
        "operationId": "OAuthCallback",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/OAuthCallbackReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OAuthCallbackRequest"
            }
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/organization": {
      "get": {
        "summary": "Get Current Organization",
        "operationId": "GetCurrentOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/organization_invitations": {
      "get": {
        "summary": "List User Organization Invitations\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "ListUserOrganizationInvitations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListUserOrganizationInvitationsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter on organization invitation statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INVALID",
                "PENDING",
                "ACCEPTED",
                "REFUSED",
                "EXPIRED"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/organization_invitations/{id}": {
      "get": {
        "summary": "Get User Organization Invitation\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "GetUserOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetUserOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the organization invitation to get",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/organization_invitations/{id}/accept": {
      "post": {
        "summary": "Accept Organization Invitation\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "AcceptOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/AcceptOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the organization invitation to accept",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/organization_invitations/{id}/decline": {
      "post": {
        "summary": "Decline Organization Invitation\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "DeclineOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeclineOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the organization invitation to decline",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/organizations": {
      "get": {
        "summary": "List User Organizations",
        "description": "List all organizations that the current user is a member of.",
        "operationId": "ListUserOrganizations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListUserOrganizationsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) Define pagination limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) Define pagination offset",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "description": "(Optional) Fuzzy case-insensitive search based on organization name or\norganization id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Only return organizations which status match one in the list",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "WARNING",
                "LOCKED",
                "ACTIVE",
                "DEACTIVATING",
                "DEACTIVATED",
                "DELETING",
                "DELETED"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/profile": {
      "get": {
        "summary": "Get Current User",
        "operationId": "GetCurrentUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      },
      "put": {
        "summary": "Update User",
        "operationId": "UpdateUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      },
      "patch": {
        "summary": "Update User",
        "operationId": "UpdateUser2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/resend_validation": {
      "post": {
        "summary": "Resend Email Verification\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "ResendEmailValidation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResendEmailValidationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ResendEmailValidationRequest"
            }
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/reset_password": {
      "post": {
        "summary": "Reset Password\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "ResetPassword",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResetPasswordReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ResetPasswordRequest"
            }
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/settings": {
      "get": {
        "operationId": "GetUserSettings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetUserSettingsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Profile"
        ]
      },
      "patch": {
        "operationId": "UpdateUserSettings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateUserSettingsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserSettingsRequest"
            }
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/signup": {
      "post": {
        "summary": "Signup\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "Signup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Create new account",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateAccountRequest"
            }
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/update_password": {
      "post": {
        "summary": "Update Password\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "UpdatePassword",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePasswordRequest"
            }
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/account/validate/{id}": {
      "post": {
        "summary": "Validate\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "Validate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/billing/has_unpaid_invoices": {
      "get": {
        "summary": "Experimental: Has unpaid invoices",
        "description": "WARNING: Please don't use the following method.\nKoyeb doesn't guarantee backwards compatible breaking change and reserve\nthe right to completely drop it without notice. USE AT YOUR OWN RISK.",
        "operationId": "HasUnpaidInvoices",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/HasUnpaidInvoicesReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/billing/manage": {
      "get": {
        "operationId": "Manage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ManageReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/billing/next_invoice": {
      "get": {
        "summary": "Experimental: Fetch next invoice",
        "description": "WARNING: Please don't use the following method.\nKoyeb doesn't guarantee backwards compatible breaking change and reserve\nthe right to completely drop it without notice. USE AT YOUR OWN RISK.",
        "operationId": "NextInvoice",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/NextInvoiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/github/installation": {
      "get": {
        "summary": "Fetch Github Installation configuration",
        "operationId": "GetGithubInstallation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetGithubInstallationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "organization"
        ]
      },
      "post": {
        "summary": "Start Github Installation",
        "operationId": "GithubInstallation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GithubInstallationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GithubInstallationRequest"
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations": {
      "post": {
        "summary": "Create Organization",
        "operationId": "CreateOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrganizationRequest"
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}": {
      "get": {
        "summary": "Get Organization",
        "operationId": "GetOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      },
      "delete": {
        "summary": "Delete an Organization",
        "operationId": "DeleteOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      },
      "put": {
        "summary": "Update Organization",
        "operationId": "UpdateOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "organization",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      },
      "patch": {
        "summary": "Update Organization",
        "operationId": "UpdateOrganization2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "organization",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/access_token": {
      "post": {
        "summary": "CreateAccessToken",
        "description": "CreateAccessToken creates a short-lived access token in the scope of the\nspecified organization, provided the user making the request is part of\nsaid organization.\n\nIt's possible to specify a validity for the token, which defaults to 1h\nand must be no more than 24h. The format is `<number>s`, where `<number>`\nis a floating point in seconds (so `123.456789012s` means 123 seconds and\n456789012 nanoseconds). See:\nhttps://protobuf.dev/reference/php/api-docs/Google/Protobuf/Duration.html.",
        "operationId": "CreateAccessToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateAccessTokenReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Organization id for ephemeral credential",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "validity": {
                  "type": "string",
                  "title": "Validity of the credential"
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/deactivate": {
      "post": {
        "summary": "Deactivate an Organization",
        "operationId": "DeactivateOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeactivateOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "skip_confirmation": {
                  "type": "boolean",
                  "description": "if set to true, skip_confirmation will directly start the deactivation\nprocess, without sending a confirmation email beforehand."
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/default_project": {
      "put": {
        "summary": "Update Organization's default project",
        "operationId": "UpdateOrganizationDefaultProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateOrganizationDefaultProjectReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "default_project_id": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/name": {
      "put": {
        "summary": "Update Organization Name",
        "operationId": "UpdateOrganizationName",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateOrganizationNameReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/plan": {
      "post": {
        "summary": "Update Organization plan",
        "operationId": "UpdateOrganizationPlan",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateOrganizationPlanReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "plan": {
                  "$ref": "#/definitions/Plan"
                },
                "coupon_code": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/reactivate": {
      "post": {
        "summary": "Reactivate an Organization",
        "operationId": "ReactivateOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ReactivateOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/signup_qualification": {
      "post": {
        "summary": "Upsert Organization's signup qualification",
        "operationId": "UpsertSignupQualification",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpsertSignupQualificationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "signup_qualification": {
                  "type": "object"
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{id}/switch": {
      "post": {
        "summary": "Switch Organization context\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "SwitchOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/organizations/{organization_id}/budget": {
      "get": {
        "summary": "Get Budget",
        "operationId": "GetBudget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetBudgetReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      },
      "delete": {
        "summary": "Delete Budget",
        "operationId": "DeleteBudget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteBudgetReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      },
      "post": {
        "summary": "Create Budget",
        "operationId": "CreateBudget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateBudgetReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "amount": {
                  "type": "string",
                  "format": "int64",
                  "description": "In cents."
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      },
      "put": {
        "summary": "Update Budget",
        "operationId": "UpdateBudget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateBudgetReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "amount": {
                  "type": "string",
                  "format": "int64",
                  "description": "In cents."
                }
              }
            }
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v1/sso/canny": {
      "post": {
        "operationId": "CannyAuth",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CannyAuthReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CannyAuthRequest"
            }
          }
        ],
        "tags": [
          "sso"
        ]
      }
    },
    "/v1/sso/discourse": {
      "post": {
        "operationId": "DiscourseAuth",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DiscourseAuthReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DiscourseAuthRequest"
            }
          }
        ],
        "tags": [
          "sso"
        ]
      }
    },
    "/v1/unscope_organization_token": {
      "post": {
        "summary": "Unscope Organization Token",
        "description": "UnscopeOrganizationToken removes the organization scope from a token. This\nendpoint is useful when a user wants to remove an organization: by\nunscoping the token first, the user can then delete the organization\nwithout invalidating his token.",
        "operationId": "UnscopeOrganizationToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UnscopeOrganizationTokenRequest"
            }
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "organization"
        ]
      }
    },
    "/v2/account/profile": {
      "put": {
        "summary": "Update User V2",
        "operationId": "UpdateUserV2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      },
      "patch": {
        "summary": "Update User V2",
        "operationId": "UpdateUserV22",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/v1/coupons": {
      "post": {
        "summary": "Redeem Coupon",
        "description": "This API allows to redeem a coupon. Pass the code you received in the body.",
        "operationId": "RedeemCoupon",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RedeemCouponReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RedeemCouponRequest"
            }
          }
        ],
        "tags": [
          "Coupons"
        ]
      }
    },
    "/v1/coupons/{code}": {
      "get": {
        "summary": "Check Coupon",
        "description": "This API allows to check if a given coupon is valid. It is heavily rate-limited.",
        "operationId": "CheckCoupon",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CheckCouponReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Coupons"
        ]
      }
    },
    "/v1/credentials": {
      "get": {
        "summary": "List credentials",
        "operationId": "ListCredentials",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListCredentialsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "description": "(Optional) A filter for type",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "INVALID",
              "USER",
              "ORGANIZATION"
            ],
            "default": "INVALID"
          },
          {
            "name": "name",
            "description": "(Optional) A filter for name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "organization_id",
            "description": "(Optional) Filter for an organization",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "user_id",
            "description": "(Optional) Filter for an user",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Credentials"
        ]
      },
      "post": {
        "summary": "Create credential",
        "operationId": "CreateCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateCredentialReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "credential",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateCredential"
            }
          }
        ],
        "tags": [
          "Credentials"
        ]
      }
    },
    "/v1/credentials/{id}": {
      "get": {
        "summary": "Get credential",
        "operationId": "GetCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetCredentialReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credentials"
        ]
      },
      "delete": {
        "summary": "Delete credential",
        "operationId": "DeleteCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteCredentialReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credentials"
        ]
      },
      "put": {
        "summary": "Update credential",
        "operationId": "UpdateCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateCredentialReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "credential",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Credential"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Credentials"
        ]
      },
      "patch": {
        "summary": "Update credential",
        "operationId": "UpdateCredential2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateCredentialReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "credential",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Credential"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Credentials"
        ]
      }
    },
    "/v1/intercom/profile": {
      "get": {
        "summary": "Get intercom profile",
        "operationId": "GetIntercomProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetIntercomProfileReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Intercom"
        ]
      }
    },
    "/v1/organization_confirmations/{id}": {
      "post": {
        "summary": "Confirm organization action",
        "operationId": "ConfirmOrganizationAction",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ConfirmOrganizationActionReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationConfirmations"
        ]
      }
    },
    "/v1/organization_invitations": {
      "get": {
        "summary": "List Organization Invitations",
        "operationId": "ListOrganizationInvitations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListOrganizationInvitationsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter on organization invitation statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INVALID",
                "PENDING",
                "ACCEPTED",
                "REFUSED",
                "EXPIRED"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "user_id",
            "description": "(Optional) Filter on invitee ID. Will match both invitations sent to\nthat user_id and invitations sent to the email of that user_id.\nThe only valid value is the requester's user_id",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationInvitations"
        ]
      },
      "post": {
        "summary": "Create Organization Invitation",
        "operationId": "CreateOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrganizationInvitationRequest"
            }
          }
        ],
        "tags": [
          "OrganizationInvitations"
        ]
      }
    },
    "/v1/organization_invitations/{id}": {
      "get": {
        "summary": "Get Organization Invitation",
        "operationId": "GetOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the invitation to get",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationInvitations"
        ]
      },
      "delete": {
        "summary": "Delete Organization Invitation",
        "operationId": "DeleteOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the organization invitation to delete",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationInvitations"
        ]
      }
    },
    "/v1/organization_invitations/{id}/resend": {
      "post": {
        "summary": "Resend Organization Invitation",
        "operationId": "ResendOrganizationInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResendOrganizationInvitationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the organization invitation to resend",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "tags": [
          "OrganizationInvitations"
        ]
      }
    },
    "/v1/organization_members": {
      "get": {
        "summary": "List organization members",
        "operationId": "ListOrganizationMembers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListOrganizationMembersReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "organization_id",
            "description": "(Optional) Filter for an organization",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "user_id",
            "description": "(Optional) Filter for an user",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "organization_statuses",
            "description": "(Optional) Filter for organization statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "WARNING",
                "LOCKED",
                "ACTIVE",
                "DEACTIVATING",
                "DEACTIVATED",
                "DELETING",
                "DELETED"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "OrganizationMembers"
        ]
      }
    },
    "/v1/organization_members/{id}": {
      "delete": {
        "summary": "Remove an organization member",
        "operationId": "RemoveOrganizationMember",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RemoveOrganizationMemberReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationMembers"
        ]
      }
    },
    "/v1/payment_methods": {
      "get": {
        "summary": "List payment methods",
        "operationId": "ListPaymentMethods",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListPaymentMethodsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter on payment method statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INVALID",
                "CREATED",
                "AUTHORIZED",
                "DECLINED",
                "CANCELED",
                "EXPIRED",
                "UNCHECKED"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "PaymentMethods"
        ]
      },
      "post": {
        "summary": "Create payment authorization",
        "operationId": "CreatePaymentAuthorization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreatePaymentAuthorizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePaymentAuthorizationRequest"
            }
          }
        ],
        "tags": [
          "PaymentMethods"
        ]
      }
    },
    "/v1/payment_methods/{id}": {
      "get": {
        "summary": "Get payment method",
        "operationId": "GetPaymentMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetPaymentMethodReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PaymentMethods"
        ]
      },
      "delete": {
        "summary": "Delete payment method",
        "operationId": "DeletePaymentMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeletePaymentMethodReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PaymentMethods"
        ]
      }
    },
    "/v1/payment_methods/{id}/confirm": {
      "post": {
        "summary": "Confirm payment authorization",
        "operationId": "ConfirmPaymentAuthorization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ConfirmPaymentAuthorizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "tags": [
          "PaymentMethods"
        ]
      }
    },
    "/v1/projects": {
      "get": {
        "summary": "List projects",
        "operationId": "ListProjects",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListProjectsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "description": "(Optional) Filter by project name",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Projects"
        ]
      },
      "post": {
        "summary": "Create project",
        "operationId": "CreateProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateProjectReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "project",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateProject"
            }
          }
        ],
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/projects/{id}": {
      "get": {
        "summary": "Get project",
        "operationId": "GetProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetProjectReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Projects"
        ]
      },
      "delete": {
        "summary": "Delete project",
        "operationId": "DeleteProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteProjectReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Projects"
        ]
      },
      "put": {
        "summary": "Update project",
        "operationId": "UpdateProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateProjectReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "project",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Project"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Projects"
        ]
      },
      "patch": {
        "summary": "Update project",
        "operationId": "UpdateProject2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateProjectReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "project",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Project"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Projects"
        ]
      }
    },
    "/v1/organizations/{organization_id}/quotas": {
      "get": {
        "operationId": "GetQuotas",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetQuotasReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationQuotas"
        ]
      }
    },
    "/v1/account/login": {
      "post": {
        "summary": "Login user\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "Login",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LoginRequest"
            }
          },
          {
            "name": "seon-fp",
            "description": "Seon Fingerprint",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Sessions"
        ]
      }
    },
    "/v1/account/logout": {
      "delete": {
        "summary": "Logout user\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "Logout",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LogoutReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Sessions"
        ]
      }
    },
    "/v1/account/refresh": {
      "put": {
        "summary": "Refresh token\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "RefreshToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Sessions"
        ]
      }
    },
    "/v1/account/session": {
      "post": {
        "summary": "New session",
        "description": "Creates a new session without an organization for current user.\nNOTE: If you want a session linked to another organization, please use \"Switch organization\".\nDEPRECATED: this has been replaced by WorkOS and will be dropped soon.",
        "operationId": "NewSession",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/LoginReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Sessions"
        ]
      }
    },
    "/v1/subscriptions/{id}": {
      "get": {
        "summary": "Get Subscription",
        "operationId": "GetSubscription",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetSubscriptionReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the instance",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Subscriptions"
        ]
      }
    },
    "/v1/organizations/{organization_id}/summary": {
      "get": {
        "summary": "Get organization usage summary",
        "operationId": "GetOrganizationSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationSummaryReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "description": "Organization ID",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Summary"
        ]
      }
    },
    "/v1/users/{id}": {
      "delete": {
        "summary": "Delete user",
        "operationId": "DeleteUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteUserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the user",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/v2/users/{id}": {
      "delete": {
        "summary": "V2 Delete user",
        "operationId": "DeleteUserV2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteUserReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the user",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/v1/activities": {
      "get": {
        "summary": "List Activities",
        "operationId": "ListActivities",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ActivityList"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on object type",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "activity"
        ]
      }
    },
    "/v1/notifications": {
      "get": {
        "summary": "List Notifications",
        "operationId": "ListNotifications",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/NotificationList"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "mark_read",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "mark_seen",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "unread",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "unseen",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "activity"
        ]
      }
    },
    "/v1/git/branches": {
      "get": {
        "summary": "List Branches",
        "operationId": "ListBranches",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/kgitproxy.ListBranchesReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "repository_id",
            "description": "(Optional) Filter on one repository.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "description": "(Optional) Filter on branch name using a fuzzy search.\nRepository filter is required to enable this filter.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Repositories"
        ]
      }
    },
    "/v1/git/repositories": {
      "get": {
        "summary": "List Repositories",
        "operationId": "ListRepositories",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/kgitproxy.ListRepositoriesReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "description": "(Optional) Filter on repository name using a fuzzy search.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name_search_op",
            "description": "(Optional) Define search operation for repository name. Accept either \"fuzzy\" or \"equality\", use \"fuzzy\" by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Repositories"
        ]
      }
    },
    "/v1/git/sync/organization/{organization_id}": {
      "post": {
        "summary": "Resync Organization",
        "operationId": "ResyncOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/kgitproxy.ResyncOrganizationReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Repositories"
        ]
      }
    },
    "/v1/catalog/datacenters": {
      "get": {
        "summary": "List datacenters",
        "operationId": "ListDatacenters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDatacentersReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "CatalogDatacenters"
        ]
      }
    },
    "/v1/catalog/instances": {
      "get": {
        "summary": "List Instances",
        "operationId": "ListCatalogInstances",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListCatalogInstancesReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "id",
            "description": "(Optional) A filter for instances",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "CatalogInstances"
        ]
      }
    },
    "/v1/catalog/instances/{id}": {
      "get": {
        "summary": "Get Instance",
        "operationId": "GetCatalogInstance",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetCatalogInstanceReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The name of the instance",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "CatalogInstances"
        ]
      }
    },
    "/v1/catalog/regions": {
      "get": {
        "summary": "List Region",
        "operationId": "ListRegions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListRegionsReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "id",
            "description": "(Optional) A filter for regions",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "CatalogRegions"
        ]
      }
    },
    "/v1/catalog/regions/{id}": {
      "get": {
        "summary": "Get Region",
        "operationId": "GetRegion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetRegionReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The name of the region",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "CatalogRegions"
        ]
      }
    },
    "/v1/catalog/usage": {
      "get": {
        "operationId": "ListUsage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListUsageReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "region",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "CatalogInstanceUsage"
        ]
      }
    },
    "/v1/search": {
      "get": {
        "summary": "Search",
        "operationId": "Search",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ksearch.SearchReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "query",
            "description": "(Optional) Search query",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Search"
        ]
      }
    },
    "/v1/app_events": {
      "get": {
        "summary": "List App events",
        "operationId": "ListAppEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListAppEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "app_id",
            "description": "(Optional) Filter on app id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on app event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      }
    },
    "/v1/apps": {
      "get": {
        "summary": "List App",
        "operationId": "ListApps",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListAppsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "description": "(Optional) A filter for name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on app ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Apps"
        ]
      },
      "post": {
        "summary": "Create App",
        "operationId": "CreateApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "app",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateApp"
            }
          }
        ],
        "tags": [
          "Apps"
        ]
      }
    },
    "/v1/apps/{id}": {
      "get": {
        "summary": "Get App",
        "operationId": "GetApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the App",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      },
      "delete": {
        "summary": "Delete App",
        "description": "App deletion is allowed for all status.",
        "operationId": "DeleteApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the App to delete",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      },
      "put": {
        "summary": "Update App",
        "operationId": "UpdateApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the app to update.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "app",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateApp"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      },
      "patch": {
        "summary": "Update App",
        "operationId": "UpdateApp2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the app to update.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "app",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateApp"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      }
    },
    "/v1/apps/{id}/pause": {
      "post": {
        "summary": "Pause App",
        "description": "App pause action is allowed for the following status:\n - starting\n - healthy\n - degraded\n - unhealthy\n - resuming",
        "operationId": "PauseApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PauseAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the app to pause.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      }
    },
    "/v1/apps/{id}/resume": {
      "post": {
        "summary": "Resume App",
        "description": "App resume action is allowed for the following status:\n - paused",
        "operationId": "ResumeApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResumeAppReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the app to resume.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Apps"
        ]
      }
    },
    "/v1/archives": {
      "post": {
        "summary": "Create Archive",
        "description": "Create a signed URL to upload an archive.",
        "operationId": "CreateArchive",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateArchiveReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "archive",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateArchive"
            }
          }
        ],
        "tags": [
          "Archives"
        ]
      }
    },
    "/v1/archives/{id}": {
      "get": {
        "summary": "Get Archive",
        "description": "Get an archive, with a signed URL to download it.",
        "operationId": "GetArchive",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetArchiveReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the archive.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Archives"
        ]
      },
      "delete": {
        "summary": "Delete Archive",
        "description": "Mark an archive for deletion. Its status becomes deleting, and it is\ndeleted along with its file shortly after. Deployments already built from\nit keep running, but nothing can be built from it any more.",
        "operationId": "DeleteArchive",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteArchiveReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the archive.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Archives"
        ]
      }
    },
    "/v1/compose": {
      "post": {
        "summary": "Create resources from compose.",
        "operationId": "Compose",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ComposeReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "compose",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateCompose"
            }
          }
        ],
        "tags": [
          "Compose"
        ]
      }
    },
    "/v1/deployment/{id}/scaling": {
      "get": {
        "summary": "Get Deployment Scaling",
        "operationId": "GetDeploymentScaling",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetDeploymentScalingReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "region",
            "description": "(Optional) Filter on region",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "replica_index",
            "description": "(Optional) Filter on replica_index",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Deployments"
        ]
      }
    },
    "/v1/deployment_events": {
      "get": {
        "summary": "List Deployment events",
        "operationId": "ListDeploymentEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDeploymentEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "deployment_id",
            "description": "(Optional) Filter on deployment id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on deployment event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Deployments"
        ]
      }
    },
    "/v1/deployments": {
      "get": {
        "summary": "List Deployments",
        "operationId": "ListDeployments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDeploymentsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "app_id",
            "description": "(Optional) Filter on application id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "service_id",
            "description": "(Optional) Filter on service id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter on statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "PENDING",
                "PROVISIONING",
                "SCHEDULED",
                "CANCELING",
                "CANCELED",
                "ALLOCATING",
                "STARTING",
                "HEALTHY",
                "DEGRADED",
                "UNHEALTHY",
                "STOPPING",
                "STOPPED",
                "ERRORING",
                "ERROR",
                "STASHED",
                "SLEEPING"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on deployment ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Deployments"
        ]
      }
    },
    "/v1/deployments/{id}": {
      "get": {
        "summary": "Get Deployment",
        "operationId": "GetDeployment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetDeploymentReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the deployment",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Deployments"
        ]
      }
    },
    "/v1/deployments/{id}/cancel": {
      "post": {
        "summary": "Cancel Deployment",
        "description": "Deployment cancellation is allowed for the following status:\n - pending\n - provisioning\n - scheduled",
        "operationId": "CancelDeployment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CancelDeploymentReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the deployment to cancel.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Deployments"
        ]
      }
    },
    "/v1/docker-helper/verify": {
      "get": {
        "summary": "Verify Docker Image",
        "description": "Verify if a docker image is reachable",
        "operationId": "VerifyDockerImage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/VerifyDockerImageReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "image",
            "description": "The full image uri to be verified",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "secret_id",
            "description": "(Optional) the id of the secret to use to authenticate to the registry",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DockerHelper"
        ]
      }
    },
    "/v1/domains": {
      "get": {
        "summary": "List Domains",
        "operationId": "ListDomains",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListDomainsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) A filter for types\n\n - AUTOASSIGNED: Domain like <appName>-<orgName>.koyeb.app",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AUTOASSIGNED",
                "CUSTOM"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "statuses",
            "description": "(Optional) A filter for statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "PENDING",
                "ACTIVE",
                "ERROR",
                "DELETING",
                "DELETED"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "app_ids",
            "description": "(Optional) A filter for apps",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "name",
            "description": "(Optional) A filter for name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on domain ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Domains"
        ]
      },
      "post": {
        "summary": "Create Domain",
        "operationId": "CreateDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateDomainReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "domain",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateDomain"
            }
          }
        ],
        "tags": [
          "Domains"
        ]
      }
    },
    "/v1/domains/{id}": {
      "get": {
        "summary": "Get Domain",
        "operationId": "GetDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetDomainReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Domains"
        ]
      },
      "delete": {
        "summary": "Delete Domain",
        "operationId": "DeleteDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteDomainReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Domains"
        ]
      },
      "patch": {
        "summary": "Update Domain",
        "operationId": "UpdateDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateDomainReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "domain",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateDomain"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "dry_run",
            "description": "If set, run validation and check that the domain is available.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Domains"
        ]
      }
    },
    "/v1/domains/{id}/refresh": {
      "post": {
        "summary": "Refresh Domain Status",
        "operationId": "RefreshDomainStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RefreshDomainStatusReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Domains"
        ]
      }
    },
    "/v1/instance_snapshot_events": {
      "get": {
        "operationId": "ListInstanceSnapshotEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListInstanceSnapshotEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "instance_snapshot_id",
            "description": "(Optional) Filter on instance snapshot id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on instance snapshot event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "InstanceSnapshots"
        ]
      }
    },
    "/v1/instance_snapshots": {
      "get": {
        "operationId": "ListInstanceSnapshots",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListInstanceSnapshotsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INSTANCE_SNAPSHOT_STATUS_INVALID",
                "INSTANCE_SNAPSHOT_STATUS_CREATING",
                "INSTANCE_SNAPSHOT_STATUS_AVAILABLE",
                "INSTANCE_SNAPSHOT_STATUS_ERROR",
                "INSTANCE_SNAPSHOT_STATUS_DELETING",
                "INSTANCE_SNAPSHOT_STATUS_DELETED"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "INSTANCE_SNAPSHOT_TYPE_INVALID",
              "INSTANCE_SNAPSHOT_TYPE_FILESYSTEM",
              "INSTANCE_SNAPSHOT_TYPE_FULL"
            ],
            "default": "INSTANCE_SNAPSHOT_TYPE_INVALID"
          },
          {
            "name": "ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "InstanceSnapshots"
        ]
      },
      "post": {
        "operationId": "CreateInstanceSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateInstanceSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateInstanceSnapshotRequest"
            }
          }
        ],
        "tags": [
          "InstanceSnapshots"
        ]
      }
    },
    "/v1/instance_snapshots/{id}": {
      "get": {
        "operationId": "GetInstanceSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetInstanceSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "InstanceSnapshots"
        ]
      },
      "delete": {
        "operationId": "DeleteInstanceSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteInstanceSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "InstanceSnapshots"
        ]
      }
    },
    "/v1/instance_events": {
      "get": {
        "summary": "List Instance events",
        "operationId": "ListInstanceEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListInstanceEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "instance_ids",
            "description": "(Optional) Filter on list of instance id",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on instance event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/instances": {
      "get": {
        "summary": "List Instances",
        "operationId": "ListInstances",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListInstancesReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "app_id",
            "description": "(Optional) Filter on application id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "service_id",
            "description": "(Optional) Filter on service id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "deployment_id",
            "description": "(Optional) Filter on deployment id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "regional_deployment_id",
            "description": "(Optional) Filter on regional deployment id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "allocation_id",
            "description": "(Optional) Filter on allocation id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "replica_index",
            "description": "(Optional) Filter on replica index",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter on instance statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ALLOCATING",
                "STARTING",
                "HEALTHY",
                "UNHEALTHY",
                "STOPPING",
                "STOPPED",
                "ERROR",
                "SLEEPING"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "starting_time",
            "description": "(Optional) The starting time of the period of running instance",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "ending_time",
            "description": "(Optional) The ending time of the period of running instance",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on instance ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/instances/{id}": {
      "get": {
        "summary": "Get Instance",
        "operationId": "GetInstance",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetInstanceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the instance",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/volume_events": {
      "get": {
        "summary": "List Persistent Volume events",
        "operationId": "ListPersistentVolumeEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListPersistentVolumeEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "persistent_volume_id",
            "description": "(Optional) Filter on persistent volume id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on persistent volume event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PersistentVolumes"
        ]
      }
    },
    "/v1/volumes": {
      "get": {
        "summary": "List all PersistentVolumes",
        "operationId": "ListPersistentVolumes",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListPersistentVolumesReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "service_id",
            "description": "(Optional) A filter for the service id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "region",
            "description": "(Optional) A filter for the region",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "description": "(Optional) A filter for the name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on volume ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "PersistentVolumes"
        ]
      },
      "post": {
        "summary": "Create a PersistentVolume",
        "operationId": "CreatePersistentVolume",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreatePersistentVolumeReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePersistentVolumeRequest"
            }
          }
        ],
        "tags": [
          "PersistentVolumes"
        ]
      }
    },
    "/v1/volumes/{id}": {
      "get": {
        "summary": "Get a PersistentVolume",
        "operationId": "GetPersistentVolume",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetPersistentVolumeReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PersistentVolumes"
        ]
      },
      "delete": {
        "summary": "Delete a PersistentVolume",
        "operationId": "DeletePersistentVolume",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeletePersistentVolumeReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PersistentVolumes"
        ]
      },
      "post": {
        "summary": "Update a PersistentVolume",
        "operationId": "UpdatePersistentVolume",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdatePersistentVolumeReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "title": "(Optional) change the name of the volume"
                },
                "max_size": {
                  "type": "integer",
                  "format": "int64",
                  "title": "(Optional) increase the volume size (in Gigabyte / GB)"
                }
              }
            }
          }
        ],
        "tags": [
          "PersistentVolumes"
        ]
      }
    },
    "/v1/claim": {
      "post": {
        "summary": "Claim a sandbox from a service pool",
        "operationId": "Claim",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PoolClaimReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PoolClaimRequest"
            }
          }
        ],
        "tags": [
          "PoolClaims"
        ]
      }
    },
    "/v1/claims/{claim_id}": {
      "get": {
        "summary": "Get a claim",
        "operationId": "GetClaim",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetPoolClaimReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "claim_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PoolClaims"
        ]
      }
    },
    "/v1/service_pools/{pool_id}/claims": {
      "get": {
        "summary": "List claims of a service pool",
        "operationId": "ListClaim",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListPoolClaimReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "pool_id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PoolClaims"
        ]
      }
    },
    "/v1/provisioning/{deployment_id}/status/{stage}/{attempt}": {
      "post": {
        "summary": "Create an attempt for a stage",
        "operationId": "CreateStageAttempt",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateStageAttemptReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "deployment_id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "stage",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "attempt",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "secret": {
                  "type": "string"
                },
                "status": {
                  "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status"
                },
                "started_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "messages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "steps": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ],
        "tags": [
          "Provisioning"
        ]
      },
      "patch": {
        "summary": "Declare stage progress",
        "operationId": "DeclareStageProgress",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeclareStageProgressReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "deployment_id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "stage",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "attempt",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "secret": {
                  "type": "string"
                },
                "status": {
                  "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status"
                },
                "finished_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "messages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "image_pushed": {
                  "type": "boolean"
                },
                "internal_failure": {
                  "type": "boolean"
                },
                "retryable_failure": {
                  "type": "boolean"
                }
              }
            }
          }
        ],
        "tags": [
          "Provisioning"
        ]
      }
    },
    "/v1/provisioning/{deployment_id}/status/{stage}/{attempt}/{step}": {
      "patch": {
        "summary": "Declare step progress",
        "operationId": "DeclareStepProgress",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeclareStepProgressReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "deployment_id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "stage",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "attempt",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "step",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "secret": {
                  "type": "string"
                },
                "status": {
                  "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status"
                },
                "started_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "finished_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "messages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ],
        "tags": [
          "Provisioning"
        ]
      }
    },
    "/v1/quotas/capacity": {
      "post": {
        "summary": "DEPRECATED: Review Organization Capacity",
        "operationId": "ReviewOrganizationCapacity",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ReviewOrganizationCapacityReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReviewOrganizationCapacityRequest"
            }
          }
        ],
        "tags": [
          "Quotas"
        ]
      }
    },
    "/v1/quotas/organizations/{organization_id}/usage": {
      "get": {
        "summary": "Return the organization's current quota usage alongside the plan's limits.\nResponse is cached in Redis for 60s. Accept text/plain (or ?format=prometheus)\nto receive the response rendered as Prometheus text exposition format\n(\"koyeb_quota_<x>\" for usage, \"koyeb_quota_<x>_limit\" for the plan limit)\nsuitable for scraping into an external Prometheus.",
        "operationId": "GetOrganizationQuotasUsage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationQuotasUsageReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Quotas"
        ]
      }
    },
    "/v1/regional_deployment_events": {
      "get": {
        "summary": "List Regional Deployment events",
        "operationId": "ListRegionalDeploymentEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListRegionalDeploymentEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "regional_deployment_id",
            "description": "(Optional) Filter on regional deployment id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on regional deployment event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RegionalDeployments"
        ]
      }
    },
    "/v1/regional_deployments": {
      "get": {
        "summary": "List Regional Deployments",
        "description": "Experimental: use at your own risk",
        "operationId": "ListRegionalDeployments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListRegionalDeploymentsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "deployment_id",
            "description": "(Optional) Filter on deployment id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on regional deployment ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "RegionalDeployments"
        ]
      }
    },
    "/v1/regional_deployments/{id}": {
      "get": {
        "summary": "Get Regional Deployment",
        "description": "Experimental: use at your own risk",
        "operationId": "GetRegionalDeployment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetRegionalDeploymentReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the regional deployment",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RegionalDeployments"
        ]
      }
    },
    "/v1/secrets": {
      "get": {
        "summary": "List Secrets",
        "operationId": "ListSecrets",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListSecretsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "Filter by secret types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "SIMPLE",
                "REGISTRY",
                "MANAGED"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on secret ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Secrets"
        ]
      },
      "post": {
        "summary": "Create Secret",
        "operationId": "CreateSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateSecretReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "secret",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateSecret"
            }
          }
        ],
        "tags": [
          "Secrets"
        ]
      }
    },
    "/v1/secrets/{id}": {
      "get": {
        "summary": "Get Secret",
        "operationId": "GetSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetSecretReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Secrets"
        ]
      },
      "delete": {
        "summary": "Delete Secret",
        "operationId": "DeleteSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteSecretReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Secrets"
        ]
      },
      "put": {
        "summary": "Update Secret",
        "operationId": "UpdateSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateSecretReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "secret",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Secret"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Secrets"
        ]
      },
      "patch": {
        "summary": "Update Secret",
        "operationId": "UpdateSecret2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateSecretReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "secret",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Secret"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Secrets"
        ]
      }
    },
    "/v1/secrets/{id}/reveal": {
      "post": {
        "summary": "Reveal Secret",
        "operationId": "RevealSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RevealSecretReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "tags": [
          "Secrets"
        ]
      }
    },
    "/v1/service_pools": {
      "get": {
        "summary": "List ServicePools",
        "operationId": "ListServicePools",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListServicePoolsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "status",
            "description": "Filter pools by their own status: ready, provisioning, error or deleting.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ServicePools"
        ]
      },
      "post": {
        "summary": "Create a ServicePool",
        "operationId": "CreateServicePool",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateServicePoolReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "service_pool",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateServicePool"
            }
          }
        ],
        "tags": [
          "ServicePools"
        ]
      }
    },
    "/v1/service_pools/{id}": {
      "get": {
        "summary": "Get a ServicePool",
        "operationId": "GetServicePool",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetServicePoolReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ServicePools"
        ]
      },
      "delete": {
        "summary": "Delete a ServicePool",
        "operationId": "DeleteServicePool",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteServicePoolReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ServicePools"
        ]
      },
      "put": {
        "operationId": "UpdateServicePool",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateServicePoolReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "service_pool",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateServicePool"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ServicePools"
        ]
      }
    },
    "/v1/service_events": {
      "get": {
        "summary": "List Service events",
        "operationId": "ListServiceEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListServiceEventsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "service_id",
            "description": "(Optional) Filter on service id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on service event types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services": {
      "get": {
        "summary": "List Services",
        "operationId": "ListServices",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListServicesReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "app_id",
            "description": "(Optional) The id of the app",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "description": "(Optional) A filter for name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "description": "(Optional) Filter on service types",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INVALID_TYPE",
                "WEB",
                "WORKER",
                "DATABASE",
                "SANDBOX"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter on service statuses",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "STARTING",
                "HEALTHY",
                "DEGRADED",
                "UNHEALTHY",
                "DELETING",
                "DELETED",
                "PAUSING",
                "PAUSED",
                "RESUMING"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "regions",
            "description": "(Optional) Filter on regions",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on service ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Services"
        ]
      },
      "post": {
        "summary": "Create Service",
        "operationId": "CreateService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "service",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateService"
            }
          },
          {
            "name": "dry_run",
            "description": "If set only run validation",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services-autocomplete": {
      "post": {
        "summary": "Autocomplete definition",
        "description": "Generate autocomplete definition for a service",
        "operationId": "Autocomplete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/AutocompleteReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AutocompleteRequest"
            }
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services/{id}": {
      "get": {
        "summary": "Get Service",
        "operationId": "GetService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the Service",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Services"
        ]
      },
      "delete": {
        "summary": "Delete Service",
        "description": "Service deletion is allowed for all status.",
        "operationId": "DeleteService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the entity to delete",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Services"
        ]
      },
      "put": {
        "summary": "Update Service",
        "operationId": "UpdateService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the entity to update",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "service",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateService"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "dry_run",
            "description": "If set, run validation and check that the service exists",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Services"
        ]
      },
      "patch": {
        "summary": "Update Service",
        "operationId": "UpdateService2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the entity to update",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "service",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateService"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "dry_run",
            "description": "If set, run validation and check that the service exists",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services/{id}/pause": {
      "post": {
        "summary": "Pause Service",
        "description": "Service pause action is allowed for the following status:\n - starting\n - healthy\n - degraded\n - unhealthy\n - resuming",
        "operationId": "PauseService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/PauseServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the service to pause.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services/{id}/redeploy": {
      "post": {
        "summary": "ReDeploy Service",
        "operationId": "ReDeploy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RedeployReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "info",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RedeployRequest.Info"
            }
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services/{id}/resume": {
      "post": {
        "summary": "Resume Service",
        "description": "Service resume action is allowed for the following status:\n - paused",
        "operationId": "ResumeService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ResumeServiceReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the service to pause.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "skip_build",
            "description": "If set to true, the build stage will be skipped and the image coming from the last successful build step will be used instead.\nThe call fails if no previous successful builds happened.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "use_cache",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/services/{id}/scale": {
      "get": {
        "summary": "Get Service Scaling",
        "description": "Returns the current scaling configuration for a service",
        "operationId": "GetServiceScaling",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetServiceScalingReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the service",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Services"
        ]
      },
      "delete": {
        "summary": "Delete Service Scaling",
        "description": "Deletes the manual scaling configuration for a service, reverting to \nthe scaling defined in the deployment definition.",
        "operationId": "DeleteServiceScaling",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteServiceScalingReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the service",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Services"
        ]
      },
      "put": {
        "summary": "Update Service Scaling",
        "description": "Stores or updates the scaling configuration for a service to use manual scaling",
        "operationId": "UpdateServiceScaling",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateServiceScalingReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the service to scale",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "scalings": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/ManualServiceScaling"
                  },
                  "title": "The new scaling configuration"
                }
              }
            }
          }
        ],
        "tags": [
          "Services"
        ]
      }
    },
    "/v1/snapshots": {
      "get": {
        "summary": "List all Snapshots",
        "operationId": "ListSnapshots",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ListSnapshotsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "organization_id",
            "description": "(Optional) Filter by organization_id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "statuses",
            "description": "(Optional) Filter by status\n\n - SNAPSHOT_STATUS_INVALID: zero value, invalid\n - SNAPSHOT_STATUS_CREATING: the snapshot is being created\n - SNAPSHOT_STATUS_AVAILABLE: the snapshot is complete and available\n - SNAPSHOT_STATUS_MIGRATING: the snapshot is being migrated\n - SNAPSHOT_STATUS_DELETING: the snapshot is being deleted\n - SNAPSHOT_STATUS_DELETED: the snapshot is deleted",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "SNAPSHOT_STATUS_INVALID",
                "SNAPSHOT_STATUS_CREATING",
                "SNAPSHOT_STATUS_AVAILABLE",
                "SNAPSHOT_STATUS_MIGRATING",
                "SNAPSHOT_STATUS_DELETING",
                "SNAPSHOT_STATUS_DELETED"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "region",
            "description": "(Optional) A filter for the region",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ids",
            "description": "(Optional) Filter on snapshot ids",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Snapshots"
        ]
      },
      "post": {
        "summary": "Create a Snapshot",
        "operationId": "CreateSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CreateSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateSnapshotRequest"
            }
          }
        ],
        "tags": [
          "Snapshots"
        ]
      }
    },
    "/v1/snapshots/{id}": {
      "get": {
        "summary": "Get a Snapshot",
        "operationId": "GetSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Snapshots"
        ]
      },
      "delete": {
        "summary": "Delete a Snapshot",
        "operationId": "DeleteSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/DeleteSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Snapshots"
        ]
      },
      "post": {
        "summary": "Update a Snapshot",
        "operationId": "UpdateSnapshot",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/UpdateSnapshotReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The id of the snapshot",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "title": "Change the name of the snapshot"
                }
              }
            }
          }
        ],
        "tags": [
          "Snapshots"
        ]
      }
    },
    "/v1/usages": {
      "get": {
        "summary": "Get organization usage",
        "operationId": "GetOrganizationUsage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationUsageReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "starting_time",
            "description": "The starting time of the period to get data from",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "ending_time",
            "description": "The ending time of the period to get data from",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "tags": [
          "Usages"
        ]
      }
    },
    "/v1/usages/details": {
      "get": {
        "summary": "Get organization usage details",
        "operationId": "GetOrganizationUsageDetails",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetOrganizationUsageDetailsReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "starting_time",
            "description": "The starting time of the period to get data from",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "ending_time",
            "description": "The ending time of the period to get data from",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "description": "(Optional) The number of items to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "offset",
            "description": "(Optional) The offset in the list of item to return",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "order",
            "description": "(Optional) Sorts the list in the ascending or the descending order",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "Accept",
            "description": "If defined with the value 'text/csv', a csv file is returned",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Usages"
        ]
      }
    },
    "/v1/test/anon": {
      "get": {
        "summary": "Test anonymous call",
        "operationId": "TestAnon",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ktest.TestAnonReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "tags": [
          "Test"
        ]
      }
    },
    "/v1/test/auth": {
      "post": {
        "summary": "Test authenticated call",
        "operationId": "TestAuth",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ktest.TestAuthReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ktest.TestAuthRequest"
            }
          }
        ],
        "tags": [
          "Test"
        ]
      }
    },
    "/v1/streams/instances/exec": {
      "get": {
        "summary": "Exec Command",
        "description": "This endpoint opens a websocket. Once open, all frames going through the websocket should be formatted in JSON. Input frames should match the format specified below. Output frames will match the response schema.",
        "operationId": "ExecCommand",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/ExecCommandReply"
                },
                "error": {
                  "$ref": "#/definitions/google.rpc.Status"
                }
              },
              "title": "Stream result of ExecCommandReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "ID of the resource to exec on.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "body.command",
            "description": "Command to exec. Mandatory in the first frame sent",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "body.tty_size.height",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "body.tty_size.width",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "body.stdin.data",
            "description": "Data is base64 encoded",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "body.stdin.close",
            "description": "Indicate last data frame",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "body.disableTty",
            "description": "Disable TTY. It's enough to specify it in the first frame",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "id_type",
            "description": "When specified, it is used to determine if the kind of resource the id refers to. If missing, defaults to the instance id.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "INVALID",
              "INSTANCE_ID",
              "SERVICE_ID"
            ],
            "default": "INVALID"
          }
        ],
        "tags": [
          "Instances"
        ]
      }
    },
    "/v1/streams/logs/query": {
      "get": {
        "summary": "Query logs",
        "operationId": "QueryLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/QueryLogsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "description": "Type of logs to retrieve, either \"build\" or \"runtime\". Defaults to \"runtime\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "app_id",
            "description": "(Optional) Filter on the provided app_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "service_id",
            "description": "(Optional) Filter on the provided service_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "deployment_id",
            "description": "(Optional) Filter on the provided deployment_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "regional_deployment_id",
            "description": "(Optional) Filter on the provided regional_deployment_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "instance_id",
            "description": "Deprecated, prefer using instance_ids instead.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "instance_ids",
            "description": "(Optional) Filter on the provided instance_ids. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "stream",
            "description": "Deprecated, prefer using streams instead.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "streams",
            "description": "(Optional) Filter on stream: either \"stdout\", \"stderr\" or \"koyeb\" (for system logs).",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "start",
            "description": "(Optional) Must always be before `end`. Defaults to 15 minutes ago.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "end",
            "description": "(Optional) Must always be after `start`. Defaults to now.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "order",
            "description": "(Optional) `asc` or `desc`. Defaults to `desc`.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "description": "(Optional) Defaults to 100. Maximum of 1000.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "int64"
          },
          {
            "name": "regex",
            "description": "(Optional) Apply a regex to filter logs. Can't be used with `text`.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "text",
            "description": "(Optional) Looks for this string in logs. Can't be used with `regex`.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "regions",
            "description": "(Optional) Filter on the provided regions (e.g. [\"fra\", \"was\"]).",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Logs"
        ]
      }
    },
    "/v1/streams/logs/tail": {
      "get": {
        "summary": "Tails logs",
        "operationId": "TailLogs",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/LogEntry"
                },
                "error": {
                  "$ref": "#/definitions/google.rpc.Status"
                }
              },
              "title": "Stream result of LogEntry"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "description": "Type of logs to retrieve, either \"build\" or \"runtime\". Defaults to \"runtime\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "app_id",
            "description": "(Optional) Filter on the provided app_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "service_id",
            "description": "(Optional) Filter on the provided service_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "deployment_id",
            "description": "(Optional) Filter on the provided deployment_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "regional_deployment_id",
            "description": "(Optional) Filter on the provided regional_deployment_id. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "instance_id",
            "description": "Deprecated, prefer using instance_ids instead.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "instance_ids",
            "description": "(Optional) Filter on the provided instance_ids. At least one of app_id, service_id, deployment_id, regional_deployment_id or instance_ids must be set.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "stream",
            "description": "Deprecated, prefer using streams instead.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "streams",
            "description": "(Optional) Filter on stream: either \"stdout\", \"stderr\" or \"koyeb\" (for system logs).",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "start",
            "description": "(Optional) Defaults to 24 hours ago.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "description": "(Optional) Defaults to 1000. Maximum of 1000.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "int64"
          },
          {
            "name": "regex",
            "description": "(Optional) Apply a regex to filter logs. Can't be used with `text`.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "text",
            "description": "(Optional) Looks for this string in logs. Can't be used with `regex`.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "regions",
            "description": "(Optional) Filter on the provided regions (e.g. [\"fra\", \"was\"]).",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Logs"
        ]
      }
    },
    "/v1/streams/metrics": {
      "get": {
        "summary": "Get Metrics",
        "operationId": "GetMetrics",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/GetMetricsReply"
            }
          },
          "400": {
            "description": "Validation error",
            "schema": {
              "$ref": "#/definitions/ErrorWithFields"
            }
          },
          "401": {
            "description": "Returned when the token is not valid.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Returned in case of server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "503": {
            "description": "Service is unavailable.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/google.rpc.Status"
            }
          }
        },
        "parameters": [
          {
            "name": "service_id",
            "description": "ID of the service to query instances metrics for. Ignored if instance_id is set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "instance_id",
            "description": "ID of the instance to query metrics for.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "description": "Metric to query.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN",
              "CPU_TOTAL_PERCENT",
              "MEM_RSS",
              "HTTP_THROUGHPUT",
              "HTTP_RESPONSE_TIME_50P",
              "HTTP_RESPONSE_TIME_90P",
              "HTTP_RESPONSE_TIME_99P",
              "HTTP_RESPONSE_TIME_MAX",
              "PUBLIC_DATA_TRANSFER_IN",
              "PUBLIC_DATA_TRANSFER_OUT"
            ],
            "default": "UNKNOWN"
          },
          {
            "name": "start",
            "description": "(Optional) Defaults to an hour prior to end.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "end",
            "description": "(Optional) Defaults to now.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "step",
            "description": "(Optional) Must be a valid duration in hours (h) or minutes (m). Defaulst to 5m.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Metrics"
        ]
      }
    }
  },
  "definitions": {
    "google.protobuf.Any": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
        }
      },
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    },
    "google.protobuf.NullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
    },
    "google.rpc.Status": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/google.protobuf.Any"
          }
        }
      }
    },
    "AcceptOrganizationInvitationReply": {
      "type": "object",
      "properties": {
        "invitation": {
          "$ref": "#/definitions/OrganizationInvitation",
          "title": "The organization invitation accepted"
        }
      }
    },
    "Action": {
      "type": "string",
      "enum": [
        "signin",
        "signup",
        "register"
      ],
      "default": "signin"
    },
    "Budget": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "int64"
        },
        "thresholds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        }
      }
    },
    "CannyAuthReply": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string"
        }
      }
    },
    "CannyAuthRequest": {
      "type": "object"
    },
    "ClearIdenfyVerificationResultReply": {
      "type": "object"
    },
    "ClearIdenfyVerificationResultRequest": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        }
      }
    },
    "CreateAccessTokenReply": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string"
        }
      }
    },
    "CreateAccountRequest": {
      "type": "object",
      "example": {
        "email": "john@snow.com",
        "password": "..."
      },
      "properties": {
        "email": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "captcha": {
          "type": "string"
        }
      },
      "description": "Create new account",
      "title": "Create new account",
      "required": [
        "email",
        "password"
      ]
    },
    "CreateBudgetReply": {
      "type": "object",
      "properties": {
        "budget": {
          "$ref": "#/definitions/Budget"
        }
      }
    },
    "CreateOrganizationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "CreateOrganizationRequest": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "DeactivateOrganizationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "DeclineOrganizationInvitationReply": {
      "type": "object",
      "properties": {
        "invitation": {
          "$ref": "#/definitions/OrganizationInvitation",
          "title": "The organization invitation declined"
        }
      }
    },
    "DeleteBudgetReply": {
      "type": "object"
    },
    "DeleteOrganizationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "DiscourseAuthReply": {
      "type": "object",
      "properties": {
        "sso": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      }
    },
    "DiscourseAuthRequest": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      }
    },
    "GetBudgetReply": {
      "type": "object",
      "properties": {
        "budget": {
          "$ref": "#/definitions/Budget"
        }
      }
    },
    "GetGithubInstallationReply": {
      "type": "object",
      "properties": {
        "installation_id": {
          "type": "string"
        },
        "installation_url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "avatar_url": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/kgitproxy.GithubInstallation.Status"
        },
        "installed_at": {
          "type": "string",
          "format": "date-time"
        },
        "suspended_at": {
          "type": "string",
          "format": "date-time"
        },
        "indexing_status": {
          "$ref": "#/definitions/kgitproxy.IndexingStatus"
        },
        "indexed_repositories": {
          "type": "integer",
          "format": "int64"
        },
        "total_repositories": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GetIdenfyTokenReply": {
      "type": "object",
      "properties": {
        "auth_token": {
          "type": "string"
        }
      }
    },
    "GetOAuthOptionsReply": {
      "type": "object",
      "properties": {
        "oauth_providers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OAuthProvider"
          }
        }
      },
      "description": "A list of providers which you can use for single sign-on."
    },
    "GetOrganizationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "GetUserOrganizationInvitationReply": {
      "type": "object",
      "properties": {
        "invitation": {
          "$ref": "#/definitions/OrganizationInvitation"
        }
      }
    },
    "GetUserSettingsReply": {
      "type": "object",
      "properties": {
        "settings": {
          "$ref": "#/definitions/UserSettings"
        }
      }
    },
    "GithubInstallationReply": {
      "type": "object",
      "properties": {
        "app_name": {
          "type": "string",
          "title": "The github app name"
        },
        "app_id": {
          "type": "string",
          "format": "int64",
          "title": "The github app id"
        },
        "url": {
          "type": "string",
          "title": "The url to start the installation flow"
        },
        "state": {
          "type": "string",
          "title": "The state required by the protocol, it is only valid 10 minutes and encodes\ninformation about the type of flow"
        }
      }
    },
    "GithubInstallationRequest": {
      "type": "object",
      "properties": {
        "metadata": {
          "type": "string",
          "title": "A small (limited to 400 characters) string of arbitrary metadata which will\nbe encoded in the state"
        }
      }
    },
    "HasUnpaidInvoicesReply": {
      "type": "object",
      "properties": {
        "has_unpaid_invoices": {
          "type": "boolean"
        }
      }
    },
    "InviteUserRequest": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "ListUserOrganizationInvitationsReply": {
      "type": "object",
      "properties": {
        "invitations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationInvitation"
          },
          "title": "The collection of organization invitations"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "ListUserOrganizationsReply": {
      "type": "object",
      "properties": {
        "organizations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Organization"
          },
          "title": "The collection of organizations"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "LoginMethodReply": {
      "type": "object",
      "properties": {
        "method": {
          "$ref": "#/definitions/LoginMethodReply.Method"
        }
      }
    },
    "LoginMethodReply.Method": {
      "type": "string",
      "enum": [
        "KOYEB",
        "WORKOS"
      ],
      "default": "KOYEB"
    },
    "LoginReply": {
      "type": "object",
      "properties": {
        "token": {
          "$ref": "#/definitions/Token"
        }
      }
    },
    "ManageReply": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        }
      }
    },
    "NextInvoiceReply": {
      "type": "object",
      "properties": {
        "stripe_invoice": {
          "type": "object"
        },
        "lines": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NextInvoiceReply.Line"
          }
        },
        "discounts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NextInvoiceReply.Discount"
          }
        }
      }
    },
    "NextInvoiceReply.Discount": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/NextInvoiceReply.Discount.Type"
        },
        "name": {
          "type": "string"
        },
        "amount": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "NextInvoiceReply.Discount.Type": {
      "type": "string",
      "enum": [
        "PERCENT_OFF",
        "AMOUNT_OFF"
      ],
      "default": "PERCENT_OFF"
    },
    "NextInvoiceReply.Line": {
      "type": "object",
      "properties": {
        "amount_excluding_tax": {
          "type": "integer",
          "format": "int32"
        },
        "period": {
          "$ref": "#/definitions/NextInvoiceReply.Line.Period"
        },
        "plan_nickname": {
          "type": "string"
        },
        "price": {
          "$ref": "#/definitions/NextInvoiceReply.Line.Price"
        },
        "quantity": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "NextInvoiceReply.Line.Period": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "format": "date-time"
        },
        "end": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "NextInvoiceReply.Line.Price": {
      "type": "object",
      "properties": {
        "unit_amount_decimal": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "OAuthCallbackReply": {
      "type": "object",
      "properties": {
        "token": {
          "$ref": "#/definitions/Token",
          "title": "A jwt token to be used for session"
        }
      }
    },
    "OAuthCallbackRequest": {
      "type": "object",
      "properties": {
        "state": {
          "type": "string",
          "title": "The state created at the origin of the OAuth flow"
        },
        "code": {
          "type": "string",
          "title": "The code returned by the OAuth provider"
        },
        "setup_action": {
          "type": "string",
          "description": "setup_action is populated in the context of a GitHub app installation\nrequest. For logins and signups, it is not set."
        },
        "installation_id": {
          "type": "string",
          "description": "installation_id is populated in the context of a GitHub app installation\nrequest. For logins and signups, it is not set."
        }
      }
    },
    "OAuthProvider": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "The name of the provider (.e.g github, google)"
        },
        "url": {
          "type": "string",
          "title": "The URL to call to initiate the OAuth flow"
        },
        "state": {
          "type": "string",
          "title": "The OAuth state required by the protocol, it is only valid 10 minutes and\nencodes information about the type of flow"
        }
      }
    },
    "Organization": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "external_id": {
          "type": "string"
        },
        "provisioning": {
          "type": "boolean"
        },
        "address1": {
          "type": "string"
        },
        "address2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "company": {
          "type": "boolean"
        },
        "vat_number": {
          "type": "string"
        },
        "billing_name": {
          "type": "string"
        },
        "billing_email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/Plan"
        },
        "plan_updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "has_payment_method": {
          "type": "boolean"
        },
        "subscription_id": {
          "type": "string"
        },
        "current_subscription_id": {
          "type": "string"
        },
        "latest_subscription_id": {
          "type": "string"
        },
        "signup_qualification": {
          "type": "object"
        },
        "status": {
          "$ref": "#/definitions/Organization.Status"
        },
        "status_message": {
          "$ref": "#/definitions/OrganizationDetailedStatus"
        },
        "deactivation_reason": {
          "$ref": "#/definitions/Organization.DeactivationReason"
        },
        "verified": {
          "type": "boolean"
        },
        "qualifies_for_hobby23": {
          "type": "boolean"
        },
        "reprocess_after": {
          "type": "string",
          "format": "date-time"
        },
        "trialing": {
          "type": "boolean"
        },
        "trial_starts_at": {
          "type": "string",
          "format": "date-time"
        },
        "trial_ends_at": {
          "type": "string",
          "format": "date-time"
        },
        "email_domain_allowlist": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "default_project_id": {
          "type": "string"
        }
      },
      "title": "Represent an Organization"
    },
    "Organization.DeactivationReason": {
      "type": "string",
      "enum": [
        "INVALID",
        "REQUESTED_BY_OWNER",
        "SUBSCRIPTION_TERMINATION",
        "LOCKED_BY_ADMIN",
        "VERIFICATION_FAILED",
        "TRIAL_DID_NOT_CONVERT"
      ],
      "default": "INVALID"
    },
    "Organization.Status": {
      "type": "string",
      "enum": [
        "WARNING",
        "LOCKED",
        "ACTIVE",
        "DEACTIVATING",
        "DEACTIVATED",
        "DELETING",
        "DELETED"
      ],
      "default": "WARNING"
    },
    "OrganizationDetailedStatus": {
      "type": "string",
      "enum": [
        "NEW",
        "EMAIL_NOT_VALIDATED",
        "BILLING_INFO_MISSING",
        "LOCKED",
        "PAYMENT_FAILURE",
        "VALID",
        "PENDING_VERIFICATION",
        "VERIFICATION_FAILED",
        "REVIEWING_ACCOUNT",
        "PLAN_UPGRADE_REQUIRED"
      ],
      "default": "NEW"
    },
    "OrganizationInvitation": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "role": {
          "$ref": "#/definitions/UserRole.Role"
        },
        "status": {
          "$ref": "#/definitions/OrganizationInvitation.Status"
        },
        "expires_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "organization": {
          "$ref": "#/definitions/PublicOrganization"
        },
        "invitee_id": {
          "type": "string"
        },
        "invitee": {
          "$ref": "#/definitions/PublicUser"
        },
        "inviter_id": {
          "type": "string"
        },
        "inviter": {
          "$ref": "#/definitions/PublicUser"
        }
      }
    },
    "OrganizationInvitation.Status": {
      "type": "string",
      "enum": [
        "INVALID",
        "PENDING",
        "ACCEPTED",
        "REFUSED",
        "EXPIRED"
      ],
      "default": "INVALID"
    },
    "Plan": {
      "type": "string",
      "enum": [
        "hobby",
        "starter",
        "startup",
        "business",
        "enterprise",
        "internal",
        "hobby23",
        "no_plan",
        "pro",
        "scale",
        "partner_csp",
        "partner_csp_unit"
      ],
      "default": "hobby"
    },
    "PublicOrganization": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/Plan"
        },
        "status": {
          "$ref": "#/definitions/Organization.Status"
        },
        "external_id": {
          "type": "string"
        }
      }
    },
    "PublicUser": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "avatar_url": {
          "type": "string"
        },
        "github_id": {
          "type": "string"
        },
        "github_user": {
          "type": "string"
        }
      }
    },
    "ReactivateOrganizationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "ResendEmailValidationReply": {
      "type": "object"
    },
    "ResendEmailValidationRequest": {
      "type": "object"
    },
    "ResetPasswordReply": {
      "type": "object"
    },
    "ResetPasswordRequest": {
      "type": "object",
      "example": {
        "email": "john@snow.com"
      },
      "properties": {
        "email": {
          "type": "string"
        }
      }
    },
    "Token": {
      "type": "object",
      "example": {
        "id": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        "expires": "2022-09-08T14:00:00Z",
        "user_id": "996d7822-6b58-11e9-956f-32001b70f000",
        "organization_id": "9f33b2c6-6b58-11e9-883c-32001b70f000"
      },
      "properties": {
        "id": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "expires_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "UnscopeOrganizationTokenRequest": {
      "type": "object"
    },
    "UpdateBudgetReply": {
      "type": "object",
      "properties": {
        "budget": {
          "$ref": "#/definitions/Budget"
        }
      }
    },
    "UpdateOrganizationDefaultProjectReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "UpdateOrganizationNameReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "UpdateOrganizationPlanReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "UpdateOrganizationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "UpdatePasswordRequest": {
      "type": "object",
      "example": {
        "id": "...",
        "password": "..."
      },
      "properties": {
        "id": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "UpdateUserRequest.UserUpdateBody": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "current_password": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "newsletter_subscribed": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "UpdateUserSettingsReply": {
      "type": "object",
      "properties": {
        "settings": {
          "$ref": "#/definitions/UserSettings"
        }
      }
    },
    "UpdateUserSettingsRequest": {
      "type": "object",
      "properties": {
        "failed_deployment_email_notification": {
          "type": "boolean",
          "description": "(Optional) Toggle failed deployment email notification."
        }
      }
    },
    "UpsertSignupQualificationReply": {
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/Organization"
        }
      }
    },
    "User": {
      "type": "object",
      "example": {
        "id": "78352123-a06f-4ec2-81ed-27a056725385",
        "email": "john@snow.com",
        "name": "John Snow",
        "avatar_url": "https://www.gravatar.com/avatar/00000000000000000000000000000000",
        "is_admin": false,
        "is_test": true,
        "two_factor_authentication": false,
        "last_login": "0001-01-01T00:00:00Z",
        "last_login_id": "10.1.1.1",
        "updated_at": "0001-01-01T00:00:00Z",
        "created_at": "0001-01-01T00:00:00Z",
        "newsletter_subscribed": true,
        "email_validated": true
      },
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "avatar_url": {
          "type": "string"
        },
        "two_factor_authentication": {
          "type": "boolean"
        },
        "last_login": {
          "type": "string",
          "format": "date-time"
        },
        "last_login_ip": {
          "type": "string"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "newsletter_subscribed": {
          "type": "boolean"
        },
        "github_id": {
          "type": "string"
        },
        "github_user": {
          "type": "string"
        },
        "flags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserFlags"
          }
        },
        "name": {
          "type": "string"
        },
        "email_validated": {
          "type": "boolean"
        },
        "trialed": {
          "type": "boolean"
        }
      },
      "title": "Represent a User"
    },
    "UserFlags": {
      "type": "string",
      "enum": [
        "ADMIN",
        "TEST",
        "RESTRICTED",
        "ACTIVE",
        "BETA",
        "MAX_ORGANIZATIONS_25",
        "MAX_ORGANIZATIONS_100",
        "MAX_ORGANIZATIONS_1000",
        "MAX_ORGANIZATIONS_10000",
        "MAX_ORGANIZATIONS_100000",
        "MAX_ORGANIZATIONS_1000000",
        "PARTNER_CSP",
        "IGNORE_ORGANIZATION_NAME_RESERVATION_RULE_NEON_PREFIX"
      ],
      "default": "ADMIN",
      "title": "- ADMIN: A user is an admin user\n - TEST: A user is a test user\n - RESTRICTED: Whether this account as restricted access\n - ACTIVE: Whether this account is active\n - BETA: Account in beta program\n - MAX_ORGANIZATIONS_25: User can create this much organizations, overriding the default amount\n - PARTNER_CSP: User can create sub-organizations\n - IGNORE_ORGANIZATION_NAME_RESERVATION_RULE_NEON_PREFIX: User can bypass organization name reservations rules"
    },
    "UserReply": {
      "type": "object",
      "properties": {
        "user": {
          "$ref": "#/definitions/User"
        }
      }
    },
    "UserRole.Role": {
      "type": "string",
      "enum": [
        "INVALID",
        "OWNER"
      ],
      "default": "INVALID"
    },
    "UserSettings": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "failed_deployment_email_notification": {
          "type": "boolean"
        }
      }
    },
    "Activity": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "actor": {
          "$ref": "#/definitions/Object"
        },
        "object": {
          "$ref": "#/definitions/Object"
        },
        "verb": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "ActivityList": {
      "type": "object",
      "properties": {
        "activities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Activity"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "has_next": {
          "type": "boolean"
        }
      }
    },
    "Object": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        },
        "deleted": {
          "type": "boolean"
        }
      }
    },
    "Empty": {
      "type": "object"
    },
    "Error": {
      "type": "object",
      "properties": {
        "status": {
          "type": "integer",
          "format": "int32"
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "ErrorField": {
      "type": "object",
      "properties": {
        "field": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      }
    },
    "ErrorWithFields": {
      "type": "object",
      "properties": {
        "status": {
          "type": "integer",
          "format": "int32"
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ErrorField"
          }
        }
      }
    },
    "kgitproxy.GithubInstallation.Status": {
      "type": "string",
      "enum": [
        "INVALID",
        "INSTALLED",
        "SUSPENDED",
        "DELETED"
      ],
      "default": "INVALID"
    },
    "kgitproxy.IndexingStatus": {
      "type": "string",
      "enum": [
        "INVALID_INDEXING_STATUS",
        "NOT_STARTED",
        "IN_PROGRESS",
        "COMPLETED"
      ],
      "default": "INVALID_INDEXING_STATUS"
    },
    "CheckCouponReply": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "percent_off": {
          "type": "number",
          "format": "float"
        },
        "amount_off": {
          "type": "string",
          "format": "int64"
        },
        "currency": {
          "type": "string"
        }
      }
    },
    "RedeemCouponReply": {
      "type": "object"
    },
    "RedeemCouponRequest": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        }
      }
    },
    "CreateCredential": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "Credential name"
        },
        "description": {
          "type": "string",
          "title": "Credential description"
        },
        "type": {
          "$ref": "#/definitions/Credential.Type",
          "title": "Credential type"
        },
        "organization_id": {
          "type": "string",
          "title": "Organization id for user credential"
        }
      }
    },
    "CreateCredentialReply": {
      "type": "object",
      "properties": {
        "credential": {
          "$ref": "#/definitions/Credential"
        }
      }
    },
    "Credential": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/Credential.Type"
        },
        "name": {
          "type": "string"
        },
        "token": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "expires_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "Credential.Type": {
      "type": "string",
      "enum": [
        "INVALID",
        "USER",
        "ORGANIZATION"
      ],
      "default": "INVALID"
    },
    "DeleteCredentialReply": {
      "type": "object"
    },
    "GetCredentialReply": {
      "type": "object",
      "properties": {
        "credential": {
          "$ref": "#/definitions/Credential"
        }
      }
    },
    "ListCredentialsReply": {
      "type": "object",
      "properties": {
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Credential"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "UpdateCredentialReply": {
      "type": "object",
      "properties": {
        "credential": {
          "$ref": "#/definitions/Credential"
        }
      }
    },
    "GetIntercomProfileReply": {
      "type": "object",
      "properties": {
        "hash": {
          "type": "string"
        }
      }
    },
    "ConfirmOrganizationActionReply": {
      "type": "object"
    },
    "CreateOrganizationInvitationReply": {
      "type": "object",
      "properties": {
        "invitation": {
          "$ref": "#/definitions/OrganizationInvitation",
          "title": "The organization invitation sent"
        }
      }
    },
    "CreateOrganizationInvitationRequest": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string",
          "title": "The email of the person to invite"
        }
      }
    },
    "DeleteOrganizationInvitationReply": {
      "type": "object"
    },
    "GetOrganizationInvitationReply": {
      "type": "object",
      "properties": {
        "invitation": {
          "$ref": "#/definitions/OrganizationInvitation"
        }
      }
    },
    "ListOrganizationInvitationsReply": {
      "type": "object",
      "properties": {
        "invitations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationInvitation"
          },
          "title": "The collection of organization invitations"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "ResendOrganizationInvitationReply": {
      "type": "object",
      "properties": {
        "invitation": {
          "$ref": "#/definitions/OrganizationInvitation",
          "title": "The organization invitation resent"
        }
      }
    },
    "ListOrganizationMembersReply": {
      "type": "object",
      "properties": {
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationMember"
          },
          "title": "The collection of organization members"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "OrganizationMember": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "external_id": {
          "type": "string"
        },
        "joined_at": {
          "type": "string",
          "format": "date-time"
        },
        "role": {
          "$ref": "#/definitions/UserRole.Role"
        },
        "status": {
          "$ref": "#/definitions/OrganizationMember.Status"
        },
        "user": {
          "$ref": "#/definitions/PublicUser"
        },
        "organization": {
          "$ref": "#/definitions/PublicOrganization"
        }
      }
    },
    "OrganizationMember.Status": {
      "type": "string",
      "enum": [
        "INVALID",
        "ACTIVE",
        "DELETED"
      ],
      "default": "INVALID"
    },
    "RemoveOrganizationMemberReply": {
      "type": "object",
      "properties": {
        "member": {
          "$ref": "#/definitions/OrganizationMember"
        }
      }
    },
    "ConfirmPaymentAuthorizationReply": {
      "type": "object",
      "properties": {
        "payment_method": {
          "$ref": "#/definitions/PaymentMethod"
        }
      }
    },
    "CreatePaymentAuthorizationReply": {
      "type": "object",
      "properties": {
        "payment_method": {
          "$ref": "#/definitions/PaymentMethod"
        }
      }
    },
    "CreatePaymentAuthorizationRequest": {
      "type": "object"
    },
    "DeletePaymentMethodReply": {
      "type": "object"
    },
    "GetPaymentMethodReply": {
      "type": "object",
      "properties": {
        "payment_method": {
          "$ref": "#/definitions/PaymentMethod"
        }
      }
    },
    "ListPaymentMethodsReply": {
      "type": "object",
      "properties": {
        "payment_methods": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PaymentMethod"
          },
          "title": "The collection of payment methods"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "PaymentMethod": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "organization_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/PaymentMethod.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "stripe_payment_method_id": {
          "type": "string"
        },
        "authorization_verified_at": {
          "type": "string",
          "format": "date-time"
        },
        "authorization_canceled_at": {
          "type": "string",
          "format": "date-time"
        },
        "authorization_stripe_payment_intent_id": {
          "type": "string"
        },
        "authorization_stripe_payment_intent_client_secret": {
          "type": "string"
        },
        "card_brand": {
          "type": "string"
        },
        "card_country": {
          "type": "string"
        },
        "card_funding": {
          "type": "string"
        },
        "card_fingerprint": {
          "type": "string"
        },
        "card_last_digits": {
          "type": "string"
        },
        "card_expiration_month": {
          "type": "integer",
          "format": "int64"
        },
        "card_expiration_year": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PaymentMethod.Status": {
      "type": "string",
      "enum": [
        "INVALID",
        "CREATED",
        "AUTHORIZED",
        "DECLINED",
        "CANCELED",
        "EXPIRED",
        "UNCHECKED"
      ],
      "default": "INVALID"
    },
    "CreateProject": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "Project name"
        },
        "description": {
          "type": "string",
          "title": "Project description"
        }
      }
    },
    "CreateProjectReply": {
      "type": "object",
      "properties": {
        "project": {
          "$ref": "#/definitions/Project"
        }
      }
    },
    "DeleteProjectReply": {
      "type": "object"
    },
    "GetProjectReply": {
      "type": "object",
      "properties": {
        "project": {
          "$ref": "#/definitions/Project"
        }
      }
    },
    "ListProjectsReply": {
      "type": "object",
      "properties": {
        "projects": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Project"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "Project": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "service_count": {
          "type": "string",
          "format": "int64",
          "title": "Number of services in this project"
        }
      }
    },
    "UpdateProjectReply": {
      "type": "object",
      "properties": {
        "project": {
          "$ref": "#/definitions/Project"
        }
      }
    },
    "DomainLoadBalancerQuotas": {
      "type": "object",
      "properties": {
        "max_koyeb": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GetQuotasReply": {
      "type": "object",
      "properties": {
        "quotas": {
          "$ref": "#/definitions/Quotas"
        }
      }
    },
    "InstanceSnapshotQuotas": {
      "type": "object",
      "properties": {
        "filesystem": {
          "type": "integer",
          "format": "int64"
        },
        "full": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "LifecycleQuotas": {
      "type": "object",
      "properties": {
        "delete_after_sleep_min": {
          "type": "integer",
          "format": "int64",
          "title": "delete after sleep limits"
        },
        "delete_after_sleep_max": {
          "type": "integer",
          "format": "int64"
        },
        "delete_after_create_min": {
          "type": "integer",
          "format": "int64",
          "title": "delete after create limits"
        },
        "delete_after_create_max": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PersistentVolumeQuotas": {
      "type": "object",
      "properties": {
        "max_total_size": {
          "type": "integer",
          "format": "int64",
          "description": "MaxTotalSize for all volumes on a region (in Gigabyte / GB)."
        },
        "max_volume_size": {
          "type": "integer",
          "format": "int64",
          "description": "MaxVolumeSize for one volume (in Gigabyte / GB)."
        },
        "max_per_instance_size": {
          "type": "integer",
          "format": "int64",
          "description": "MaxPerInstanceSize for all volumes on an instance (in Gigabyte / GB)."
        }
      }
    },
    "Quotas": {
      "type": "object",
      "properties": {
        "apps": {
          "type": "string",
          "format": "int64"
        },
        "services": {
          "type": "string",
          "format": "int64"
        },
        "domains": {
          "type": "string",
          "format": "int64",
          "title": "Deprecated, use custom_domains instead"
        },
        "service_provisioning_concurrency": {
          "type": "string",
          "format": "int64"
        },
        "memory_mb": {
          "type": "string",
          "format": "int64"
        },
        "instance_types": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "max_organization_members": {
          "type": "string",
          "format": "int64"
        },
        "max_instances_by_type": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          }
        },
        "persistent_volumes_by_region": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PersistentVolumeQuotas"
          }
        },
        "custom_domains": {
          "type": "string",
          "format": "int64"
        },
        "domains_load_balancer": {
          "$ref": "#/definitions/DomainLoadBalancerQuotas"
        },
        "metrics_retention": {
          "type": "integer",
          "format": "int32",
          "title": "Time in days"
        },
        "logs_retention": {
          "type": "integer",
          "format": "int32",
          "title": "Time in days"
        },
        "access_reserved_subdomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The mapping between reserved_subdomain names and their value is in the code"
        },
        "proxy_ports": {
          "type": "integer",
          "format": "int64"
        },
        "scale_to_zero": {
          "$ref": "#/definitions/ScaleToZeroQuotas"
        },
        "archives": {
          "type": "string",
          "format": "int64"
        },
        "archive_max_size_mb": {
          "type": "string",
          "format": "int64"
        },
        "lifecycle": {
          "$ref": "#/definitions/LifecycleQuotas"
        },
        "max_projects": {
          "type": "string",
          "format": "int64"
        },
        "instance_snapshots": {
          "$ref": "#/definitions/InstanceSnapshotQuotas"
        }
      }
    },
    "ScaleToZeroQuotas": {
      "type": "object",
      "properties": {
        "is_deep_sleep_enabled": {
          "type": "boolean",
          "title": "deep sleep limits"
        },
        "deep_sleep_idle_delay_min": {
          "type": "integer",
          "format": "int64"
        },
        "deep_sleep_idle_delay_max": {
          "type": "integer",
          "format": "int64"
        },
        "is_light_sleep_enabled": {
          "type": "boolean",
          "title": "light sleep limits"
        },
        "light_sleep_idle_delay_min": {
          "type": "integer",
          "format": "int64"
        },
        "light_sleep_idle_delay_max": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "LoginRequest": {
      "type": "object",
      "example": {
        "email": "john@snow.com",
        "password": "..."
      },
      "properties": {
        "email": {
          "type": "string",
          "title": "User email"
        },
        "password": {
          "type": "string",
          "title": "User password"
        },
        "organization_id": {
          "type": "string",
          "title": "(Optional) Login into this organization"
        }
      }
    },
    "LogoutReply": {
      "type": "object"
    },
    "GetSubscriptionReply": {
      "type": "object",
      "properties": {
        "subscription": {
          "$ref": "#/definitions/Subscription"
        }
      }
    },
    "Subscription": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "organization_id": {
          "type": "string"
        },
        "stripe_subscription_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/Subscription.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "has_pending_update": {
          "type": "boolean"
        },
        "stripe_pending_invoice_id": {
          "type": "string"
        },
        "terminate_at": {
          "type": "string",
          "format": "date-time"
        },
        "canceled_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "current_period_start": {
          "type": "string",
          "format": "date-time"
        },
        "current_period_end": {
          "type": "string",
          "format": "date-time"
        },
        "currency": {
          "type": "string"
        },
        "amount_payable": {
          "type": "string",
          "format": "int64"
        },
        "amount_paid": {
          "type": "string",
          "format": "int64"
        },
        "amount_remaining": {
          "type": "string",
          "format": "int64"
        },
        "payment_failure": {
          "$ref": "#/definitions/Subscription.PaymentFailure"
        },
        "trialing": {
          "type": "boolean"
        },
        "trial_ends_at": {
          "type": "string",
          "format": "date-time"
        },
        "trial_max_spend": {
          "type": "string",
          "format": "int64"
        },
        "current_spend": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "Subscription.PaymentFailure": {
      "type": "object",
      "properties": {
        "failed_at": {
          "type": "string",
          "format": "date-time"
        },
        "next_attempt": {
          "type": "string",
          "format": "date-time"
        },
        "attempt_count": {
          "type": "string",
          "format": "int64"
        },
        "error_code": {
          "type": "string"
        },
        "error_reason": {
          "type": "string"
        },
        "error_type": {
          "type": "string"
        },
        "error_message": {
          "type": "string"
        },
        "payment_method_required": {
          "type": "boolean"
        },
        "redirect_url": {
          "type": "string"
        },
        "stripe_sdk": {
          "$ref": "#/definitions/Subscription.PaymentFailure.StripeSDK"
        }
      }
    },
    "Subscription.PaymentFailure.StripeSDK": {
      "type": "object",
      "properties": {
        "client_secret_key": {
          "type": "string"
        },
        "raw_json": {
          "type": "string"
        }
      }
    },
    "Subscription.Status": {
      "type": "string",
      "enum": [
        "INVALID",
        "CREATED",
        "ACTIVE",
        "WARNING",
        "URGENT",
        "CANCELING",
        "CANCELED",
        "TERMINATING",
        "TERMINATED"
      ],
      "default": "INVALID"
    },
    "AppsSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Total number of apps"
        },
        "by_status": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of apps grouped by status"
        }
      }
    },
    "DomainsSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Total number of domains"
        },
        "by_status": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of domains grouped by status"
        }
      }
    },
    "GetOrganizationSummaryReply": {
      "type": "object",
      "properties": {
        "summary": {
          "$ref": "#/definitions/OrganizationSummary",
          "title": "Organization usage summary"
        }
      }
    },
    "InstancesSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Total number of instances"
        },
        "by_type": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of instances grouped by type"
        }
      }
    },
    "MembersSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Number of members"
        },
        "invitations_by_status": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of invitations grouped by status"
        }
      }
    },
    "NeonPostgresSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Total number of databases"
        },
        "by_instance_type": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of databases grouped by instance type"
        }
      }
    },
    "OrganizationSummary": {
      "type": "object",
      "properties": {
        "organization_id": {
          "type": "string"
        },
        "instances": {
          "$ref": "#/definitions/InstancesSummary"
        },
        "apps": {
          "$ref": "#/definitions/AppsSummary"
        },
        "services": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/ServiceSummary"
          },
          "title": "Number of services grouped by type"
        },
        "domains": {
          "$ref": "#/definitions/DomainsSummary"
        },
        "secrets": {
          "$ref": "#/definitions/SecretsSummary"
        },
        "neon_postgres": {
          "$ref": "#/definitions/NeonPostgresSummary"
        },
        "members": {
          "$ref": "#/definitions/MembersSummary"
        }
      }
    },
    "SecretsSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Total number of secrets"
        },
        "by_type": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of secrets grouped by type"
        }
      }
    },
    "ServiceSummary": {
      "type": "object",
      "properties": {
        "total": {
          "type": "string",
          "format": "int64",
          "title": "Total number of services"
        },
        "by_status": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "title": "Number of services grouped by status"
        }
      }
    },
    "DeleteUserReply": {
      "type": "object",
      "properties": {
        "user": {
          "$ref": "#/definitions/User"
        }
      }
    },
    "Notification": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "activity": {
          "$ref": "#/definitions/Activity"
        },
        "is_read": {
          "type": "boolean"
        },
        "is_seen": {
          "type": "boolean"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "NotificationList": {
      "type": "object",
      "properties": {
        "notifications": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Notification"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "is_read": {
          "type": "boolean"
        },
        "is_seen": {
          "type": "boolean"
        },
        "unread": {
          "type": "integer",
          "format": "int64"
        },
        "unseen": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "kgitproxy.Branch": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "repository_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "is_default": {
          "type": "boolean"
        },
        "is_protected": {
          "type": "boolean"
        },
        "provider": {
          "$ref": "#/definitions/kgitproxy.RepositoryProvider"
        }
      }
    },
    "kgitproxy.GitHubRepository": {
      "type": "object",
      "properties": {
        "github_id": {
          "type": "string"
        }
      }
    },
    "kgitproxy.ListBranchesReply": {
      "type": "object",
      "properties": {
        "branches": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/kgitproxy.Branch"
          },
          "description": "The collection of branches."
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "description": "The limit in the request."
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "description": "The offset in the request."
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "description": "The total number of items."
        }
      }
    },
    "kgitproxy.ListRepositoriesReply": {
      "type": "object",
      "properties": {
        "repositories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/kgitproxy.Repository"
          },
          "description": "The collection of repositories."
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "description": "The limit in the request."
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "description": "The offset in the request."
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "description": "The total number of items."
        }
      }
    },
    "kgitproxy.Repository": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "is_private": {
          "type": "boolean"
        },
        "is_disabled": {
          "type": "boolean"
        },
        "default_branch": {
          "type": "string"
        },
        "provider": {
          "$ref": "#/definitions/kgitproxy.RepositoryProvider"
        },
        "last_push_date": {
          "type": "string",
          "format": "date-time"
        },
        "github": {
          "$ref": "#/definitions/kgitproxy.GitHubRepository"
        }
      }
    },
    "kgitproxy.RepositoryProvider": {
      "type": "string",
      "enum": [
        "INVALID_PROVIDER",
        "GITHUB"
      ],
      "default": "INVALID_PROVIDER"
    },
    "kgitproxy.ResyncOrganizationReply": {
      "type": "object"
    },
    "DatacenterListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "e.g. \"par1\""
        },
        "region_id": {
          "type": "string",
          "title": "e.g. \"par\""
        },
        "domain": {
          "type": "string",
          "title": "e.g. \"all-par1.infra.prod.koyeb.com\""
        },
        "coordinates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "e.g. \"8.856614\" ,\"2.352221\"?"
        },
        "use_gpu": {
          "type": "boolean",
          "title": "e.g. true"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "e.g. \"par\", \"fra\""
        }
      }
    },
    "ListDatacentersReply": {
      "type": "object",
      "properties": {
        "datacenters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DatacenterListItem"
          }
        }
      }
    },
    "CatalogGPUDetails": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The number of GPUs"
        },
        "brand": {
          "type": "string",
          "title": "The brand of GPU"
        },
        "memory": {
          "type": "string",
          "title": "GPU memory"
        },
        "name": {
          "type": "string",
          "title": "Name of GPU"
        }
      }
    },
    "CatalogInstance": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "The name of the instance"
        },
        "description": {
          "type": "string",
          "title": "A short description of the instance"
        },
        "vcpu": {
          "type": "integer",
          "format": "int64",
          "description": "The number of cpus. Deprecated. Use vcpu_shares instead."
        },
        "memory": {
          "type": "string",
          "title": "The memory in bytes in a format like 5MB"
        },
        "disk": {
          "type": "string",
          "title": "The size of the disk in bytes in a format like 5MB"
        },
        "price_per_second": {
          "type": "string",
          "title": "The price to pay per second"
        },
        "price_hourly": {
          "type": "string",
          "title": "The price to pay per hour"
        },
        "price_monthly": {
          "type": "string",
          "title": "The price to pay per month"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The regions where this instance type is available"
        },
        "status": {
          "type": "string",
          "title": "The status of the instance"
        },
        "require_plan": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The plan required to use instance"
        },
        "vcpu_shares": {
          "type": "number",
          "format": "float",
          "description": "The number of vcpu shares reserved for the instance."
        },
        "display_name": {
          "type": "string",
          "title": "The display name of the instance"
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Aliases"
        },
        "type": {
          "type": "string",
          "title": "The type of the instance (e.g. \"gpu\")"
        },
        "gpu": {
          "$ref": "#/definitions/CatalogGPUDetails",
          "title": "GPU details"
        },
        "service_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Allowed service types for this instance (e.g. [\"web\", \"worker\"])"
        },
        "volumes_enabled": {
          "type": "boolean",
          "title": "Are the volumes enabled for this instance type"
        },
        "light_sleep_enabled": {
          "type": "boolean",
          "title": "Is light sleep enabled for this instance type"
        }
      }
    },
    "CatalogInstanceListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "The name of the instance"
        },
        "description": {
          "type": "string",
          "title": "A short description of the instance"
        },
        "vcpu": {
          "type": "integer",
          "format": "int64",
          "description": "The number of cpus. Deprecated. Use vcpu_shares instead."
        },
        "memory": {
          "type": "string",
          "title": "The memory in bytes in a format like 5MB"
        },
        "disk": {
          "type": "string",
          "title": "The size of the disk in bytes in a format like 5MB"
        },
        "price_per_second": {
          "type": "string",
          "title": "The price to pay per second"
        },
        "price_hourly": {
          "type": "string",
          "title": "The price to pay per hour"
        },
        "price_monthly": {
          "type": "string",
          "title": "The price to pay per month"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The regions where this instance type is available"
        },
        "status": {
          "type": "string",
          "title": "The status of the instance"
        },
        "require_plan": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The plan required to use instance"
        },
        "vcpu_shares": {
          "type": "number",
          "format": "float",
          "description": "The number of vcpu shares reserved for the instance."
        },
        "display_name": {
          "type": "string",
          "title": "The display name of the instance"
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Aliases"
        },
        "type": {
          "type": "string",
          "title": "The type of the instance (e.g. \"gpu\")"
        },
        "gpu": {
          "$ref": "#/definitions/CatalogGPUDetails",
          "title": "GPU details"
        },
        "service_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Allowed service types for this instance (e.g. [\"web\", \"worker\"])"
        },
        "volumes_enabled": {
          "type": "boolean",
          "title": "Are the volumes enabled for this instance type"
        },
        "light_sleep_enabled": {
          "type": "boolean",
          "title": "Is light sleep enabled for this instance type"
        }
      }
    },
    "GetCatalogInstanceReply": {
      "type": "object",
      "properties": {
        "instance": {
          "$ref": "#/definitions/CatalogInstance",
          "title": "The instance retrieved"
        }
      }
    },
    "ListCatalogInstancesReply": {
      "type": "object",
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CatalogInstanceListItem"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "GetRegionReply": {
      "type": "object",
      "properties": {
        "region": {
          "$ref": "#/definitions/Region",
          "title": "The Region retrieved"
        }
      }
    },
    "ListRegionsReply": {
      "type": "object",
      "properties": {
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RegionListItem"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "Region": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "The id of the region"
        },
        "name": {
          "type": "string",
          "title": "The name of the region"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The coordinates of the region (lat/long)"
        },
        "status": {
          "type": "string",
          "title": "The status of the region"
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "A list of instances available in this region"
        },
        "datacenters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "A list of datacenters available in this region"
        },
        "volumes_enabled": {
          "type": "boolean",
          "title": "Are the volumes enabled for this instance type"
        },
        "scope": {
          "type": "string",
          "description": "The scope of the region, continent, metropolitan area, etc."
        }
      }
    },
    "RegionListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "The id of the region"
        },
        "name": {
          "type": "string",
          "title": "The name of the region"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The coordinates of the region (lat/long)"
        },
        "status": {
          "type": "string",
          "title": "The status of the region"
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "A list of instances available in this region"
        },
        "datacenters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "A list of datacenters available in this region"
        },
        "volumes_enabled": {
          "type": "boolean",
          "title": "Are the volumes enabled for this instance type"
        },
        "scope": {
          "type": "string",
          "description": "The scope of the region, continent, metropolitan area, etc."
        }
      }
    },
    "AvailabilityLevel": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "LOW",
        "MEDIUM",
        "HIGH"
      ],
      "default": "UNKNOWN"
    },
    "CatalogUsage": {
      "type": "object",
      "properties": {
        "instances": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/InstanceAvailability"
          }
        }
      }
    },
    "InstanceAvailability": {
      "type": "object",
      "properties": {
        "regions": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/RegionAvailability"
          }
        },
        "availability": {
          "$ref": "#/definitions/AvailabilityLevel"
        }
      }
    },
    "ListUsageReply": {
      "type": "object",
      "properties": {
        "usage": {
          "$ref": "#/definitions/CatalogUsage",
          "title": "The Usage retrieved"
        }
      }
    },
    "RegionAvailability": {
      "type": "object",
      "properties": {
        "availability": {
          "$ref": "#/definitions/AvailabilityLevel"
        }
      }
    },
    "ksearch.App": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "ksearch.GlobalDeployment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        }
      }
    },
    "ksearch.Instance": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "allocation_id": {
          "type": "string"
        }
      }
    },
    "ksearch.Organization": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "ksearch.RegionalDeployment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        }
      }
    },
    "ksearch.SearchReply": {
      "type": "object",
      "properties": {
        "organizations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.Organization"
          }
        },
        "users": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.User"
          }
        },
        "apps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.App"
          }
        },
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.Service"
          }
        },
        "global_deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.GlobalDeployment"
          }
        },
        "regional_deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.RegionalDeployment"
          }
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ksearch.Instance"
          }
        }
      }
    },
    "ksearch.Service": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "ksearch.User": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "github_user": {
          "type": "string"
        }
      }
    },
    "App": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "succeeded_at": {
          "type": "string",
          "format": "date-time"
        },
        "paused_at": {
          "type": "string",
          "format": "date-time"
        },
        "resumed_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "$ref": "#/definitions/App.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "domains": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Domain"
          }
        },
        "life_cycle": {
          "$ref": "#/definitions/AppLifeCycle"
        }
      }
    },
    "App.Status": {
      "type": "string",
      "enum": [
        "STARTING",
        "HEALTHY",
        "DEGRADED",
        "UNHEALTHY",
        "DELETING",
        "DELETED",
        "PAUSING",
        "PAUSED",
        "RESUMING"
      ],
      "default": "STARTING"
    },
    "AppEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "AppLifeCycle": {
      "type": "object",
      "properties": {
        "delete_when_empty": {
          "type": "boolean",
          "description": "If true, the app is deleted once it has no service left: either when\nits last service is deleted or, for an app that never had a service,\nonce it is older than 15 minutes."
        }
      }
    },
    "AppListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "domains": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Domain"
          }
        },
        "status": {
          "$ref": "#/definitions/App.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "CreateApp": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "life_cycle": {
          "$ref": "#/definitions/AppLifeCycle"
        }
      }
    },
    "CreateAppReply": {
      "type": "object",
      "properties": {
        "app": {
          "$ref": "#/definitions/App",
          "title": "The entity created"
        }
      }
    },
    "DeleteAppReply": {
      "type": "object"
    },
    "Domain": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "$ref": "#/definitions/Domain.Status"
        },
        "type": {
          "$ref": "#/definitions/Domain.Type"
        },
        "app_id": {
          "type": "string"
        },
        "deployment_group": {
          "type": "string"
        },
        "verified_at": {
          "type": "string",
          "format": "date-time"
        },
        "intended_cname": {
          "type": "string"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "cloudflare": {
          "$ref": "#/definitions/Domain.LoadBalancerCloudflare"
        },
        "koyeb": {
          "$ref": "#/definitions/Domain.LoadBalancerKoyeb"
        },
        "project_id": {
          "type": "string",
          "description": "The project ID this domain belongs to. Empty if the domain is organization-level."
        }
      }
    },
    "Domain.LoadBalancerCloudflare": {
      "type": "object"
    },
    "Domain.LoadBalancerKoyeb": {
      "type": "object",
      "properties": {
        "request_timeout_seconds": {
          "type": "integer",
          "format": "int64",
          "title": "Between 100 and 900"
        }
      }
    },
    "Domain.Status": {
      "type": "string",
      "enum": [
        "PENDING",
        "ACTIVE",
        "ERROR",
        "DELETING",
        "DELETED"
      ],
      "default": "PENDING"
    },
    "Domain.Type": {
      "type": "string",
      "enum": [
        "AUTOASSIGNED",
        "CUSTOM"
      ],
      "default": "AUTOASSIGNED",
      "title": "- AUTOASSIGNED: Domain like <appName>-<orgName>.koyeb.app"
    },
    "GetAppReply": {
      "type": "object",
      "properties": {
        "app": {
          "$ref": "#/definitions/App",
          "title": "The App retrieved"
        }
      }
    },
    "ListAppEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AppEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListAppsReply": {
      "type": "object",
      "properties": {
        "apps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AppListItem"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "PauseAppReply": {
      "type": "object"
    },
    "ResumeAppReply": {
      "type": "object"
    },
    "UpdateApp": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "life_cycle": {
          "$ref": "#/definitions/AppLifeCycle"
        }
      }
    },
    "UpdateAppReply": {
      "type": "object",
      "properties": {
        "app": {
          "$ref": "#/definitions/App",
          "title": "The entity updated"
        }
      }
    },
    "Archive": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The archive id, that can be referenced when creating or updating a service."
        },
        "organization_id": {
          "type": "string",
          "description": "Organization owning the archive."
        },
        "upload_url": {
          "type": "string",
          "description": "The URL where to upload the archive. This URL is signed and can only be\nused to upload the archive until `valid_until`."
        },
        "size": {
          "type": "string",
          "format": "uint64",
          "description": "The provisioned space for the archive."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date of creation of the archive."
        },
        "deleted_at": {
          "type": "string",
          "format": "date-time",
          "description": "This field is automatically set by Koyeb when the\narchive is garbage collected."
        },
        "download_url": {
          "type": "string",
          "description": "A signed URL to download the archive. Getting an archive signs a new one\nwhen it has less than 5 minutes left, valid for 24 hours."
        },
        "download_url_deadline": {
          "type": "string",
          "format": "date-time",
          "description": "When download_url expires."
        },
        "status": {
          "$ref": "#/definitions/ArchiveStatus"
        }
      }
    },
    "ArchiveStatus": {
      "type": "string",
      "enum": [
        "ARCHIVE_STATUS_INVALID",
        "ARCHIVE_STATUS_HEALTHY",
        "ARCHIVE_STATUS_DELETING",
        "ARCHIVE_STATUS_DELETED"
      ],
      "default": "ARCHIVE_STATUS_INVALID",
      "title": "- ARCHIVE_STATUS_INVALID: zero value, invalid\n - ARCHIVE_STATUS_HEALTHY: the archive can be deployed and downloaded\n - ARCHIVE_STATUS_DELETING: the archive is waiting for its file to be removed\n - ARCHIVE_STATUS_DELETED: the archive and its file are deleted"
    },
    "CreateArchive": {
      "type": "object",
      "properties": {
        "size": {
          "type": "string",
          "format": "uint64",
          "description": "How much space to provision for the archive, in bytes."
        }
      }
    },
    "CreateArchiveReply": {
      "type": "object",
      "properties": {
        "archive": {
          "$ref": "#/definitions/Archive"
        }
      }
    },
    "DeleteArchiveReply": {
      "type": "object"
    },
    "GetArchiveReply": {
      "type": "object",
      "properties": {
        "archive": {
          "$ref": "#/definitions/Archive"
        }
      }
    },
    "BasicAuthPolicy": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "SecurityPolicies": {
      "type": "object",
      "properties": {
        "basic_auths": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BasicAuthPolicy"
          }
        },
        "api_keys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ArchiveSource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "The ID of the archive to deploy"
        },
        "buildpack": {
          "$ref": "#/definitions/BuildpackBuilder"
        },
        "docker": {
          "$ref": "#/definitions/DockerBuilder"
        }
      }
    },
    "AutoRelease": {
      "type": "object",
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AutoRelease.Group"
          }
        }
      }
    },
    "AutoRelease.Group": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "repository": {
          "type": "string"
        },
        "git_ref": {
          "type": "string",
          "title": "A git ref to track (.e.g: refs/tags/<tag> or refs/heads/<branch>"
        },
        "latest_sha": {
          "type": "string",
          "title": "The last hash that was resolved (used to avoid triggering releases when things haven't changed)"
        }
      },
      "title": "Configuration extracted from the latest deployment in this deployment_group"
    },
    "BuildpackBuilder": {
      "type": "object",
      "properties": {
        "build_command": {
          "type": "string",
          "title": "A command used to override the build command, run after all build steps"
        },
        "run_command": {
          "type": "string",
          "title": "A command used to override the default run command"
        },
        "privileged": {
          "type": "boolean",
          "title": "A flag to run the container in privileged mode"
        }
      }
    },
    "ComposeReply": {
      "type": "object",
      "properties": {
        "app": {
          "$ref": "#/definitions/App"
        },
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Service"
          }
        }
      }
    },
    "ConfigFile": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "title": "the path where the file is copied"
        },
        "permissions": {
          "type": "string",
          "title": "the permissions of the file in format 0644"
        },
        "content": {
          "type": "string",
          "title": "the content of the file"
        }
      }
    },
    "CreateCompose": {
      "type": "object",
      "properties": {
        "app": {
          "$ref": "#/definitions/CreateApp"
        },
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CreateService"
          }
        }
      }
    },
    "CreateService": {
      "type": "object",
      "properties": {
        "app_id": {
          "type": "string"
        },
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        },
        "life_cycle": {
          "$ref": "#/definitions/ServiceLifeCycle"
        },
        "instance_snapshot_id": {
          "type": "string",
          "title": "Instance Snapshot used to boot the Instances of this deployment\nWith a Full Snapshot, definition must not be provided"
        },
        "name": {
          "type": "string",
          "title": "Service name, set at creation time only. If empty, fallback to definition.name"
        },
        "service_account_id": {
          "type": "string",
          "description": "(Optional) The Albe service account ID to associate with the service.\nImmutable after creation."
        }
      }
    },
    "DatabaseSource": {
      "type": "object",
      "properties": {
        "neon_postgres": {
          "$ref": "#/definitions/NeonPostgresDatabase"
        }
      }
    },
    "DeploymentDefinition": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Service name. Deprecated, set it directly in the Service when creating it."
        },
        "type": {
          "$ref": "#/definitions/DeploymentDefinition.Type"
        },
        "strategy": {
          "$ref": "#/definitions/DeploymentStrategy"
        },
        "routes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentRoute"
          }
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentPort"
          }
        },
        "proxy_ports": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentProxyPort"
          }
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentEnv"
          }
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "scalings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentScaling"
          }
        },
        "instance_types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentInstanceType"
          }
        },
        "health_checks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentHealthCheck"
          }
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentVolume"
          }
        },
        "config_files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConfigFile"
          }
        },
        "skip_cache": {
          "type": "boolean"
        },
        "mesh": {
          "$ref": "#/definitions/DeploymentMesh"
        },
        "network_policy": {
          "$ref": "#/definitions/NetworkPolicy"
        },
        "docker": {
          "$ref": "#/definitions/DockerSource"
        },
        "git": {
          "$ref": "#/definitions/GitSource"
        },
        "database": {
          "$ref": "#/definitions/DatabaseSource"
        },
        "archive": {
          "$ref": "#/definitions/ArchiveSource"
        }
      }
    },
    "DeploymentDefinition.Type": {
      "type": "string",
      "enum": [
        "INVALID",
        "WEB",
        "WORKER",
        "DATABASE",
        "SANDBOX"
      ],
      "default": "INVALID"
    },
    "DeploymentEnv": {
      "type": "object",
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "secret": {
          "type": "string"
        }
      }
    },
    "DeploymentHealthCheck": {
      "type": "object",
      "properties": {
        "grace_period": {
          "type": "integer",
          "format": "int64",
          "title": "An optional initial period in seconds to wait for the instance to become healthy, default is 5s"
        },
        "interval": {
          "type": "integer",
          "format": "int64",
          "title": "An optional period in seconds between two health checks, default is 60s"
        },
        "restart_limit": {
          "type": "integer",
          "format": "int64",
          "title": "An optional number of consecutive failures before attempting to restart the service, default is 3"
        },
        "timeout": {
          "type": "integer",
          "format": "int64",
          "title": "An optional maximum time to wait in seconds before considering the check as a failure, default is 5s"
        },
        "tcp": {
          "$ref": "#/definitions/TCPHealthCheck"
        },
        "http": {
          "$ref": "#/definitions/HTTPHealthCheck"
        },
        "grpc": {
          "$ref": "#/definitions/GRPCHealthCheck"
        }
      }
    },
    "DeploymentInstanceType": {
      "type": "object",
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "type": {
          "type": "string"
        }
      }
    },
    "DeploymentMesh": {
      "type": "string",
      "enum": [
        "DEPLOYMENT_MESH_AUTO",
        "DEPLOYMENT_MESH_ENABLED",
        "DEPLOYMENT_MESH_DISABLED"
      ],
      "default": "DEPLOYMENT_MESH_AUTO"
    },
    "DeploymentPort": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "protocol": {
          "type": "string",
          "title": "One of http, http2, tcp"
        }
      }
    },
    "DeploymentProxyPort": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "protocol": {
          "$ref": "#/definitions/ProxyPortProtocol"
        }
      }
    },
    "DeploymentRoute": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "path": {
          "type": "string"
        },
        "security_policies": {
          "$ref": "#/definitions/SecurityPolicies"
        }
      }
    },
    "DeploymentScaling": {
      "type": "object",
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "min": {
          "type": "integer",
          "format": "int64"
        },
        "max": {
          "type": "integer",
          "format": "int64"
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentScalingTarget"
          }
        }
      }
    },
    "DeploymentScalingTarget": {
      "type": "object",
      "properties": {
        "average_cpu": {
          "$ref": "#/definitions/DeploymentScalingTargetAverageCPU"
        },
        "average_mem": {
          "$ref": "#/definitions/DeploymentScalingTargetAverageMem"
        },
        "requests_per_second": {
          "$ref": "#/definitions/DeploymentScalingTargetRequestsPerSecond"
        },
        "concurrent_requests": {
          "$ref": "#/definitions/DeploymentScalingTargetConcurrentRequests"
        },
        "requests_response_time": {
          "$ref": "#/definitions/DeploymentScalingTargetRequestsResponseTime"
        },
        "sleep_idle_delay": {
          "$ref": "#/definitions/DeploymentScalingTargetSleepIdleDelay"
        }
      }
    },
    "DeploymentScalingTargetAverageCPU": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DeploymentScalingTargetAverageMem": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DeploymentScalingTargetConcurrentRequests": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DeploymentScalingTargetRequestsPerSecond": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DeploymentScalingTargetRequestsResponseTime": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64"
        },
        "quantile": {
          "type": "integer",
          "format": "int64",
          "description": "The quantile to use for autoscaling. For example, set to 95 to use the 95th\npercentile (p95) for autoscaling.  Valid values are between 0 and 100."
        }
      }
    },
    "DeploymentScalingTargetSleepIdleDelay": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64",
          "description": "DEPRECATED: use deep_sleep_value instead.\nDelay in seconds after which a service which received 0 request is put to deep sleep."
        },
        "deep_sleep_value": {
          "type": "integer",
          "format": "int64",
          "description": "Delay in seconds after which a service which received 0 request is put to deep sleep."
        },
        "light_sleep_value": {
          "type": "integer",
          "format": "int64",
          "description": "Delay in seconds after which a service which received 0 request is put to light sleep."
        }
      }
    },
    "DeploymentStrategy": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/DeploymentStrategyType",
          "title": "Strategy type"
        }
      }
    },
    "DeploymentStrategyType": {
      "type": "string",
      "enum": [
        "DEPLOYMENT_STRATEGY_TYPE_INVALID",
        "DEPLOYMENT_STRATEGY_TYPE_DEFAULT",
        "DEPLOYMENT_STRATEGY_TYPE_CANARY",
        "DEPLOYMENT_STRATEGY_TYPE_ROLLING",
        "DEPLOYMENT_STRATEGY_TYPE_BLUE_GREEN",
        "DEPLOYMENT_STRATEGY_TYPE_IMMEDIATE"
      ],
      "default": "DEPLOYMENT_STRATEGY_TYPE_INVALID",
      "description": " - DEPLOYMENT_STRATEGY_TYPE_INVALID: DEPRECATED: Use DEPLOYMENT_STRATEGY_TYPE_DEFAULT instead.\n - DEPLOYMENT_STRATEGY_TYPE_DEFAULT: Default/unspecified strategy (resolves to platform default, currently ROLLING).\n - DEPLOYMENT_STRATEGY_TYPE_CANARY: Use canary strategy.\n - DEPLOYMENT_STRATEGY_TYPE_ROLLING: Use rolling strategy.\n - DEPLOYMENT_STRATEGY_TYPE_BLUE_GREEN: Use blue green strategy.\n - DEPLOYMENT_STRATEGY_TYPE_IMMEDIATE: Use immediate strategy."
    },
    "DeploymentVolume": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "the id of the volume"
        },
        "path": {
          "type": "string",
          "title": "the path where the volume is mounted to"
        },
        "replica_index": {
          "type": "integer",
          "format": "int64",
          "title": "optionally, explicitly choose the replica index to mount the volume to"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "scope of the associated"
        }
      }
    },
    "DesiredDeployment": {
      "type": "object",
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DesiredDeployment.Group"
          }
        }
      }
    },
    "DesiredDeployment.Group": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "deployment_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "DockerBuilder": {
      "type": "object",
      "properties": {
        "dockerfile": {
          "type": "string",
          "title": "A path to the Dockerfile"
        },
        "entrypoint": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The docker ENTRYPOINT"
        },
        "command": {
          "type": "string",
          "title": "The docker CMD"
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The docker CMD args"
        },
        "target": {
          "type": "string",
          "title": "The target for multi-stage builds"
        },
        "privileged": {
          "type": "boolean",
          "title": "A flag to run the container in privileged mode"
        }
      }
    },
    "DockerSource": {
      "type": "object",
      "properties": {
        "image": {
          "type": "string"
        },
        "command": {
          "type": "string"
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "image_registry_secret": {
          "type": "string"
        },
        "entrypoint": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "privileged": {
          "type": "boolean",
          "title": "A flag to run the container in privileged mode"
        }
      }
    },
    "EgressPolicy": {
      "type": "object",
      "properties": {
        "mode": {
          "$ref": "#/definitions/EgressPolicyMode"
        },
        "allow_list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NetworkPolicyDestination"
          },
          "description": "Allowed destinations (deny-by-default semantics under DENY_ALL).\nIgnored when mode is DEFAULT."
        }
      }
    },
    "EgressPolicyMode": {
      "type": "string",
      "enum": [
        "EGRESS_POLICY_MODE_DEFAULT",
        "EGRESS_POLICY_MODE_DENY_ALL"
      ],
      "default": "EGRESS_POLICY_MODE_DEFAULT"
    },
    "GRPCHealthCheck": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64",
          "title": "The port to use to perform the health check, must be declared in the ports section"
        },
        "service": {
          "type": "string",
          "title": "An optional gRPC service name placed in the gRPC HealthCheckRequest; empty means the gRPC default"
        }
      }
    },
    "GitSource": {
      "type": "object",
      "properties": {
        "repository": {
          "type": "string",
          "description": "A url to a git repository (contains the provider as well) .e.g: github.com/koyeb/test."
        },
        "branch": {
          "type": "string",
          "title": "A git branch that will be tracked for new commits and deployments will be created"
        },
        "tag": {
          "type": "string",
          "title": "A git tag that should be built"
        },
        "sha": {
          "type": "string",
          "title": "A git commit that should be built (useful for pinning to a commit, this will always be set when a deployment is created by a code push)"
        },
        "build_command": {
          "type": "string",
          "title": "A command used to override the build command, run after all build steps \u2014 deprecated, use buildpack.build_command instead"
        },
        "run_command": {
          "type": "string",
          "title": "A command used to override the default run command - deprecated, use buildpack.run_command instead"
        },
        "no_deploy_on_push": {
          "type": "boolean",
          "title": "A flag to disable a new deployment when a push event is detected"
        },
        "workdir": {
          "type": "string",
          "title": "A subdirectory to use as the build directory"
        },
        "buildpack": {
          "$ref": "#/definitions/BuildpackBuilder"
        },
        "docker": {
          "$ref": "#/definitions/DockerBuilder"
        },
        "credential_source": {
          "type": "string",
          "description": "Credentials can come from a specific source or default to using Github (when unset or set to \"github\")."
        },
        "skip_submodules": {
          "type": "boolean",
          "description": "A flag to skip initializing git submodules when cloning the repository."
        }
      }
    },
    "HTTPHeader": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "HTTPHealthCheck": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64",
          "title": "The port to use to perform the health check, must be declared in the ports section"
        },
        "path": {
          "type": "string",
          "title": "The path to use to perform the HTTP health check"
        },
        "method": {
          "type": "string",
          "title": "An optional HTTP method to use to perform the health check, default is GET"
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HTTPHeader"
          },
          "title": "An optional list of HTTP headers to provide when performing the request, default is empty"
        }
      }
    },
    "Mesh": {
      "type": "object",
      "properties": {
        "scope": {
          "$ref": "#/definitions/MeshScope"
        },
        "name": {
          "type": "string",
          "description": "Custom mesh name \u2014 required when scope is MESH_SCOPE_CUSTOM, ignored\notherwise. Combined with the workspace ID server-side to ensure the same\ncustom name in different workspaces never collides."
        }
      },
      "description": "Mesh groups the mesh scope selector and the (optional) custom mesh name.\nKept inside NetworkPolicy so scope/name and other network-policy dimensions\n(egress, future inbound) live together."
    },
    "MeshScope": {
      "type": "string",
      "enum": [
        "MESH_SCOPE_UNSPECIFIED",
        "MESH_SCOPE_ORGANIZATION",
        "MESH_SCOPE_WORKSPACE",
        "MESH_SCOPE_APP",
        "MESH_SCOPE_CUSTOM"
      ],
      "default": "MESH_SCOPE_UNSPECIFIED",
      "description": "MeshScope selects which set of services can communicate over the mesh.\nOnly meaningful when the mesh is on (i.e. DeploymentMesh is ENABLED, or\nAUTO and the service is eligible). UNSPECIFIED defers to the\norganization-level default (workspace-scoped since KOYEB-6062, legacy\norganizations opted back to organization scope via\nuse_organization_level_mesh).\n\n - MESH_SCOPE_ORGANIZATION: Private communication between services in the same organization\n(mesh label k-<orgId>).\n - MESH_SCOPE_WORKSPACE: Private communication between services in the same workspace/project\n(mesh label pr_<projectId>).\n - MESH_SCOPE_APP: Private communication between services in the same app\n(mesh label app_<appId>).\n - MESH_SCOPE_CUSTOM: Private communication between services in the same workspace that\nshare the same NetworkPolicy.mesh.name. Server-computed label is\nscoped by workspace, so the same custom name in different workspaces\nnever collides."
    },
    "NeonPostgresDatabase": {
      "type": "object",
      "properties": {
        "pg_version": {
          "type": "integer",
          "format": "int64"
        },
        "region": {
          "type": "string"
        },
        "instance_type": {
          "type": "string"
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NeonPostgresDatabase.NeonRole"
          }
        },
        "databases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NeonPostgresDatabase.NeonDatabase"
          }
        }
      }
    },
    "NeonPostgresDatabase.NeonDatabase": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "owner": {
          "type": "string"
        }
      }
    },
    "NeonPostgresDatabase.NeonRole": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "string"
        }
      }
    },
    "NetworkPolicy": {
      "type": "object",
      "properties": {
        "egress": {
          "$ref": "#/definitions/EgressPolicy"
        },
        "mesh": {
          "$ref": "#/definitions/Mesh",
          "description": "Mesh configuration. Orthogonal to the top-level DeploymentDefinition.mesh\nfield, which only toggles the mesh on/off. This sub-message controls\nWHICH services can reach each other over the mesh when it is on."
        }
      }
    },
    "NetworkPolicyDestination": {
      "type": "object",
      "properties": {
        "cidr": {
          "type": "string",
          "description": "IPv4 or IPv6 CIDR (e.g. \"10.0.0.0/8\", \"2001:db8::/32\").\nBare IPs are accepted at the API boundary and normalized to /32\n(IPv4) or /128 (IPv6) before storage."
        }
      }
    },
    "ProxyPortProtocol": {
      "type": "string",
      "enum": [
        "tcp"
      ],
      "default": "tcp"
    },
    "Service": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "succeeded_at": {
          "type": "string",
          "format": "date-time"
        },
        "paused_at": {
          "type": "string",
          "format": "date-time"
        },
        "resumed_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/Service.Type"
        },
        "organization_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/Service.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "active_deployment_id": {
          "type": "string"
        },
        "latest_deployment_id": {
          "type": "string"
        },
        "last_provisioned_deployment_id": {
          "type": "string"
        },
        "state": {
          "$ref": "#/definitions/ServiceState",
          "title": "Legacy stuff"
        },
        "life_cycle": {
          "$ref": "#/definitions/ServiceLifeCycle"
        },
        "service_account_id": {
          "type": "string",
          "title": "(Optional) The Albe service account ID associated with this service"
        }
      }
    },
    "Service.Status": {
      "type": "string",
      "enum": [
        "STARTING",
        "HEALTHY",
        "DEGRADED",
        "UNHEALTHY",
        "DELETING",
        "DELETED",
        "PAUSING",
        "PAUSED",
        "RESUMING"
      ],
      "default": "STARTING"
    },
    "Service.Type": {
      "type": "string",
      "enum": [
        "INVALID_TYPE",
        "WEB",
        "WORKER",
        "DATABASE",
        "SANDBOX"
      ],
      "default": "INVALID_TYPE"
    },
    "ServiceLifeCycle": {
      "type": "object",
      "properties": {
        "delete_after_sleep": {
          "type": "integer",
          "format": "int64"
        },
        "delete_after_create": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "ServiceState": {
      "type": "object",
      "properties": {
        "desired_deployment": {
          "$ref": "#/definitions/DesiredDeployment"
        },
        "auto_release": {
          "$ref": "#/definitions/AutoRelease"
        }
      }
    },
    "TCPHealthCheck": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64",
          "title": "The port to use to perform the health check, must be declared in the ports section"
        }
      }
    },
    "ArchiveDeploymentMetadata": {
      "type": "object",
      "properties": {
        "last_provisioned_deployment_id": {
          "type": "string"
        }
      }
    },
    "CancelDeploymentReply": {
      "type": "object"
    },
    "DatabaseDeploymentMetadata": {
      "type": "object",
      "properties": {
        "neon_postgres": {
          "$ref": "#/definitions/NeonPostgresDatabaseDeploymentMetadata"
        }
      }
    },
    "Deployment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "allocated_at": {
          "type": "string",
          "format": "date-time"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "succeeded_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "parent_id": {
          "type": "string"
        },
        "child_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/Deployment.Status"
        },
        "metadata": {
          "$ref": "#/definitions/DeploymentMetadata"
        },
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "provisioning_info": {
          "$ref": "#/definitions/DeploymentProvisioningInfo"
        },
        "database_info": {
          "$ref": "#/definitions/DeploymentDatabaseInfo"
        },
        "skip_build": {
          "type": "boolean"
        },
        "role": {
          "$ref": "#/definitions/Deployment.Role"
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "deployment_group": {
          "type": "string"
        },
        "instance_snapshot_id": {
          "type": "string",
          "title": "Instance Snapshot used to boot the Instances of this deployment"
        },
        "created_by": {
          "type": "string",
          "description": "CreatedBy is the user_id of the user that called CreateService or UpdateService.\nIt's optional because CreateService or UpdateService can be called by a machine,\nusing a token that's organization scoped, not user scoped."
        }
      }
    },
    "Deployment.Role": {
      "type": "string",
      "enum": [
        "INVALID",
        "ACTIVE",
        "UPCOMING",
        "CURRENT"
      ],
      "default": "INVALID"
    },
    "Deployment.Status": {
      "type": "string",
      "enum": [
        "PENDING",
        "PROVISIONING",
        "SCHEDULED",
        "CANCELING",
        "CANCELED",
        "ALLOCATING",
        "STARTING",
        "HEALTHY",
        "DEGRADED",
        "UNHEALTHY",
        "STOPPING",
        "STOPPED",
        "ERRORING",
        "ERROR",
        "STASHED",
        "SLEEPING"
      ],
      "default": "PENDING"
    },
    "DeploymentDatabaseInfo": {
      "type": "object",
      "properties": {
        "neon_postgres": {
          "$ref": "#/definitions/DeploymentNeonPostgresDatabaseInfo"
        }
      }
    },
    "DeploymentEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "deployment_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "DeploymentListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "allocated_at": {
          "type": "string",
          "format": "date-time"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "succeeded_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "parent_id": {
          "type": "string"
        },
        "child_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/Deployment.Status"
        },
        "metadata": {
          "$ref": "#/definitions/DeploymentMetadata"
        },
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "provisioning_info": {
          "$ref": "#/definitions/DeploymentProvisioningInfo"
        },
        "database_info": {
          "$ref": "#/definitions/DeploymentDatabaseInfo"
        },
        "instance_snapshot_id": {
          "type": "string",
          "title": "Instance Snapshot used to boot the Instances of this deployment"
        },
        "created_by": {
          "type": "string",
          "description": "CreatedBy is the user_id of the user that called CreateService or UpdateService.\nIt's optional because CreateService or UpdateService can be called by a machine,\nusing a token that's organization scoped, not user scoped."
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "deployment_group": {
          "type": "string"
        }
      }
    },
    "DeploymentMetadata": {
      "type": "object",
      "properties": {
        "trigger": {
          "$ref": "#/definitions/TriggerDeploymentMetadata"
        },
        "database": {
          "$ref": "#/definitions/DatabaseDeploymentMetadata"
        },
        "git": {
          "$ref": "#/definitions/GitDeploymentMetadata"
        },
        "archive": {
          "$ref": "#/definitions/ArchiveDeploymentMetadata"
        },
        "proxy_ports": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentProxyPortMetadata"
          }
        },
        "sandbox": {
          "$ref": "#/definitions/SandboxMetadata"
        },
        "docker": {
          "$ref": "#/definitions/DockerDeploymentMetadata"
        }
      }
    },
    "DeploymentNeonPostgresDatabaseInfo": {
      "type": "object",
      "properties": {
        "active_time_seconds": {
          "type": "string",
          "format": "int64"
        },
        "compute_time_seconds": {
          "type": "string",
          "format": "int64"
        },
        "written_data_bytes": {
          "type": "string",
          "format": "int64"
        },
        "data_transfer_bytes": {
          "type": "string",
          "format": "int64"
        },
        "data_storage_bytes_hour": {
          "type": "string",
          "format": "int64"
        },
        "server_host": {
          "type": "string"
        },
        "server_port": {
          "type": "integer",
          "format": "int64"
        },
        "endpoint_state": {
          "type": "string"
        },
        "endpoint_last_active": {
          "type": "string",
          "format": "date-time"
        },
        "default_branch_id": {
          "type": "string"
        },
        "default_branch_name": {
          "type": "string"
        },
        "default_branch_state": {
          "type": "string"
        },
        "default_branch_logical_size": {
          "type": "string",
          "format": "int64"
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentNeonPostgresDatabaseInfoRole"
          }
        }
      }
    },
    "DeploymentNeonPostgresDatabaseInfoRole": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "secret_id": {
          "type": "string"
        }
      }
    },
    "DeploymentProvisioningInfo": {
      "type": "object",
      "properties": {
        "sha": {
          "type": "string",
          "description": "The git sha for this build (we resolve the reference at the start of the build)."
        },
        "image": {
          "type": "string",
          "description": "The docker image built as a result of this build."
        },
        "stages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentProvisioningInfo.Stage"
          },
          "description": "Some info about the build."
        }
      }
    },
    "DeploymentProvisioningInfo.Stage": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "finished_at": {
          "type": "string",
          "format": "date-time"
        },
        "build_attempts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt"
          }
        }
      }
    },
    "DeploymentProvisioningInfo.Stage.BuildAttempt": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "status": {
          "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "finished_at": {
          "type": "string",
          "format": "date-time"
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep"
          }
        },
        "image_pushed": {
          "type": "boolean"
        },
        "internal_failure": {
          "type": "boolean"
        },
        "retryable_failure": {
          "type": "boolean"
        },
        "wait_completion": {
          "type": "boolean",
          "description": "This flag is used to finalize the build, and continue the deployment in case of success, or cancel and potentially retry the build in case of failure."
        }
      }
    },
    "DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "finished_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "DeploymentProvisioningInfo.Stage.Status": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "PENDING",
        "RUNNING",
        "FAILED",
        "COMPLETED",
        "ABORTED"
      ],
      "default": "UNKNOWN"
    },
    "DeploymentProxyPortMetadata": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "public_port": {
          "type": "integer",
          "format": "int64"
        },
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "protocol": {
          "$ref": "#/definitions/ProxyPortProtocol"
        }
      }
    },
    "DockerDeploymentMetadata": {
      "type": "object",
      "properties": {
        "resolved_digest": {
          "type": "string",
          "description": "Digest of the resolved image manifest (\"sha256:...\")."
        },
        "resolved_entrypoint": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "ENTRYPOINT from the image config."
        },
        "resolved_cmd": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CMD from the image config."
        }
      },
      "description": "Image metadata resolved at provisioning time for docker-source\ndeployments without an explicit command."
    },
    "GetDeploymentReply": {
      "type": "object",
      "properties": {
        "deployment": {
          "$ref": "#/definitions/Deployment"
        }
      }
    },
    "GetDeploymentScalingReply": {
      "type": "object",
      "properties": {
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GetDeploymentScalingReplyItem"
          },
          "title": "The replicas"
        }
      }
    },
    "GetDeploymentScalingReplyItem": {
      "type": "object",
      "properties": {
        "region": {
          "type": "string",
          "title": "The replica region"
        },
        "replica_index": {
          "type": "integer",
          "format": "int64"
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Instance"
          },
          "description": "An array of `active` and `starting` instances.\n\nStatus of the active instance (and if none the most recent instance)\n string status = 4;\n Status message of the active instance (and if none the most recent instance)\n string message = 5;"
        }
      }
    },
    "GitDeploymentMetadata": {
      "type": "object",
      "properties": {
        "last_provisioned_deployment_id": {
          "type": "string"
        },
        "git_env": {
          "$ref": "#/definitions/GitEnvDeploymentMetadata"
        }
      }
    },
    "GitEnvDeploymentMetadata": {
      "type": "object",
      "properties": {
        "sha": {
          "type": "string"
        },
        "commit_author": {
          "type": "string"
        },
        "commit_message": {
          "type": "string"
        }
      }
    },
    "Instance": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "regional_deployment_id": {
          "type": "string"
        },
        "allocation_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "replica_index": {
          "type": "integer",
          "format": "int64"
        },
        "region": {
          "type": "string"
        },
        "datacenter": {
          "type": "string"
        },
        "hypervisor": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/Instance.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "succeeded_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "xyz_deployment_id": {
          "type": "string",
          "description": "WARNING: Please don't use the following attribute.\nKoyeb doesn't guarantee backwards compatible breaking change and reserve the right to completely drop it without notice.\nUSE AT YOUR OWN RISK."
        }
      }
    },
    "Instance.Status": {
      "type": "string",
      "enum": [
        "ALLOCATING",
        "STARTING",
        "HEALTHY",
        "UNHEALTHY",
        "STOPPING",
        "STOPPED",
        "ERROR",
        "SLEEPING"
      ],
      "default": "ALLOCATING"
    },
    "ListDeploymentEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListDeploymentsReply": {
      "type": "object",
      "properties": {
        "deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentListItem"
          },
          "title": "The collection of deployments"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "NeonPostgresDatabaseDeploymentMetadata": {
      "type": "object",
      "properties": {
        "reset_role_passwords": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "SandboxMetadata": {
      "type": "object",
      "properties": {
        "public_url": {
          "type": "string"
        },
        "routing_key": {
          "type": "string"
        }
      }
    },
    "TriggerDeploymentMetadata": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/TriggerDeploymentMetadata.TriggerType"
        },
        "actor": {
          "$ref": "#/definitions/TriggerDeploymentMetadata.ActorType"
        },
        "git": {
          "$ref": "#/definitions/TriggerGitDeploymentMetadata"
        }
      }
    },
    "TriggerDeploymentMetadata.ActorType": {
      "type": "string",
      "enum": [
        "UNKNOWN_ACTOR",
        "USER",
        "SYSTEM"
      ],
      "default": "UNKNOWN_ACTOR"
    },
    "TriggerDeploymentMetadata.TriggerType": {
      "type": "string",
      "enum": [
        "UNKNOWN_TYPE",
        "GIT",
        "RESUME",
        "DATABASE_SYNC"
      ],
      "default": "UNKNOWN_TYPE"
    },
    "TriggerGitDeploymentMetadata": {
      "type": "object",
      "properties": {
        "provider": {
          "$ref": "#/definitions/TriggerGitDeploymentMetadata.Provider"
        },
        "repository": {
          "type": "string"
        },
        "branch": {
          "type": "string"
        },
        "sha": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "sender_username": {
          "type": "string"
        },
        "sender_avatar_url": {
          "type": "string"
        },
        "sender_profile_url": {
          "type": "string"
        }
      }
    },
    "TriggerGitDeploymentMetadata.Provider": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "GITHUB"
      ],
      "default": "UNKNOWN"
    },
    "VerifyDockerImageReply": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "title": "Whether the image is accessible or not"
        },
        "reason": {
          "type": "string",
          "title": "(Optional) If the image is not accessible, the reason"
        },
        "code": {
          "$ref": "#/definitions/VerifyDockerImageReply.ErrCode",
          "title": "(Optional) If the image is not accessible, return an error code"
        }
      }
    },
    "VerifyDockerImageReply.ErrCode": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "AUTH_ACCESS_DENIED",
        "ANON_ACCESS_DENIED",
        "AUTH_NOT_FOUND",
        "ANON_NOT_FOUND",
        "REGISTRY_ERROR",
        "TIMEOUT",
        "DNS",
        "MALFORMED",
        "INVALID_OS",
        "INVALID_ARCH",
        "INVALID_SCHEME",
        "GENERIC"
      ],
      "default": "UNKNOWN",
      "description": "- UNKNOWN: Default value\n - AUTH_ACCESS_DENIED: The registry denied access to an authenticated request\n - ANON_ACCESS_DENIED: The registry denied access to an anonymous request\n - AUTH_NOT_FOUND: The image has not been found after an authenticated request\n - ANON_NOT_FOUND: The image has not been found after an anonymous request\n - REGISTRY_ERROR: The registry returned an error\n - TIMEOUT: The request to the registry timed out\n - DNS: There was an error trying to resolve the name of the registry\n - MALFORMED: The provided image name is malformed\n - INVALID_OS: The operating system is not supported\n - INVALID_ARCH: The architecture is not supported\n - INVALID_SCHEME: The scheme is not https\n - GENERIC: Generic catch-all error code",
      "title": "The error code associated to each specific failure mode"
    },
    "CreateDomain": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/Domain.Type"
        },
        "app_id": {
          "type": "string",
          "title": "to auto-attach to an app. Optional"
        },
        "cloudflare": {
          "$ref": "#/definitions/Domain.LoadBalancerCloudflare"
        },
        "koyeb": {
          "$ref": "#/definitions/Domain.LoadBalancerKoyeb",
          "description": "Only applicable to auto-assigned domains, for organizations on the Scale plan."
        }
      }
    },
    "CreateDomainReply": {
      "type": "object",
      "properties": {
        "domain": {
          "$ref": "#/definitions/Domain"
        }
      }
    },
    "DeleteDomainReply": {
      "type": "object"
    },
    "GetDomainReply": {
      "type": "object",
      "properties": {
        "domain": {
          "$ref": "#/definitions/Domain"
        }
      }
    },
    "ListDomainsReply": {
      "type": "object",
      "properties": {
        "domains": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Domain"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        }
      }
    },
    "RefreshDomainStatusReply": {
      "type": "object"
    },
    "UpdateDomain": {
      "type": "object",
      "properties": {
        "app_id": {
          "type": "string",
          "description": "To attach or detach from an app for custom domain."
        },
        "subdomain": {
          "type": "string",
          "description": "To change subdomain for auto-assigned domain."
        }
      }
    },
    "UpdateDomainReply": {
      "type": "object",
      "properties": {
        "domain": {
          "$ref": "#/definitions/Domain"
        }
      }
    },
    "CreateInstanceSnapshotReply": {
      "type": "object",
      "properties": {
        "instance_snapshot": {
          "$ref": "#/definitions/InstanceSnapshot"
        }
      }
    },
    "CreateInstanceSnapshotRequest": {
      "type": "object",
      "properties": {
        "instance_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/InstanceSnapshotType"
        }
      }
    },
    "DeleteInstanceSnapshotReply": {
      "type": "object",
      "properties": {
        "instance_snapshot": {
          "$ref": "#/definitions/InstanceSnapshot"
        }
      }
    },
    "GetInstanceSnapshotReply": {
      "type": "object",
      "properties": {
        "instance_snapshot": {
          "$ref": "#/definitions/InstanceSnapshot"
        }
      }
    },
    "InstanceSnapshot": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "available_at": {
          "type": "string",
          "format": "date-time"
        },
        "deleted_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "deployment_id": {
          "type": "string"
        },
        "regional_deployment_id": {
          "type": "string"
        },
        "instance_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/InstanceSnapshotStatus"
        },
        "type": {
          "$ref": "#/definitions/InstanceSnapshotType"
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "InstanceSnapshotEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "instance_snapshot_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "InstanceSnapshotStatus": {
      "type": "string",
      "enum": [
        "INSTANCE_SNAPSHOT_STATUS_INVALID",
        "INSTANCE_SNAPSHOT_STATUS_CREATING",
        "INSTANCE_SNAPSHOT_STATUS_AVAILABLE",
        "INSTANCE_SNAPSHOT_STATUS_ERROR",
        "INSTANCE_SNAPSHOT_STATUS_DELETING",
        "INSTANCE_SNAPSHOT_STATUS_DELETED"
      ],
      "default": "INSTANCE_SNAPSHOT_STATUS_INVALID"
    },
    "InstanceSnapshotType": {
      "type": "string",
      "enum": [
        "INSTANCE_SNAPSHOT_TYPE_INVALID",
        "INSTANCE_SNAPSHOT_TYPE_FILESYSTEM",
        "INSTANCE_SNAPSHOT_TYPE_FULL"
      ],
      "default": "INSTANCE_SNAPSHOT_TYPE_INVALID"
    },
    "ListInstanceSnapshotEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InstanceSnapshotEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListInstanceSnapshotsReply": {
      "type": "object",
      "properties": {
        "instance_snapshots": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InstanceSnapshot"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "has_next": {
          "type": "boolean"
        }
      }
    },
    "GetInstanceReply": {
      "type": "object",
      "properties": {
        "instance": {
          "$ref": "#/definitions/Instance"
        }
      }
    },
    "InstanceEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "instance_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "InstanceListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "regional_deployment_id": {
          "type": "string"
        },
        "allocation_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "replica_index": {
          "type": "integer",
          "format": "int64"
        },
        "region": {
          "type": "string"
        },
        "datacenter": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/Instance.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "xyz_deployment_id": {
          "type": "string",
          "description": "WARNING: Please don't use the following attribute.\nKoyeb doesn't guarantee backwards compatible breaking change and reserve the right to completely drop it without notice.\nUSE AT YOUR OWN RISK."
        }
      }
    },
    "ListInstanceEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InstanceEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListInstancesReply": {
      "type": "object",
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InstanceListItem"
          },
          "title": "The collection of instances"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        }
      }
    },
    "CreatePersistentVolumeReply": {
      "type": "object",
      "properties": {
        "volume": {
          "$ref": "#/definitions/PersistentVolume"
        }
      }
    },
    "CreatePersistentVolumeRequest": {
      "type": "object",
      "properties": {
        "volume_type": {
          "$ref": "#/definitions/PersistentVolumeBackingStore",
          "title": "the volume backing store type"
        },
        "name": {
          "type": "string",
          "title": "the volume name"
        },
        "region": {
          "type": "string",
          "title": "the volume region"
        },
        "read_only": {
          "type": "boolean",
          "title": "whether the volume must be set as read only"
        },
        "max_size": {
          "type": "integer",
          "format": "int64",
          "title": "the size of the volume (in Gigabyte / GB)"
        },
        "snapshot_id": {
          "type": "string",
          "title": "(optional) the id of the snapshot whence the volume comes from"
        }
      }
    },
    "DeletePersistentVolumeReply": {
      "type": "object",
      "properties": {
        "volume": {
          "$ref": "#/definitions/PersistentVolume"
        }
      }
    },
    "GetPersistentVolumeReply": {
      "type": "object",
      "properties": {
        "volume": {
          "$ref": "#/definitions/PersistentVolume"
        }
      }
    },
    "ListPersistentVolumeEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PersistentVolumeEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListPersistentVolumesReply": {
      "type": "object",
      "properties": {
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PersistentVolume"
          },
          "title": "The collection of persistent volumes"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "PersistentVolume": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "the identifier for the volume object"
        },
        "name": {
          "type": "string",
          "title": "the volume name"
        },
        "snapshot_id": {
          "type": "string",
          "title": "(optional) the id of the snapshot whence the volume comes from"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "title": "creation timestamp"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "title": "last change timestamp"
        },
        "deleted_at": {
          "type": "string",
          "format": "date-time",
          "title": "deletion timestamp"
        },
        "organization_id": {
          "type": "string",
          "title": "the organization to which the volume belongs to"
        },
        "service_id": {
          "type": "string",
          "title": "the service_id to which the volume is eventually bound to"
        },
        "region": {
          "type": "string",
          "title": "the region where the volume exists"
        },
        "read_only": {
          "type": "boolean",
          "title": "whether to mount the volume in read-only mode"
        },
        "max_size": {
          "type": "integer",
          "format": "int64",
          "title": "the maximum size of the volume (in Gigabyte / GB)"
        },
        "cur_size": {
          "type": "integer",
          "format": "int64",
          "title": "the used amount of space as measured the last time (in Gigabyte / GB)"
        },
        "status": {
          "$ref": "#/definitions/PersistentVolumeStatus",
          "title": "the status of the volume"
        },
        "backing_store": {
          "$ref": "#/definitions/PersistentVolumeBackingStore",
          "title": "the backing store type"
        }
      },
      "title": "The object that represent a volume to handle persistency for deployments"
    },
    "PersistentVolumeBackingStore": {
      "type": "string",
      "enum": [
        "PERSISTENT_VOLUME_BACKING_STORE_INVALID",
        "PERSISTENT_VOLUME_BACKING_STORE_LOCAL_BLK"
      ],
      "default": "PERSISTENT_VOLUME_BACKING_STORE_INVALID",
      "title": "- PERSISTENT_VOLUME_BACKING_STORE_INVALID: zero value, invalid\n - PERSISTENT_VOLUME_BACKING_STORE_LOCAL_BLK: the backing store is a locally reachable block device"
    },
    "PersistentVolumeEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "persistent_volume_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "PersistentVolumeStatus": {
      "type": "string",
      "enum": [
        "PERSISTENT_VOLUME_STATUS_INVALID",
        "PERSISTENT_VOLUME_STATUS_ATTACHED",
        "PERSISTENT_VOLUME_STATUS_DETACHED",
        "PERSISTENT_VOLUME_STATUS_DELETING",
        "PERSISTENT_VOLUME_STATUS_DELETED",
        "PERSISTENT_VOLUME_STATUS_ARCHIVING"
      ],
      "default": "PERSISTENT_VOLUME_STATUS_INVALID",
      "title": "- PERSISTENT_VOLUME_STATUS_INVALID: zero value, invalid\n - PERSISTENT_VOLUME_STATUS_ATTACHED: the volume is attached to an instance\n - PERSISTENT_VOLUME_STATUS_DETACHED: the volume is free to use\n - PERSISTENT_VOLUME_STATUS_DELETING: the volume will be deleted\n - PERSISTENT_VOLUME_STATUS_DELETED: the volume was deleted\n - PERSISTENT_VOLUME_STATUS_ARCHIVING: the volume is being archived (snapshot being created and migrated to remote storage)"
    },
    "UpdatePersistentVolumeReply": {
      "type": "object",
      "properties": {
        "volume": {
          "$ref": "#/definitions/PersistentVolume"
        }
      }
    },
    "GetPoolClaimReply": {
      "type": "object",
      "properties": {
        "claim": {
          "$ref": "#/definitions/PoolClaim"
        }
      }
    },
    "ListPoolClaimReply": {
      "type": "object",
      "properties": {
        "claims": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PoolClaim"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "has_next": {
          "type": "boolean"
        }
      }
    },
    "PoolClaim": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "pool_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/PoolClaim.Status"
        },
        "organization_id": {
          "type": "string"
        },
        "workspace_id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "fulfilled_at": {
          "type": "string",
          "format": "date-time"
        },
        "pool_generation": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "PoolClaim.Status": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "PENDING",
        "FULFILLED",
        "FAILED"
      ],
      "default": "UNSPECIFIED"
    },
    "PoolClaimReply": {
      "type": "object",
      "properties": {
        "claim_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "prewarmed": {
          "type": "boolean"
        }
      }
    },
    "PoolClaimRequest": {
      "type": "object",
      "properties": {
        "pool_id": {
          "type": "string"
        },
        "request_id": {
          "type": "string",
          "description": "Idempotency key scoped to the pool: retries with the same value return the\nsame claim. A fresh id is generated when omitted."
        }
      }
    },
    "CreateStageAttemptReply": {
      "type": "object"
    },
    "DeclareStageProgressReply": {
      "type": "object"
    },
    "DeclareStepProgressReply": {
      "type": "object"
    },
    "GetOrganizationQuotasUsageReply": {
      "type": "object",
      "properties": {
        "usage": {
          "$ref": "#/definitions/QuotaUsage"
        }
      }
    },
    "InstanceSnapshotTypeUsage": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "used": {
          "type": "integer",
          "format": "int64"
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "InstanceTypeUsage": {
      "type": "object",
      "properties": {
        "instance_type": {
          "type": "string"
        },
        "used": {
          "type": "integer",
          "format": "int64"
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PersistentVolumeRegionUsage": {
      "type": "object",
      "properties": {
        "region": {
          "type": "string"
        },
        "total_size_gb_used": {
          "type": "integer",
          "format": "int64"
        },
        "total_size_gb_limit": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "QuotaUsage": {
      "type": "object",
      "properties": {
        "apps_used": {
          "type": "integer",
          "format": "int64"
        },
        "apps_limit": {
          "type": "integer",
          "format": "int64"
        },
        "services_used": {
          "type": "integer",
          "format": "int64"
        },
        "services_limit": {
          "type": "integer",
          "format": "int64"
        },
        "memory_mb_used": {
          "type": "integer",
          "format": "int64"
        },
        "memory_mb_limit": {
          "type": "integer",
          "format": "int64"
        },
        "custom_domains_used": {
          "type": "integer",
          "format": "int64"
        },
        "custom_domains_limit": {
          "type": "integer",
          "format": "int64"
        },
        "koyeb_lb_domains_used": {
          "type": "integer",
          "format": "int64"
        },
        "koyeb_lb_domains_limit": {
          "type": "integer",
          "format": "int64"
        },
        "proxy_ports_used": {
          "type": "integer",
          "format": "int64"
        },
        "proxy_ports_limit": {
          "type": "integer",
          "format": "int64"
        },
        "instances_by_type": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InstanceTypeUsage"
          }
        },
        "persistent_volumes_by_region": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PersistentVolumeRegionUsage"
          }
        },
        "instance_snapshots_by_type": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InstanceSnapshotTypeUsage"
          }
        }
      },
      "description": "QuotaUsage carries an organization's current resource consumption alongside\nthe corresponding plan limits (from the caller's InternalToken.Quotas).\nPaused services are included in services_used but excluded from memory /\ninstances_by_type / proxy_ports totals, matching enforcement semantics."
    },
    "ReviewOrganizationCapacityReply": {
      "type": "object",
      "properties": {
        "has_capacity": {
          "type": "boolean"
        }
      }
    },
    "ReviewOrganizationCapacityRequest": {
      "type": "object",
      "properties": {
        "plan": {
          "type": "string"
        },
        "trialing": {
          "type": "boolean"
        }
      }
    },
    "Env": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "secret": {
          "type": "string"
        }
      }
    },
    "GetRegionalDeploymentReply": {
      "type": "object",
      "properties": {
        "regional_deployment": {
          "$ref": "#/definitions/RegionalDeployment"
        }
      }
    },
    "ListRegionalDeploymentEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RegionalDeploymentEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListRegionalDeploymentsReply": {
      "type": "object",
      "properties": {
        "regional_deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RegionalDeploymentListItem"
          },
          "title": "The collection of regional deployments"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "Port": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "protocol": {
          "type": "string"
        }
      }
    },
    "RegionalDeployment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "scheduled_at": {
          "type": "string",
          "format": "date-time"
        },
        "allocated_at": {
          "type": "string",
          "format": "date-time"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "succeeded_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "parent_id": {
          "type": "string"
        },
        "child_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/RegionalDeployment.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "definition": {
          "$ref": "#/definitions/RegionalDeploymentDefinition"
        },
        "datacenters": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "metadata": {
          "$ref": "#/definitions/RegionalDeploymentMetadata"
        },
        "provisioning_info": {
          "$ref": "#/definitions/DeploymentProvisioningInfo"
        },
        "role": {
          "$ref": "#/definitions/RegionalDeployment.Role"
        },
        "instance_snapshot_id": {
          "type": "string",
          "title": "Instance Snapshot used to boot the Instances of this deployment"
        },
        "version": {
          "type": "string",
          "format": "uint64"
        },
        "deployment_group": {
          "type": "string",
          "title": "Legacy stuff"
        },
        "deployment_id": {
          "type": "string"
        }
      }
    },
    "RegionalDeployment.Role": {
      "type": "string",
      "enum": [
        "INVALID",
        "ACTIVE",
        "UPCOMING",
        "CURRENT"
      ],
      "default": "INVALID"
    },
    "RegionalDeployment.Status": {
      "type": "string",
      "enum": [
        "PENDING",
        "PROVISIONING",
        "SCHEDULED",
        "CANCELING",
        "CANCELED",
        "ALLOCATING",
        "STARTING",
        "HEALTHY",
        "DEGRADED",
        "UNHEALTHY",
        "STOPPING",
        "STOPPED",
        "ERRORING",
        "ERROR",
        "SLEEPING"
      ],
      "default": "PENDING"
    },
    "RegionalDeploymentDefinition": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/RegionalDeploymentDefinition.Type"
        },
        "strategy": {
          "$ref": "#/definitions/DeploymentStrategy"
        },
        "routes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Route"
          }
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Port"
          }
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Env"
          }
        },
        "region": {
          "type": "string"
        },
        "scaling": {
          "$ref": "#/definitions/Scaling"
        },
        "instance_type": {
          "type": "string"
        },
        "deployment_group": {
          "type": "string"
        },
        "health_checks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentHealthCheck"
          }
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RegionalDeploymentVolume"
          }
        },
        "config_files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConfigFile"
          }
        },
        "skip_cache": {
          "type": "boolean"
        },
        "mesh": {
          "$ref": "#/definitions/RegionalDeploymentMesh"
        },
        "network_policy": {
          "$ref": "#/definitions/NetworkPolicy"
        },
        "docker": {
          "$ref": "#/definitions/DockerSource"
        },
        "git": {
          "$ref": "#/definitions/GitSource"
        },
        "archive": {
          "$ref": "#/definitions/ArchiveSource"
        }
      }
    },
    "RegionalDeploymentDefinition.Type": {
      "type": "string",
      "enum": [
        "INVALID",
        "WEB",
        "WORKER",
        "_",
        "SANDBOX"
      ],
      "default": "INVALID",
      "title": "- _: We match with DeploymentDefinition.Type, so we skip 3 which is DATABASE"
    },
    "RegionalDeploymentEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "regional_deployment_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "RegionalDeploymentListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "region": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/RegionalDeployment.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "definition": {
          "$ref": "#/definitions/RegionalDeploymentDefinition"
        },
        "instance_snapshot_id": {
          "type": "string",
          "title": "Instance Snapshot used to boot the Instances of this deployment"
        }
      }
    },
    "RegionalDeploymentMesh": {
      "type": "string",
      "enum": [
        "REGIONAL_DEPLOYMENT_MESH_AUTO",
        "REGIONAL_DEPLOYMENT_MESH_ENABLED",
        "REGIONAL_DEPLOYMENT_MESH_DISABLED"
      ],
      "default": "REGIONAL_DEPLOYMENT_MESH_AUTO"
    },
    "RegionalDeploymentMetadata": {
      "type": "object",
      "properties": {
        "docker": {
          "$ref": "#/definitions/DockerDeploymentMetadata",
          "description": "Image metadata copied from the deployment's metadata at the fan-out."
        }
      }
    },
    "RegionalDeploymentVolume": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "the id of the volume"
        },
        "path": {
          "type": "string",
          "title": "the path where the volume is mounted to"
        },
        "replica_index": {
          "type": "integer",
          "format": "int64",
          "title": "the replica index to mount the volume to"
        }
      }
    },
    "Route": {
      "type": "object",
      "properties": {
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "path": {
          "type": "string"
        },
        "security_policies": {
          "$ref": "#/definitions/SecurityPolicies"
        }
      }
    },
    "Scaling": {
      "type": "object",
      "properties": {
        "min": {
          "type": "integer",
          "format": "int64"
        },
        "max": {
          "type": "integer",
          "format": "int64"
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeploymentScalingTarget"
          }
        }
      }
    },
    "AzureContainerRegistryConfiguration": {
      "type": "object",
      "properties": {
        "registry_name": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "CreateSecret": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/SecretType"
        },
        "value": {
          "type": "string"
        },
        "docker_hub_registry": {
          "$ref": "#/definitions/DockerHubRegistryConfiguration"
        },
        "private_registry": {
          "$ref": "#/definitions/PrivateRegistryConfiguration"
        },
        "digital_ocean_registry": {
          "$ref": "#/definitions/DigitalOceanRegistryConfiguration"
        },
        "github_registry": {
          "$ref": "#/definitions/GitHubRegistryConfiguration"
        },
        "gitlab_registry": {
          "$ref": "#/definitions/GitLabRegistryConfiguration"
        },
        "gcp_container_registry": {
          "$ref": "#/definitions/GCPContainerRegistryConfiguration"
        },
        "azure_container_registry": {
          "$ref": "#/definitions/AzureContainerRegistryConfiguration"
        }
      }
    },
    "CreateSecretReply": {
      "type": "object",
      "properties": {
        "secret": {
          "$ref": "#/definitions/Secret"
        }
      }
    },
    "DatabaseRolePassword": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "DeleteSecretReply": {
      "type": "object"
    },
    "DigitalOceanRegistryConfiguration": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "DockerHubRegistryConfiguration": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "GCPContainerRegistryConfiguration": {
      "type": "object",
      "properties": {
        "keyfile_content": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "GetSecretReply": {
      "type": "object",
      "properties": {
        "secret": {
          "$ref": "#/definitions/Secret"
        }
      }
    },
    "GitHubRegistryConfiguration": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "GitLabRegistryConfiguration": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "ListSecretsReply": {
      "type": "object",
      "properties": {
        "secrets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Secret"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PrivateRegistryConfiguration": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "RevealSecretReply": {
      "type": "object",
      "properties": {
        "value": {}
      }
    },
    "Secret": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/SecretType"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "project_id": {
          "type": "string",
          "description": "The project ID this secret belongs to. Empty if the secret is organization-level."
        },
        "value": {
          "type": "string"
        },
        "docker_hub_registry": {
          "$ref": "#/definitions/DockerHubRegistryConfiguration"
        },
        "private_registry": {
          "$ref": "#/definitions/PrivateRegistryConfiguration"
        },
        "digital_ocean_registry": {
          "$ref": "#/definitions/DigitalOceanRegistryConfiguration"
        },
        "github_registry": {
          "$ref": "#/definitions/GitHubRegistryConfiguration"
        },
        "gitlab_registry": {
          "$ref": "#/definitions/GitLabRegistryConfiguration"
        },
        "gcp_container_registry": {
          "$ref": "#/definitions/GCPContainerRegistryConfiguration"
        },
        "azure_container_registry": {
          "$ref": "#/definitions/AzureContainerRegistryConfiguration"
        },
        "database_role_password": {
          "$ref": "#/definitions/DatabaseRolePassword"
        }
      }
    },
    "SecretType": {
      "type": "string",
      "enum": [
        "SIMPLE",
        "REGISTRY",
        "MANAGED"
      ],
      "default": "SIMPLE"
    },
    "UpdateSecretReply": {
      "type": "object",
      "properties": {
        "secret": {
          "$ref": "#/definitions/Secret"
        }
      }
    },
    "CreateServicePool": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "integer",
          "format": "int64"
        },
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        }
      }
    },
    "CreateServicePoolReply": {
      "type": "object",
      "properties": {
        "service_pool": {
          "$ref": "#/definitions/ServicePool"
        }
      }
    },
    "DeleteServicePoolReply": {
      "type": "object"
    },
    "GetServicePoolReply": {
      "type": "object",
      "properties": {
        "service_pool": {
          "$ref": "#/definitions/ServicePool"
        }
      }
    },
    "ListServicePoolsReply": {
      "type": "object",
      "properties": {
        "service_pools": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServicePool"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "offset": {
          "type": "integer",
          "format": "int64"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "has_next": {
          "type": "boolean"
        }
      }
    },
    "ServicePool": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "workspace_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "size": {
          "type": "integer",
          "format": "int64"
        },
        "ready_count": {
          "type": "integer",
          "format": "int64"
        },
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        },
        "status": {
          "$ref": "#/definitions/ServicePool.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "generation": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "ServicePool.Status": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "READY",
        "PROVISIONING",
        "ERROR",
        "DELETING"
      ],
      "default": "UNSPECIFIED"
    },
    "UpdateServicePool": {
      "type": "object",
      "properties": {
        "size": {
          "type": "integer",
          "format": "int64"
        },
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        }
      }
    },
    "UpdateServicePoolReply": {
      "type": "object",
      "properties": {
        "service_pool": {
          "$ref": "#/definitions/ServicePool"
        }
      }
    },
    "AutocompleteReply": {
      "type": "object",
      "properties": {
        "secrets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of available secrets"
        },
        "user_env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of available user's environment variables"
        },
        "system_env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of available system's environment variables"
        }
      }
    },
    "AutocompleteRequest": {
      "type": "object",
      "properties": {
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition",
          "title": "Deployment definition"
        }
      }
    },
    "CreateServiceReply": {
      "type": "object",
      "properties": {
        "service": {
          "$ref": "#/definitions/Service",
          "title": "The entity created"
        }
      }
    },
    "DeleteServiceReply": {
      "type": "object"
    },
    "DeleteServiceScalingReply": {
      "type": "object",
      "title": "Empty reply - success is indicated by no error"
    },
    "GetServiceReply": {
      "type": "object",
      "properties": {
        "service": {
          "$ref": "#/definitions/Service",
          "title": "The Service retrieved"
        }
      }
    },
    "GetServiceScalingReply": {
      "type": "object",
      "properties": {
        "scalings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ManualServiceScaling"
          },
          "title": "The current manual scaling configuration"
        }
      }
    },
    "ListServiceEventsReply": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServiceEvent"
          },
          "title": "The collection of events"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ListServicesReply": {
      "type": "object",
      "properties": {
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServiceListItem"
          }
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "ManualServiceScaling": {
      "type": "object",
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "instances": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PauseServiceReply": {
      "type": "object"
    },
    "RedeployReply": {
      "type": "object",
      "properties": {
        "deployment": {
          "$ref": "#/definitions/Deployment",
          "title": "The entity updated"
        }
      }
    },
    "RedeployRequest.Info": {
      "type": "object",
      "properties": {
        "deployment_group": {
          "type": "string"
        },
        "sha": {
          "type": "string"
        },
        "use_cache": {
          "type": "boolean"
        },
        "skip_build": {
          "type": "boolean",
          "description": "If set to true, the build stage will be skipped and the image coming from the last successful build step will be used instead.\nThe call fails if no previous successful builds happened."
        }
      }
    },
    "ResumeServiceReply": {
      "type": "object"
    },
    "ServiceEvent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "when": {
          "type": "string",
          "format": "date-time"
        },
        "organization_id": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "metadata": {
          "type": "object"
        }
      }
    },
    "ServiceListItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/Service.Type"
        },
        "organization_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "$ref": "#/definitions/Service.Status"
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "version": {
          "type": "string",
          "format": "uint64",
          "title": "A version updated whenever this state changes (useful for caching)"
        },
        "state": {
          "$ref": "#/definitions/ServiceState"
        },
        "active_deployment_id": {
          "type": "string"
        },
        "latest_deployment_id": {
          "type": "string"
        },
        "life_cycle": {
          "$ref": "#/definitions/ServiceLifeCycle"
        },
        "service_account_id": {
          "type": "string",
          "title": "(Optional) The Albe service account ID associated with this service"
        }
      }
    },
    "UpdateService": {
      "type": "object",
      "properties": {
        "definition": {
          "$ref": "#/definitions/DeploymentDefinition"
        },
        "metadata": {
          "$ref": "#/definitions/DeploymentMetadata"
        },
        "skip_build": {
          "type": "boolean",
          "description": "If set to true, the build stage will be skipped and the image coming from the last successful build step will be used instead.\nThe call fails if no previous successful builds happened."
        },
        "save_only": {
          "type": "boolean",
          "title": "If set, do not trigger a deployment, only store the new settings"
        },
        "life_cycle": {
          "$ref": "#/definitions/ServiceLifeCycle"
        },
        "instance_snapshot_id": {
          "type": "string",
          "title": "Instance Snapshot used to boot the Instances of this deployment\nWith a Full Snapshot, definition must not be provided"
        }
      }
    },
    "UpdateServiceReply": {
      "type": "object",
      "properties": {
        "service": {
          "$ref": "#/definitions/Service",
          "title": "The entity updated"
        }
      }
    },
    "UpdateServiceScalingReply": {
      "type": "object",
      "title": "Empty reply - success is indicated by no error"
    },
    "CreateSnapshotReply": {
      "type": "object",
      "properties": {
        "snapshot": {
          "$ref": "#/definitions/Snapshot"
        }
      }
    },
    "CreateSnapshotRequest": {
      "type": "object",
      "properties": {
        "parent_volume_id": {
          "type": "string",
          "title": "The id of the volume to snapshot"
        },
        "name": {
          "type": "string",
          "title": "The name of the snapshot"
        }
      }
    },
    "DeleteSnapshotReply": {
      "type": "object",
      "properties": {
        "snapshot": {
          "$ref": "#/definitions/Snapshot"
        }
      }
    },
    "GetSnapshotReply": {
      "type": "object",
      "properties": {
        "snapshot": {
          "$ref": "#/definitions/Snapshot"
        }
      }
    },
    "ListSnapshotsReply": {
      "type": "object",
      "properties": {
        "snapshots": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Snapshot"
          },
          "title": "The collection of snapshots"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "has_next": {
          "type": "boolean",
          "title": "If there is more items after in the collection"
        }
      }
    },
    "Snapshot": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "the identifier of the snapshot object"
        },
        "name": {
          "type": "string",
          "title": "the snapshot name"
        },
        "size": {
          "type": "integer",
          "format": "int64",
          "title": "the original volume size"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "title": "creation timestamp"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "title": "last change timestamp"
        },
        "deleted_at": {
          "type": "string",
          "format": "date-time",
          "title": "deletion timestamp"
        },
        "organization_id": {
          "type": "string",
          "title": "the organization to which the snapshot belongs to"
        },
        "parent_volume_id": {
          "type": "string",
          "title": "the volume from which the snapshot has been created"
        },
        "region": {
          "type": "string",
          "title": "the region where the snapshot resides, if any"
        },
        "status": {
          "$ref": "#/definitions/SnapshotStatus",
          "title": "the status of the snapshot"
        },
        "type": {
          "$ref": "#/definitions/SnapshotType",
          "title": "the type of snapshot (can be local or remote)"
        }
      },
      "description": "The object that represents a snapshot. It can either be local, on a node, or remote, in a cold storage."
    },
    "SnapshotStatus": {
      "type": "string",
      "enum": [
        "SNAPSHOT_STATUS_INVALID",
        "SNAPSHOT_STATUS_CREATING",
        "SNAPSHOT_STATUS_AVAILABLE",
        "SNAPSHOT_STATUS_MIGRATING",
        "SNAPSHOT_STATUS_DELETING",
        "SNAPSHOT_STATUS_DELETED"
      ],
      "default": "SNAPSHOT_STATUS_INVALID",
      "title": "- SNAPSHOT_STATUS_INVALID: zero value, invalid\n - SNAPSHOT_STATUS_CREATING: the snapshot is being created\n - SNAPSHOT_STATUS_AVAILABLE: the snapshot is complete and available\n - SNAPSHOT_STATUS_MIGRATING: the snapshot is being migrated\n - SNAPSHOT_STATUS_DELETING: the snapshot is being deleted\n - SNAPSHOT_STATUS_DELETED: the snapshot is deleted"
    },
    "SnapshotType": {
      "type": "string",
      "enum": [
        "SNAPSHOT_TYPE_INVALID",
        "SNAPSHOT_TYPE_LOCAL",
        "SNAPSHOT_TYPE_REMOTE"
      ],
      "default": "SNAPSHOT_TYPE_INVALID",
      "title": "- SNAPSHOT_TYPE_INVALID: zero value, invalid\n - SNAPSHOT_TYPE_LOCAL: the snapshot is local to the machine\n - SNAPSHOT_TYPE_REMOTE: the snapshot is remote in a cold storage"
    },
    "UpdateSnapshotReply": {
      "type": "object",
      "properties": {
        "snapshot": {
          "$ref": "#/definitions/Snapshot"
        }
      }
    },
    "AppUsage": {
      "type": "object",
      "properties": {
        "app_id": {
          "type": "string"
        },
        "app_name": {
          "type": "string"
        },
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServiceUsage"
          }
        },
        "databases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DatabaseUsage"
          }
        }
      }
    },
    "DatabaseUsage": {
      "type": "object",
      "properties": {
        "service_id": {
          "type": "string"
        },
        "service_name": {
          "type": "string"
        },
        "compute_time_seconds": {
          "type": "integer",
          "format": "int64"
        },
        "data_storage_megabytes_hours": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DatabaseUsageDetails": {
      "type": "object",
      "properties": {
        "organization_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "app_name": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "service_name": {
          "type": "string"
        },
        "compute_time_seconds": {
          "type": "integer",
          "format": "int64"
        },
        "data_storage_megabytes_hour": {
          "type": "integer",
          "format": "int64"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "GetOrganizationUsageDetailsReply": {
      "type": "object",
      "properties": {
        "usage_details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UsageDetails"
          },
          "title": "The collection of usage instances"
        },
        "database_details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DatabaseUsageDetails"
          },
          "title": "The collection of database deployments used during the month"
        },
        "limit": {
          "type": "integer",
          "format": "int64",
          "title": "The limit in the request"
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "title": "The offset in the request"
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "title": "The total number of items"
        },
        "order": {
          "type": "string",
          "title": "The order in the request"
        }
      }
    },
    "GetOrganizationUsageReply": {
      "type": "object",
      "properties": {
        "usage": {
          "$ref": "#/definitions/Usage",
          "title": "The computed usage of instances per month"
        }
      }
    },
    "InstanceUsage": {
      "type": "object",
      "properties": {
        "duration_seconds": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PeriodUsage": {
      "type": "object",
      "properties": {
        "starting_time": {
          "type": "string",
          "format": "date-time"
        },
        "ending_time": {
          "type": "string",
          "format": "date-time"
        },
        "apps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AppUsage"
          }
        }
      }
    },
    "RegionUsage": {
      "type": "object",
      "properties": {
        "instances": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/InstanceUsage"
          }
        }
      }
    },
    "ServiceUsage": {
      "type": "object",
      "properties": {
        "service_id": {
          "type": "string"
        },
        "service_name": {
          "type": "string"
        },
        "regions": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/RegionUsage"
          }
        }
      }
    },
    "Usage": {
      "type": "object",
      "properties": {
        "organization_id": {
          "type": "string"
        },
        "periods": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PeriodUsage"
          }
        }
      }
    },
    "UsageDetails": {
      "type": "object",
      "properties": {
        "organization_id": {
          "type": "string"
        },
        "instance_id": {
          "type": "string"
        },
        "app_id": {
          "type": "string"
        },
        "app_name": {
          "type": "string"
        },
        "service_id": {
          "type": "string"
        },
        "service_name": {
          "type": "string"
        },
        "regional_deployment_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "deployment_id": {
          "type": "string"
        },
        "instance_type": {
          "type": "string"
        },
        "duration_seconds": {
          "type": "integer",
          "format": "int64"
        },
        "started_at": {
          "type": "string",
          "format": "date-time"
        },
        "terminated_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "ktest.TestAnonReply": {
      "type": "object"
    },
    "ktest.TestAuthReply": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "workspace_id": {
          "type": "string"
        }
      }
    },
    "ktest.TestAuthRequest": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "string"
        }
      }
    },
    "ExecCommandIO": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "format": "byte",
          "description": "Data is base64 encoded"
        },
        "close": {
          "type": "boolean",
          "description": "Indicate last data frame"
        }
      }
    },
    "ExecCommandReply": {
      "type": "object",
      "properties": {
        "stdout": {
          "$ref": "#/definitions/ExecCommandIO"
        },
        "stderr": {
          "$ref": "#/definitions/ExecCommandIO"
        },
        "exited": {
          "type": "boolean"
        },
        "exit_code": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "ExecCommandRequest.Body": {
      "type": "object",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command to exec. Mandatory in the first frame sent"
        },
        "tty_size": {
          "$ref": "#/definitions/ExecCommandRequest.TerminalSize"
        },
        "stdin": {
          "$ref": "#/definitions/ExecCommandIO"
        },
        "disableTty": {
          "type": "boolean",
          "description": "Disable TTY. It's enough to specify it in the first frame"
        }
      }
    },
    "ExecCommandRequest.IdType": {
      "type": "string",
      "enum": [
        "INVALID",
        "INSTANCE_ID",
        "SERVICE_ID"
      ],
      "default": "INVALID"
    },
    "ExecCommandRequest.TerminalSize": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32"
        },
        "width": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "LogEntry": {
      "type": "object",
      "properties": {
        "msg": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "labels": {
          "type": "object"
        }
      }
    },
    "QueryLogsReply": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LogEntry"
          }
        },
        "pagination": {
          "$ref": "#/definitions/QueryLogsReplyPagination"
        }
      }
    },
    "QueryLogsReplyPagination": {
      "type": "object",
      "properties": {
        "has_more": {
          "type": "boolean"
        },
        "next_start": {
          "type": "string",
          "format": "date-time"
        },
        "next_end": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "GetMetricsReply": {
      "type": "object",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GetMetricsReply.Metric"
          }
        }
      }
    },
    "GetMetricsReply.Metric": {
      "type": "object",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "samples": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Sample"
          }
        }
      }
    },
    "MetricName": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "CPU_TOTAL_PERCENT",
        "MEM_RSS",
        "HTTP_THROUGHPUT",
        "HTTP_RESPONSE_TIME_50P",
        "HTTP_RESPONSE_TIME_90P",
        "HTTP_RESPONSE_TIME_99P",
        "HTTP_RESPONSE_TIME_MAX",
        "PUBLIC_DATA_TRANSFER_IN",
        "PUBLIC_DATA_TRANSFER_OUT"
      ],
      "default": "UNKNOWN"
    },
    "Sample": {
      "type": "object",
      "properties": {
        "timestamp": {
          "type": "string"
        },
        "value": {
          "type": "number",
          "format": "double"
        }
      }
    }
  },
  "securityDefinitions": {
    "Bearer": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header",
      "description": "API key passed as a bearer token. The header value must be prefixed with `Bearer `, e.g. `Authorization: Bearer <your-api-key>`.\n"
    }
  },
  "security": [
    {
      "Bearer": []
    }
  ]
}