diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 2e9ee3ae..e8c7af5e 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -145,6 +145,7 @@ koyeb/api/docs/DeploymentEvent.md koyeb/api/docs/DeploymentHealthCheck.md koyeb/api/docs/DeploymentInstanceType.md koyeb/api/docs/DeploymentListItem.md +koyeb/api/docs/DeploymentMesh.md koyeb/api/docs/DeploymentMetadata.md koyeb/api/docs/DeploymentNeonPostgresDatabaseInfo.md koyeb/api/docs/DeploymentNeonPostgresDatabaseInfoRole.md @@ -376,6 +377,7 @@ koyeb/api/docs/RegionalDeploymentDefinition.md koyeb/api/docs/RegionalDeploymentDefinitionType.md koyeb/api/docs/RegionalDeploymentEvent.md koyeb/api/docs/RegionalDeploymentListItem.md +koyeb/api/docs/RegionalDeploymentMesh.md koyeb/api/docs/RegionalDeploymentRole.md koyeb/api/docs/RegionalDeploymentStatus.md koyeb/api/docs/RegionalDeploymentVolume.md @@ -559,6 +561,7 @@ koyeb/api/models/deployment_event.py koyeb/api/models/deployment_health_check.py koyeb/api/models/deployment_instance_type.py koyeb/api/models/deployment_list_item.py +koyeb/api/models/deployment_mesh.py koyeb/api/models/deployment_metadata.py koyeb/api/models/deployment_neon_postgres_database_info.py koyeb/api/models/deployment_neon_postgres_database_info_role.py @@ -771,6 +774,7 @@ koyeb/api/models/regional_deployment_definition.py koyeb/api/models/regional_deployment_definition_type.py koyeb/api/models/regional_deployment_event.py koyeb/api/models/regional_deployment_list_item.py +koyeb/api/models/regional_deployment_mesh.py koyeb/api/models/regional_deployment_role.py koyeb/api/models/regional_deployment_status.py koyeb/api/models/regional_deployment_volume.py @@ -854,21 +858,4 @@ koyeb/api/models/verify_docker_image_reply.py koyeb/api/models/verify_docker_image_reply_err_code.py koyeb/api/rest.py koyeb/api/test/__init__.py -koyeb/api/test/test_basic_auth_policy.py -koyeb/api/test/test_check_coupon_reply.py -koyeb/api/test/test_create_project.py -koyeb/api/test/test_create_project_reply.py -koyeb/api/test/test_get_project_reply.py -koyeb/api/test/test_get_service_scaling_reply.py -koyeb/api/test/test_lifecycle_quotas.py -koyeb/api/test/test_list_projects_reply.py -koyeb/api/test/test_manual_service_scaling.py -koyeb/api/test/test_project.py -koyeb/api/test/test_projects_api.py -koyeb/api/test/test_sandbox_metadata.py -koyeb/api/test/test_security_policies.py -koyeb/api/test/test_update_organization_default_project_reply.py -koyeb/api/test/test_update_organization_default_project_request.py -koyeb/api/test/test_update_project_reply.py -koyeb/api/test/test_update_service_scaling_request.py koyeb/api_README.md diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION index 0610c66b..f7962df3 100644 --- a/.openapi-generator/VERSION +++ b/.openapi-generator/VERSION @@ -1 +1 @@ -7.21.0-SNAPSHOT +7.22.0-SNAPSHOT diff --git a/Makefile b/Makefile index 7e139484..ac780077 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ DOCKER ?= docker .PHONY: gen-api-client -gen-api-client: +gen-api-client: fetch-spec $(DOCKER) run --rm \ -v `pwd`/spec:/spec \ -v `pwd`:/builder openapitools/openapi-generator-cli:${OPENAPI_GENERATOR_VERSION} \ diff --git a/koyeb/api/__init__.py b/koyeb/api/__init__.py index c71a4f9e..f7c57250 100644 --- a/koyeb/api/__init__.py +++ b/koyeb/api/__init__.py @@ -157,6 +157,7 @@ "DeploymentHealthCheck", "DeploymentInstanceType", "DeploymentListItem", + "DeploymentMesh", "DeploymentMetadata", "DeploymentNeonPostgresDatabaseInfo", "DeploymentNeonPostgresDatabaseInfoRole", @@ -369,6 +370,7 @@ "RegionalDeploymentDefinitionType", "RegionalDeploymentEvent", "RegionalDeploymentListItem", + "RegionalDeploymentMesh", "RegionalDeploymentRole", "RegionalDeploymentStatus", "RegionalDeploymentVolume", @@ -596,6 +598,7 @@ from koyeb.api.models.deployment_health_check import DeploymentHealthCheck as DeploymentHealthCheck from koyeb.api.models.deployment_instance_type import DeploymentInstanceType as DeploymentInstanceType from koyeb.api.models.deployment_list_item import DeploymentListItem as DeploymentListItem +from koyeb.api.models.deployment_mesh import DeploymentMesh as DeploymentMesh from koyeb.api.models.deployment_metadata import DeploymentMetadata as DeploymentMetadata from koyeb.api.models.deployment_neon_postgres_database_info import DeploymentNeonPostgresDatabaseInfo as DeploymentNeonPostgresDatabaseInfo from koyeb.api.models.deployment_neon_postgres_database_info_role import DeploymentNeonPostgresDatabaseInfoRole as DeploymentNeonPostgresDatabaseInfoRole @@ -808,6 +811,7 @@ from koyeb.api.models.regional_deployment_definition_type import RegionalDeploymentDefinitionType as RegionalDeploymentDefinitionType from koyeb.api.models.regional_deployment_event import RegionalDeploymentEvent as RegionalDeploymentEvent from koyeb.api.models.regional_deployment_list_item import RegionalDeploymentListItem as RegionalDeploymentListItem +from koyeb.api.models.regional_deployment_mesh import RegionalDeploymentMesh as RegionalDeploymentMesh from koyeb.api.models.regional_deployment_role import RegionalDeploymentRole as RegionalDeploymentRole from koyeb.api.models.regional_deployment_status import RegionalDeploymentStatus as RegionalDeploymentStatus from koyeb.api.models.regional_deployment_volume import RegionalDeploymentVolume as RegionalDeploymentVolume diff --git a/koyeb/api/api_client.py b/koyeb/api/api_client.py index 1d46542e..47f0eef2 100644 --- a/koyeb/api/api_client.py +++ b/koyeb/api/api_client.py @@ -68,6 +68,7 @@ class ApiClient: 'date': datetime.date, 'datetime': datetime.datetime, 'decimal': decimal.Decimal, + 'UUID': uuid.UUID, 'object': object, } _pool = None @@ -467,6 +468,8 @@ def __deserialize(self, data, klass): return self.__deserialize_datetime(data) elif klass is decimal.Decimal: return decimal.Decimal(data) + elif klass is uuid.UUID: + return uuid.UUID(data) elif issubclass(klass, Enum): return self.__deserialize_enum(data, klass) else: diff --git a/koyeb/api/docs/DeploymentDefinition.md b/koyeb/api/docs/DeploymentDefinition.md index 4285f636..56eed0f3 100644 --- a/koyeb/api/docs/DeploymentDefinition.md +++ b/koyeb/api/docs/DeploymentDefinition.md @@ -19,6 +19,7 @@ Name | Type | Description | Notes **volumes** | [**List[DeploymentVolume]**](DeploymentVolume.md) | | [optional] **config_files** | [**List[ConfigFile]**](ConfigFile.md) | | [optional] **skip_cache** | **bool** | | [optional] +**mesh** | [**DeploymentMesh**](DeploymentMesh.md) | | [optional] [default to DeploymentMesh.DEPLOYMENT_MESH_AUTO] **docker** | [**DockerSource**](DockerSource.md) | | [optional] **git** | [**GitSource**](GitSource.md) | | [optional] **database** | [**DatabaseSource**](DatabaseSource.md) | | [optional] diff --git a/koyeb/api/docs/DeploymentMesh.md b/koyeb/api/docs/DeploymentMesh.md new file mode 100644 index 00000000..265df02f --- /dev/null +++ b/koyeb/api/docs/DeploymentMesh.md @@ -0,0 +1,14 @@ +# DeploymentMesh + + +## Enum + +* `DEPLOYMENT_MESH_AUTO` (value: `'DEPLOYMENT_MESH_AUTO'`) + +* `DEPLOYMENT_MESH_ENABLED` (value: `'DEPLOYMENT_MESH_ENABLED'`) + +* `DEPLOYMENT_MESH_DISABLED` (value: `'DEPLOYMENT_MESH_DISABLED'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/koyeb/api/docs/RegionalDeploymentDefinition.md b/koyeb/api/docs/RegionalDeploymentDefinition.md index 45520488..e3ec1a3f 100644 --- a/koyeb/api/docs/RegionalDeploymentDefinition.md +++ b/koyeb/api/docs/RegionalDeploymentDefinition.md @@ -19,6 +19,7 @@ Name | Type | Description | Notes **volumes** | [**List[RegionalDeploymentVolume]**](RegionalDeploymentVolume.md) | | [optional] **config_files** | [**List[ConfigFile]**](ConfigFile.md) | | [optional] **skip_cache** | **bool** | | [optional] +**mesh** | [**RegionalDeploymentMesh**](RegionalDeploymentMesh.md) | | [optional] [default to RegionalDeploymentMesh.REGIONAL_DEPLOYMENT_MESH_AUTO] **docker** | [**DockerSource**](DockerSource.md) | | [optional] **git** | [**GitSource**](GitSource.md) | | [optional] **archive** | [**ArchiveSource**](ArchiveSource.md) | | [optional] diff --git a/koyeb/api/docs/RegionalDeploymentMesh.md b/koyeb/api/docs/RegionalDeploymentMesh.md new file mode 100644 index 00000000..3aca96c9 --- /dev/null +++ b/koyeb/api/docs/RegionalDeploymentMesh.md @@ -0,0 +1,14 @@ +# RegionalDeploymentMesh + + +## Enum + +* `REGIONAL_DEPLOYMENT_MESH_AUTO` (value: `'REGIONAL_DEPLOYMENT_MESH_AUTO'`) + +* `REGIONAL_DEPLOYMENT_MESH_ENABLED` (value: `'REGIONAL_DEPLOYMENT_MESH_ENABLED'`) + +* `REGIONAL_DEPLOYMENT_MESH_DISABLED` (value: `'REGIONAL_DEPLOYMENT_MESH_DISABLED'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/koyeb/api/models/__init__.py b/koyeb/api/models/__init__.py index afb9bf76..720deefa 100644 --- a/koyeb/api/models/__init__.py +++ b/koyeb/api/models/__init__.py @@ -101,6 +101,7 @@ from koyeb.api.models.deployment_health_check import DeploymentHealthCheck from koyeb.api.models.deployment_instance_type import DeploymentInstanceType from koyeb.api.models.deployment_list_item import DeploymentListItem +from koyeb.api.models.deployment_mesh import DeploymentMesh from koyeb.api.models.deployment_metadata import DeploymentMetadata from koyeb.api.models.deployment_neon_postgres_database_info import DeploymentNeonPostgresDatabaseInfo from koyeb.api.models.deployment_neon_postgres_database_info_role import DeploymentNeonPostgresDatabaseInfoRole @@ -313,6 +314,7 @@ from koyeb.api.models.regional_deployment_definition_type import RegionalDeploymentDefinitionType from koyeb.api.models.regional_deployment_event import RegionalDeploymentEvent from koyeb.api.models.regional_deployment_list_item import RegionalDeploymentListItem +from koyeb.api.models.regional_deployment_mesh import RegionalDeploymentMesh from koyeb.api.models.regional_deployment_role import RegionalDeploymentRole from koyeb.api.models.regional_deployment_status import RegionalDeploymentStatus from koyeb.api.models.regional_deployment_volume import RegionalDeploymentVolume diff --git a/koyeb/api/models/deployment_definition.py b/koyeb/api/models/deployment_definition.py index 36146284..8b23825a 100644 --- a/koyeb/api/models/deployment_definition.py +++ b/koyeb/api/models/deployment_definition.py @@ -26,6 +26,7 @@ from koyeb.api.models.deployment_env import DeploymentEnv from koyeb.api.models.deployment_health_check import DeploymentHealthCheck from koyeb.api.models.deployment_instance_type import DeploymentInstanceType +from koyeb.api.models.deployment_mesh import DeploymentMesh from koyeb.api.models.deployment_port import DeploymentPort from koyeb.api.models.deployment_proxy_port import DeploymentProxyPort from koyeb.api.models.deployment_route import DeploymentRoute @@ -56,11 +57,12 @@ class DeploymentDefinition(BaseModel): volumes: Optional[List[DeploymentVolume]] = None config_files: Optional[List[ConfigFile]] = None skip_cache: Optional[StrictBool] = None + mesh: Optional[DeploymentMesh] = DeploymentMesh.DEPLOYMENT_MESH_AUTO docker: Optional[DockerSource] = None git: Optional[GitSource] = None database: Optional[DatabaseSource] = None archive: Optional[ArchiveSource] = None - __properties: ClassVar[List[str]] = ["name", "type", "strategy", "routes", "ports", "proxy_ports", "env", "regions", "scalings", "instance_types", "health_checks", "volumes", "config_files", "skip_cache", "docker", "git", "database", "archive"] + __properties: ClassVar[List[str]] = ["name", "type", "strategy", "routes", "ports", "proxy_ports", "env", "regions", "scalings", "instance_types", "health_checks", "volumes", "config_files", "skip_cache", "mesh", "docker", "git", "database", "archive"] model_config = ConfigDict( validate_by_name=True, @@ -205,6 +207,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "volumes": [DeploymentVolume.from_dict(_item) for _item in obj["volumes"]] if obj.get("volumes") is not None else None, "config_files": [ConfigFile.from_dict(_item) for _item in obj["config_files"]] if obj.get("config_files") is not None else None, "skip_cache": obj.get("skip_cache"), + "mesh": obj.get("mesh") if obj.get("mesh") is not None else DeploymentMesh.DEPLOYMENT_MESH_AUTO, "docker": DockerSource.from_dict(obj["docker"]) if obj.get("docker") is not None else None, "git": GitSource.from_dict(obj["git"]) if obj.get("git") is not None else None, "database": DatabaseSource.from_dict(obj["database"]) if obj.get("database") is not None else None, diff --git a/koyeb/api/models/deployment_mesh.py b/koyeb/api/models/deployment_mesh.py new file mode 100644 index 00000000..5f04e72c --- /dev/null +++ b/koyeb/api/models/deployment_mesh.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" + Koyeb Rest API + + The Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests. + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class DeploymentMesh(str, Enum): + """ + DeploymentMesh + """ + + """ + allowed enum values + """ + DEPLOYMENT_MESH_AUTO = 'DEPLOYMENT_MESH_AUTO' + DEPLOYMENT_MESH_ENABLED = 'DEPLOYMENT_MESH_ENABLED' + DEPLOYMENT_MESH_DISABLED = 'DEPLOYMENT_MESH_DISABLED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of DeploymentMesh from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/koyeb/api/models/regional_deployment_definition.py b/koyeb/api/models/regional_deployment_definition.py index 10b92f46..3f783b69 100644 --- a/koyeb/api/models/regional_deployment_definition.py +++ b/koyeb/api/models/regional_deployment_definition.py @@ -28,6 +28,7 @@ from koyeb.api.models.git_source import GitSource from koyeb.api.models.port import Port from koyeb.api.models.regional_deployment_definition_type import RegionalDeploymentDefinitionType +from koyeb.api.models.regional_deployment_mesh import RegionalDeploymentMesh from koyeb.api.models.regional_deployment_volume import RegionalDeploymentVolume from koyeb.api.models.route import Route from koyeb.api.models.scaling import Scaling @@ -53,10 +54,11 @@ class RegionalDeploymentDefinition(BaseModel): volumes: Optional[List[RegionalDeploymentVolume]] = None config_files: Optional[List[ConfigFile]] = None skip_cache: Optional[StrictBool] = None + mesh: Optional[RegionalDeploymentMesh] = RegionalDeploymentMesh.REGIONAL_DEPLOYMENT_MESH_AUTO docker: Optional[DockerSource] = None git: Optional[GitSource] = None archive: Optional[ArchiveSource] = None - __properties: ClassVar[List[str]] = ["name", "type", "strategy", "routes", "ports", "env", "region", "scaling", "instance_type", "deployment_group", "health_checks", "volumes", "config_files", "skip_cache", "docker", "git", "archive"] + __properties: ClassVar[List[str]] = ["name", "type", "strategy", "routes", "ports", "env", "region", "scaling", "instance_type", "deployment_group", "health_checks", "volumes", "config_files", "skip_cache", "mesh", "docker", "git", "archive"] model_config = ConfigDict( validate_by_name=True, @@ -180,6 +182,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "volumes": [RegionalDeploymentVolume.from_dict(_item) for _item in obj["volumes"]] if obj.get("volumes") is not None else None, "config_files": [ConfigFile.from_dict(_item) for _item in obj["config_files"]] if obj.get("config_files") is not None else None, "skip_cache": obj.get("skip_cache"), + "mesh": obj.get("mesh") if obj.get("mesh") is not None else RegionalDeploymentMesh.REGIONAL_DEPLOYMENT_MESH_AUTO, "docker": DockerSource.from_dict(obj["docker"]) if obj.get("docker") is not None else None, "git": GitSource.from_dict(obj["git"]) if obj.get("git") is not None else None, "archive": ArchiveSource.from_dict(obj["archive"]) if obj.get("archive") is not None else None diff --git a/koyeb/api/models/regional_deployment_mesh.py b/koyeb/api/models/regional_deployment_mesh.py new file mode 100644 index 00000000..6de8183d --- /dev/null +++ b/koyeb/api/models/regional_deployment_mesh.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" + Koyeb Rest API + + The Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests. + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class RegionalDeploymentMesh(str, Enum): + """ + RegionalDeploymentMesh + """ + + """ + allowed enum values + """ + REGIONAL_DEPLOYMENT_MESH_AUTO = 'REGIONAL_DEPLOYMENT_MESH_AUTO' + REGIONAL_DEPLOYMENT_MESH_ENABLED = 'REGIONAL_DEPLOYMENT_MESH_ENABLED' + REGIONAL_DEPLOYMENT_MESH_DISABLED = 'REGIONAL_DEPLOYMENT_MESH_DISABLED' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of RegionalDeploymentMesh from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/koyeb/api/test/test_deployment_mesh.py b/koyeb/api/test/test_deployment_mesh.py new file mode 100644 index 00000000..ee4e38f1 --- /dev/null +++ b/koyeb/api/test/test_deployment_mesh.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +""" + Koyeb Rest API + + The Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests. + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from koyeb.api.models.deployment_mesh import DeploymentMesh + +class TestDeploymentMesh(unittest.TestCase): + """DeploymentMesh unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testDeploymentMesh(self): + """Test DeploymentMesh""" + # inst = DeploymentMesh() + +if __name__ == '__main__': + unittest.main() diff --git a/koyeb/api/test/test_regional_deployment_mesh.py b/koyeb/api/test/test_regional_deployment_mesh.py new file mode 100644 index 00000000..b2291992 --- /dev/null +++ b/koyeb/api/test/test_regional_deployment_mesh.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +""" + Koyeb Rest API + + The Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests. + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from koyeb.api.models.regional_deployment_mesh import RegionalDeploymentMesh + +class TestRegionalDeploymentMesh(unittest.TestCase): + """RegionalDeploymentMesh unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testRegionalDeploymentMesh(self): + """Test RegionalDeploymentMesh""" + # inst = RegionalDeploymentMesh() + +if __name__ == '__main__': + unittest.main() diff --git a/koyeb/api_README.md b/koyeb/api_README.md index d6b315aa..9798db8f 100644 --- a/koyeb/api_README.md +++ b/koyeb/api_README.md @@ -5,7 +5,7 @@ The `koyeb.api` package is automatically generated by the [OpenAPI Generator](ht - API version: 1.0.0 - Package version: 1.3.3 -- Generator version: 7.21.0-SNAPSHOT +- Generator version: 7.22.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen ## Requirements. @@ -336,6 +336,7 @@ Class | Method | HTTP request | Description - [DeploymentHealthCheck](koyeb/api/docs/DeploymentHealthCheck.md) - [DeploymentInstanceType](koyeb/api/docs/DeploymentInstanceType.md) - [DeploymentListItem](koyeb/api/docs/DeploymentListItem.md) + - [DeploymentMesh](koyeb/api/docs/DeploymentMesh.md) - [DeploymentMetadata](koyeb/api/docs/DeploymentMetadata.md) - [DeploymentNeonPostgresDatabaseInfo](koyeb/api/docs/DeploymentNeonPostgresDatabaseInfo.md) - [DeploymentNeonPostgresDatabaseInfoRole](koyeb/api/docs/DeploymentNeonPostgresDatabaseInfoRole.md) @@ -548,6 +549,7 @@ Class | Method | HTTP request | Description - [RegionalDeploymentDefinitionType](koyeb/api/docs/RegionalDeploymentDefinitionType.md) - [RegionalDeploymentEvent](koyeb/api/docs/RegionalDeploymentEvent.md) - [RegionalDeploymentListItem](koyeb/api/docs/RegionalDeploymentListItem.md) + - [RegionalDeploymentMesh](koyeb/api/docs/RegionalDeploymentMesh.md) - [RegionalDeploymentRole](koyeb/api/docs/RegionalDeploymentRole.md) - [RegionalDeploymentStatus](koyeb/api/docs/RegionalDeploymentStatus.md) - [RegionalDeploymentVolume](koyeb/api/docs/RegionalDeploymentVolume.md) diff --git a/spec/openapi.json b/spec/openapi.json index 99c45a90..2b64c18e 100644 --- a/spec/openapi.json +++ b/spec/openapi.json @@ -36,6 +36,7 @@ "Sessions", "Users", "organization", + "Projects", "OrganizationMembers", "OrganizationInvitations", "OrganizationConfirmations", @@ -67,15 +68,15 @@ } ], "paths": { - "/v1/git/branches": { + "/v1/activities": { "get": { - "summary": "List Branches", - "operationId": "ListBranches", + "summary": "List Activities", + "operationId": "ListActivities", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/kgitproxy.ListBranchesReply" + "$ref": "#/definitions/ActivityList" } }, "400": { @@ -123,48 +124,43 @@ }, "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.", + "name": "limit", "in": "query", "required": false, "type": "string" }, { - "name": "limit", - "description": "(Optional) The number of items to return.", + "name": "offset", "in": "query", "required": false, "type": "string" }, { - "name": "offset", - "description": "(Optional) The offset in the list of item to return.", + "name": "types", + "description": "(Optional) Filter on object type", "in": "query", "required": false, - "type": "string" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" } ], "tags": [ - "Repositories" + "activity" ] } }, - "/v1/git/repositories": { + "/v1/notifications": { "get": { - "summary": "List Repositories", - "operationId": "ListRepositories", + "summary": "List Notifications", + "operationId": "ListNotifications", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/kgitproxy.ListRepositoriesReply" + "$ref": "#/definitions/NotificationList" } }, "400": { @@ -212,84 +208,56 @@ }, "parameters": [ { - "name": "name", - "description": "(Optional) Filter on repository name using a fuzzy search.", + "name": "limit", "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.", + "name": "offset", "in": "query", "required": false, "type": "string" }, { - "name": "limit", - "description": "(Optional) The number of items to return.", + "name": "mark_read", "in": "query", "required": false, "type": "string" }, { - "name": "offset", - "description": "(Optional) The offset in the list of item to return.", + "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": [ - "Repositories" + "activity" ] } }, - "/v1/git/sync/organization/{organization_id}": { - "post": { - "summary": "Resync Organization", - "operationId": "ResyncOrganization", + "/v1/catalog/instances": { + "get": { + "summary": "List Instances", + "operationId": "ListCatalogInstances", "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" + "$ref": "#/definitions/ListCatalogInstancesReply" } }, "default": { @@ -301,62 +269,41 @@ }, "parameters": [ { - "name": "organization_id", - "in": "path", - "required": true, + "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": [ - "Repositories" + "CatalogInstances" ] } }, - "/v1/users/{id}": { - "delete": { - "summary": "Delete user", - "operationId": "DeleteUser", + "/v1/catalog/instances/{id}": { + "get": { + "summary": "Get Instance", + "operationId": "GetCatalogInstance", "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" + "$ref": "#/definitions/GetCatalogInstanceReply" } }, "default": { @@ -369,62 +316,25 @@ "parameters": [ { "name": "id", - "description": "The id of the user", + "description": "The name of the instance", "in": "path", "required": true, "type": "string" } ], "tags": [ - "Users" + "CatalogInstances" ] } }, - "/v2/users/{id}": { - "delete": { - "summary": "V2 Delete user", - "operationId": "DeleteUserV2", + "/v1/catalog/usage": { + "get": { + "operationId": "ListUsage", "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" + "$ref": "#/definitions/ListUsageReply" } }, "default": { @@ -436,135 +346,104 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the user", - "in": "path", - "required": true, + "name": "region", + "in": "query", + "required": false, "type": "string" } ], "tags": [ - "Users" + "CatalogInstanceUsage" ] } }, - "/v1/account/activities": { + "/v1/catalog/regions": { "get": { - "operationId": "GetAccountActivities", + "summary": "List Region", + "operationId": "ListRegions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ActivityList" + "$ref": "#/definitions/ListRegionsReply" } }, - "400": { - "description": "Validation error", + "default": { + "description": "An unexpected error response.", "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" + "$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": [ - "activity" + "CatalogRegions" ] } }, - "/v1/account/idenfy": { + "/v1/catalog/regions/{id}": { "get": { - "summary": "Begin a session with iDenfy, emit an authToken", - "operationId": "GetIdenfyToken", + "summary": "Get Region", + "operationId": "GetRegion", "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" + "$ref": "#/definitions/GetRegionReply" } }, - "500": { - "description": "Returned in case of server error.", + "default": { + "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/Error" + "$ref": "#/definitions/google.rpc.Status" } - }, - "503": { - "description": "Service is unavailable.", + } + }, + "parameters": [ + { + "name": "id", + "description": "The name of the region", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CatalogRegions" + ] + } + }, + "/v1/catalog/datacenters": { + "get": { + "summary": "List datacenters", + "operationId": "ListDatacenters", + "responses": { + "200": { + "description": "A successful response.", "schema": { - "$ref": "#/definitions/Error" + "$ref": "#/definitions/ListDatacentersReply" } }, "default": { @@ -575,17 +454,29 @@ } }, "tags": [ - "Profile" + "CatalogDatacenters" ] - }, - "post": { - "summary": "ClearIdenfyVerificationResult marks the current result for idenfy as\nsuperseded", - "operationId": "ClearIdenfyVerificationResult", + } + }, + "/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.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/ClearIdenfyVerificationResultReply" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/ExecCommandReply" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of ExecCommandReply" } }, "400": { @@ -633,27 +524,87 @@ }, "parameters": [ { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/ClearIdenfyVerificationResultRequest" - } + "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": [ - "Profile" + "Instances" ] } }, - "/v1/account/invite": { - "post": { - "operationId": "CreateInvite", + "/v1/streams/logs/query": { + "get": { + "summary": "Query logs", + "operationId": "QueryLogs", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/Empty" + "$ref": "#/definitions/QueryLogsReply" } }, "400": { @@ -701,174 +652,156 @@ }, "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", - "operationId": "LoginMethod", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/LoginMethodReply" - } - }, - "400": { - "description": "Validation error", - "schema": { - "$ref": "#/definitions/ErrorWithFields" - } + "name": "type", + "description": "Type of logs to retrieve, either \"build\" or \"runtime\". Defaults to \"runtime\".", + "in": "query", + "required": false, + "type": "string" }, - "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" - } + { + "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" }, - "404": { - "description": "Returned when the resource does not exist.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "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" }, - "500": { - "description": "Returned in case of server error.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "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" }, - "503": { - "description": "Service is unavailable.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "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" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ { - "name": "email", + "name": "instance_id", + "description": "Deprecated, prefer using instance_ids instead.", "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" - } + { + "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" }, - "401": { - "description": "Returned when the token is not valid.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "name": "stream", + "description": "Deprecated, prefer using streams instead.", + "in": "query", + "required": false, + "type": "string" }, - "403": { - "description": "Returned when the user does not have permission to access the resource.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "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" }, - "404": { - "description": "Returned when the resource does not exist.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "name": "start", + "description": "(Optional) Must always be before `end`. Defaults to 15 minutes ago.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" }, - "500": { - "description": "Returned in case of server error.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "name": "end", + "description": "(Optional) Must always be after `start`. Defaults to now.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" }, - "503": { - "description": "Service is unavailable.", - "schema": { - "$ref": "#/definitions/Error" - } + { + "name": "order", + "description": "(Optional) `asc` or `desc`. Defaults to `desc`.", + "in": "query", + "required": false, + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ { - "name": "action", - "description": "Which authentication flow is being initiated", + "name": "limit", + "description": "(Optional) Defaults to 100. Maximum of 1000.", "in": "query", "required": false, "type": "string", - "enum": [ - "signin", - "signup", - "register" - ], - "default": "signin" + "format": "int64" }, { - "name": "metadata", - "description": "A small (limited to 400 characters) string of arbitrary metadata which will\nbe encoded in the state", + "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": [ - "Profile" + "Logs" ] - }, - "post": { - "summary": "Authenticate using OAuth", - "operationId": "OAuthCallback", + } + }, + "/v1/streams/logs/tail": { + "get": { + "summary": "Tails logs", + "operationId": "TailLogs", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/OAuthCallbackReply" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/LogEntry" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of LogEntry" } }, "400": { @@ -916,42 +849,139 @@ }, "parameters": [ { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/OAuthCallbackRequest" - } + "name": "type", + "description": "Type of logs to retrieve, either \"build\" or \"runtime\". Defaults to \"runtime\".", + "in": "query", + "required": false, + "type": "string" }, { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", + "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" - } - ], - "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" - } + }, + { + "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.", @@ -990,20 +1020,79 @@ } } }, + "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": [ - "Profile" + "Metrics" ] } }, - "/v1/account/organization_invitations": { + "/v1/instance_events": { "get": { - "summary": "List User Organization Invitations", - "operationId": "ListUserOrganizationInvitations", + "summary": "List Instance events", + "operationId": "ListInstanceEvents", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListUserOrganizationInvitationsReply" + "$ref": "#/definitions/ListInstanceEventsReply" } }, "400": { @@ -1050,6 +1139,28 @@ } }, "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", @@ -1065,38 +1176,27 @@ "type": "string" }, { - "name": "statuses", - "description": "(Optional) Filter on organization invitation statuses", + "name": "order", + "description": "(Optional) Sorts the list in the ascending or the descending order", "in": "query", "required": false, - "type": "array", - "items": { - "type": "string", - "enum": [ - "INVALID", - "PENDING", - "ACCEPTED", - "REFUSED", - "EXPIRED" - ] - }, - "collectionFormat": "multi" + "type": "string" } ], "tags": [ - "Profile" + "Instances" ] } }, - "/v1/account/organization_invitations/{id}": { + "/v1/instances": { "get": { - "summary": "Get User Organization Invitation", - "operationId": "GetUserOrganizationInvitation", + "summary": "List Instances", + "operationId": "ListInstances", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetUserOrganizationInvitationReply" + "$ref": "#/definitions/ListInstancesReply" } }, "400": { @@ -1144,27 +1244,120 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the organization invitation to get", - "in": "path", - "required": true, + "name": "app_id", + "description": "(Optional) Filter on application id", + "in": "query", + "required": false, "type": "string" - } - ], - "tags": [ - "Profile" - ] - } - }, - "/v1/account/organization_invitations/{id}/accept": { - "post": { - "summary": "Accept Organization Invitation", - "operationId": "AcceptOrganizationInvitation", + }, + { + "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" + } + ], + "tags": [ + "Instances" + ] + } + }, + "/v1/instances/{id}": { + "get": { + "summary": "Get Instance", + "operationId": "GetInstance", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/AcceptOrganizationInvitationReply" + "$ref": "#/definitions/GetInstanceReply" } }, "400": { @@ -1213,34 +1406,27 @@ "parameters": [ { "name": "id", - "description": "The id of the organization invitation to accept", + "description": "The id of the instance", "in": "path", "required": true, "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } } ], "tags": [ - "Profile" + "Instances" ] } }, - "/v1/account/organization_invitations/{id}/decline": { - "post": { - "summary": "Decline Organization Invitation", - "operationId": "DeclineOrganizationInvitation", + "/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/DeclineOrganizationInvitationReply" + "$ref": "#/definitions/VerifyDockerImageReply" } }, "400": { @@ -1288,36 +1474,34 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the organization invitation to decline", - "in": "path", - "required": true, + "name": "image", + "description": "The full image uri to be verified", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } + "name": "secret_id", + "description": "(Optional) the id of the secret to use to authenticate to the registry", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "Profile" + "DockerHelper" ] } }, - "/v1/account/organizations": { + "/v1/regional_deployment_events": { "get": { - "summary": "List User Organizations", - "description": "List all organizations that the current user is a member of.", - "operationId": "ListUserOrganizations", + "summary": "List Regional Deployment events", + "operationId": "ListRegionalDeploymentEvents", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListUserOrganizationsReply" + "$ref": "#/definitions/ListRegionalDeploymentEventsReply" } }, "400": { @@ -1365,68 +1549,60 @@ }, "parameters": [ { - "name": "limit", - "description": "(Optional) Define pagination limit", + "name": "regional_deployment_id", + "description": "(Optional) Filter on regional deployment id", "in": "query", "required": false, "type": "string" }, { - "name": "offset", - "description": "(Optional) Define pagination offset", + "name": "types", + "description": "(Optional) Filter on regional deployment event types", "in": "query", "required": false, - "type": "string" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "order", - "description": "(Optional) Sorts the list in the ascending or the descending order", + "name": "limit", + "description": "(Optional) The number of items to return", "in": "query", "required": false, "type": "string" }, { - "name": "search", - "description": "(Optional) Fuzzy case-insensitive search based on organization name or\norganization id", + "name": "offset", + "description": "(Optional) The offset in the list of item to return", "in": "query", "required": false, "type": "string" }, { - "name": "statuses", - "description": "(Optional) Only return organizations which status match one in the list", + "name": "order", + "description": "(Optional) Sorts the list in the ascending or the descending order", "in": "query", "required": false, - "type": "array", - "items": { - "type": "string", - "enum": [ - "WARNING", - "LOCKED", - "ACTIVE", - "DEACTIVATING", - "DEACTIVATED", - "DELETING", - "DELETED" - ] - }, - "collectionFormat": "multi" + "type": "string" } ], "tags": [ - "Profile" + "RegionalDeployments" ] } }, - "/v1/account/profile": { + "/v1/regional_deployments": { "get": { - "summary": "Get Current User", - "operationId": "GetCurrentUser", + "summary": "List Regional Deployments", + "description": "Experimental: use at your own risk", + "operationId": "ListRegionalDeployments", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UserReply" + "$ref": "#/definitions/ListRegionalDeploymentsReply" } }, "400": { @@ -1474,25 +1650,42 @@ }, "parameters": [ { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", + "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" } ], "tags": [ - "Profile" + "RegionalDeployments" ] - }, - "put": { - "summary": "Update User", - "operationId": "UpdateUser", + } + }, + "/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/UserReply" + "$ref": "#/definitions/GetRegionalDeploymentReply" } }, "400": { @@ -1540,32 +1733,27 @@ }, "parameters": [ { - "name": "user", - "in": "body", + "name": "id", + "description": "The id of the regional deployment", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" - } - }, - { - "name": "update_mask", - "in": "query", - "required": false, "type": "string" } ], "tags": [ - "Profile" + "RegionalDeployments" ] - }, - "patch": { - "summary": "Update User", - "operationId": "UpdateUser2", + } + }, + "/v1/volume_events": { + "get": { + "summary": "List Persistent Volume events", + "operationId": "ListPersistentVolumeEvents", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UserReply" + "$ref": "#/definitions/ListPersistentVolumeEventsReply" } }, "400": { @@ -1613,34 +1801,59 @@ }, "parameters": [ { - "name": "user", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" - } + "name": "persistent_volume_id", + "description": "(Optional) Filter on persistent volume id", + "in": "query", + "required": false, + "type": "string" }, { - "name": "update_mask", + "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": [ - "Profile" + "PersistentVolumes" ] } }, - "/v1/account/resend_validation": { - "post": { - "summary": "Resend Email Verification", - "operationId": "ResendEmailValidation", + "/v1/volumes": { + "get": { + "summary": "List all PersistentVolumes", + "operationId": "ListPersistentVolumes", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ResendEmailValidationReply" + "$ref": "#/definitions/ListPersistentVolumesReply" } }, "400": { @@ -1688,28 +1901,60 @@ }, "parameters": [ { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/ResendEmailValidationRequest" - } + "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": "project_id", + "description": "(Optional) A filter for the project ID", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "Profile" + "PersistentVolumes" ] - } - }, - "/v1/account/reset_password": { + }, "post": { - "summary": "Reset Password", - "operationId": "ResetPassword", + "summary": "Create a PersistentVolume", + "operationId": "CreatePersistentVolume", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ResetPasswordReply" + "$ref": "#/definitions/CreatePersistentVolumeReply" } }, "400": { @@ -1761,23 +2006,24 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/ResetPasswordRequest" + "$ref": "#/definitions/CreatePersistentVolumeRequest" } } ], "tags": [ - "Profile" + "PersistentVolumes" ] } }, - "/v1/account/settings": { + "/v1/volumes/{id}": { "get": { - "operationId": "GetUserSettings", + "summary": "Get a PersistentVolume", + "operationId": "GetPersistentVolume", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetUserSettingsReply" + "$ref": "#/definitions/GetPersistentVolumeReply" } }, "400": { @@ -1823,17 +2069,26 @@ } } }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], "tags": [ - "Profile" + "PersistentVolumes" ] }, - "patch": { - "operationId": "UpdateUserSettings", + "delete": { + "summary": "Delete a PersistentVolume", + "operationId": "DeletePersistentVolume", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateUserSettingsReply" + "$ref": "#/definitions/DeletePersistentVolumeReply" } }, "400": { @@ -1881,28 +2136,24 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/UpdateUserSettingsRequest" - } + "type": "string" } ], "tags": [ - "Profile" + "PersistentVolumes" ] - } - }, - "/v1/account/signup": { + }, "post": { - "summary": "Signup", - "operationId": "Signup", + "summary": "Update a PersistentVolume", + "operationId": "UpdatePersistentVolume", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/UpdatePersistentVolumeReply" } }, "400": { @@ -1949,37 +2200,46 @@ } }, "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, { "name": "body", - "description": "Create new account", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/CreateAccountRequest" + "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)" + } + } } - }, - { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", - "required": false, - "type": "string" } ], "tags": [ - "Profile" + "PersistentVolumes" ] } }, - "/v1/account/update_password": { + "/v1/quotas/capacity": { "post": { - "summary": "Update Password", - "operationId": "UpdatePassword", + "summary": "DEPRECATED: Review Organization Capacity", + "operationId": "ReviewOrganizationCapacity", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/ReviewOrganizationCapacityReply" } }, "400": { @@ -2031,31 +2291,24 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/UpdatePasswordRequest" + "$ref": "#/definitions/ReviewOrganizationCapacityRequest" } - }, - { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", - "required": false, - "type": "string" } ], "tags": [ - "Profile" + "Quotas" ] } }, - "/v1/account/validate/{id}": { - "post": { - "summary": "Validate", - "operationId": "Validate", + "/v1/domains": { + "get": { + "summary": "List Domains", + "operationId": "ListDomains", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/ListDomainsReply" } }, "400": { @@ -2103,34 +2356,90 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "limit", + "description": "(Optional) The number of items to return", + "in": "query", + "required": false, "type": "string" }, { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", + "name": "offset", + "description": "(Optional) The offset in the list of item to return", + "in": "query", "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", + }, + { + "name": "types", + "description": "(Optional) A filter for types\n\n - AUTOASSIGNED: Domain like -.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": "project_id", + "description": "(Optional) A filter for the project ID", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Domains" + ] + }, + "post": { + "summary": "Create Domain", + "operationId": "CreateDomain", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/HasUnpaidInvoicesReply" + "$ref": "#/definitions/CreateDomainReply" } }, "400": { @@ -2176,19 +2485,30 @@ } } }, + "parameters": [ + { + "name": "domain", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateDomain" + } + } + ], "tags": [ - "billing" + "Domains" ] } }, - "/v1/billing/manage": { + "/v1/domains/{id}": { "get": { - "operationId": "Manage", + "summary": "Get Domain", + "operationId": "GetDomain", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ManageReply" + "$ref": "#/definitions/GetDomainReply" } }, "400": { @@ -2234,21 +2554,26 @@ } } }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], "tags": [ - "billing" + "Domains" ] - } - }, - "/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", + }, + "delete": { + "summary": "Delete Domain", + "operationId": "DeleteDomain", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/NextInvoiceReply" + "$ref": "#/definitions/DeleteDomainReply" } }, "400": { @@ -2294,20 +2619,26 @@ } } }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], "tags": [ - "billing" + "Domains" ] - } - }, - "/v1/github/installation": { - "get": { - "summary": "Fetch Github Installation configuration", - "operationId": "GetGithubInstallation", + }, + "patch": { + "summary": "Update Domain", + "operationId": "UpdateDomain", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetGithubInstallationReply" + "$ref": "#/definitions/UpdateDomainReply" } }, "400": { @@ -2353,18 +2684,49 @@ } } }, + "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": [ - "organization" + "Domains" ] - }, + } + }, + "/v1/domains/{id}/refresh": { "post": { - "summary": "Start Github Installation", - "operationId": "GithubInstallation", + "summary": "Refresh Domain Status", + "operationId": "RefreshDomainStatus", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GithubInstallationReply" + "$ref": "#/definitions/RefreshDomainStatusReply" } }, "400": { @@ -2412,28 +2774,26 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/GithubInstallationRequest" - } + "type": "string" } ], "tags": [ - "organization" + "Domains" ] } }, - "/v1/organizations": { - "post": { - "summary": "Create Organization", - "operationId": "CreateOrganization", + "/v1/app_events": { + "get": { + "summary": "List App events", + "operationId": "ListAppEvents", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateOrganizationReply" + "$ref": "#/definitions/ListAppEventsReply" } }, "400": { @@ -2481,28 +2841,59 @@ }, "parameters": [ { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/CreateOrganizationRequest" - } + "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": [ - "organization" + "Apps" ] } }, - "/v1/organizations/{id}": { + "/v1/apps": { "get": { - "summary": "Get Organization", - "operationId": "GetOrganization", + "summary": "List App", + "operationId": "ListApps", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetOrganizationReply" + "$ref": "#/definitions/ListAppsReply" } }, "400": { @@ -2550,24 +2941,46 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, - "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": "project_id", + "description": "(Optional) A filter for the project ID", + "in": "query", + "required": false, + "type": "string" + } + ], "tags": [ - "organization" + "Apps" ] }, - "delete": { - "summary": "Delete an Organization", - "operationId": "DeleteOrganization", + "post": { + "summary": "Create App", + "operationId": "CreateApp", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteOrganizationReply" + "$ref": "#/definitions/CreateAppReply" } }, "400": { @@ -2615,24 +3028,28 @@ }, "parameters": [ { - "name": "id", - "in": "path", + "name": "app", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/CreateApp" + } } ], "tags": [ - "organization" + "Apps" ] - }, - "put": { - "summary": "Update Organization", - "operationId": "UpdateOrganization", + } + }, + "/v1/apps/{id}": { + "get": { + "summary": "Get App", + "operationId": "GetApp", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateOrganizationReply" + "$ref": "#/definitions/GetAppReply" } }, "400": { @@ -2681,37 +3098,25 @@ "parameters": [ { "name": "id", + "description": "The id of the App", "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" + "Apps" ] }, - "patch": { - "summary": "Update Organization", - "operationId": "UpdateOrganization2", + "delete": { + "summary": "Delete App", + "description": "App deletion is allowed for all status.", + "operationId": "DeleteApp", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateOrganizationReply" + "$ref": "#/definitions/DeleteAppReply" } }, "400": { @@ -2760,40 +3165,24 @@ "parameters": [ { "name": "id", + "description": "The id of the App to delete", "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" + "Apps" ] - } - }, - "/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 `s`, where ``\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", + }, + "put": { + "summary": "Update App", + "operationId": "UpdateApp", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateAccessTokenReply" + "$ref": "#/definitions/UpdateAppReply" } }, "400": { @@ -2842,40 +3231,38 @@ "parameters": [ { "name": "id", - "description": "Organization id for ephemeral credential", + "description": "The id of the app to update.", "in": "path", "required": true, "type": "string" }, { - "name": "body", + "name": "app", "in": "body", "required": true, "schema": { - "type": "object", - "properties": { - "validity": { - "type": "string", - "title": "Validity of the credential" - } - } + "$ref": "#/definitions/UpdateApp" } + }, + { + "name": "update_mask", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "organization" + "Apps" ] - } - }, - "/v1/organizations/{id}/deactivate": { - "post": { - "summary": "Deactivate an Organization", - "operationId": "DeactivateOrganization", + }, + "patch": { + "summary": "Update App", + "operationId": "UpdateApp2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeactivateOrganizationReply" + "$ref": "#/definitions/UpdateAppReply" } }, "400": { @@ -2924,39 +3311,41 @@ "parameters": [ { "name": "id", + "description": "The id of the app to update.", "in": "path", "required": true, "type": "string" }, { - "name": "body", + "name": "app", "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." - } - } + "$ref": "#/definitions/UpdateApp" } + }, + { + "name": "update_mask", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "organization" + "Apps" ] } }, - "/v1/organizations/{id}/default_project": { - "put": { - "summary": "Update Organization's default project", - "operationId": "UpdateOrganizationDefaultProject", + "/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/UpdateOrganizationDefaultProjectReply" + "$ref": "#/definitions/PauseAppReply" } }, "400": { @@ -3005,38 +3394,27 @@ "parameters": [ { "name": "id", + "description": "The id of the app to pause.", "in": "path", "required": true, "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "default_project_id": { - "type": "string" - } - } - } } ], "tags": [ - "organization" + "Apps" ] } }, - "/v1/organizations/{id}/name": { - "put": { - "summary": "Update Organization Name", - "operationId": "UpdateOrganizationName", + "/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/UpdateOrganizationNameReply" + "$ref": "#/definitions/ResumeAppReply" } }, "400": { @@ -3085,38 +3463,26 @@ "parameters": [ { "name": "id", + "description": "The id of the app to resume.", "in": "path", "required": true, "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } } ], "tags": [ - "organization" + "Apps" ] } }, - "/v1/organizations/{id}/plan": { - "post": { - "summary": "Update Organization plan", - "operationId": "UpdateOrganizationPlan", + "/v1/snapshots": { + "get": { + "summary": "List all Snapshots", + "operationId": "ListSnapshots", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateOrganizationPlanReply" + "$ref": "#/definitions/ListSnapshotsReply" } }, "400": { @@ -3164,42 +3530,65 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "limit", + "description": "(Optional) The number of items to return", + "in": "query", + "required": false, "type": "string" }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "plan": { - "$ref": "#/definitions/Plan" - }, - "coupon_code": { - "type": "string" - } - } - } - } - ], - "tags": [ - "organization" + "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" + } + ], + "tags": [ + "Snapshots" ] - } - }, - "/v1/organizations/{id}/reactivate": { + }, "post": { - "summary": "Reactivate an Organization", - "operationId": "ReactivateOrganization", + "summary": "Create a Snapshot", + "operationId": "CreateSnapshot", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ReactivateOrganizationReply" + "$ref": "#/definitions/CreateSnapshotReply" } }, "400": { @@ -3246,35 +3635,29 @@ } }, "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", "in": "body", "required": true, "schema": { - "type": "object" + "$ref": "#/definitions/CreateSnapshotRequest" } } ], "tags": [ - "organization" + "Snapshots" ] } }, - "/v1/organizations/{id}/signup_qualification": { - "post": { - "summary": "Upsert Organization's signup qualification", - "operationId": "UpsertSignupQualification", + "/v1/snapshots/{id}": { + "get": { + "summary": "Get a Snapshot", + "operationId": "GetSnapshot", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpsertSignupQualificationReply" + "$ref": "#/definitions/GetSnapshotReply" } }, "400": { @@ -3326,35 +3709,20 @@ "in": "path", "required": true, "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "signup_qualification": { - "type": "object" - } - } - } } ], "tags": [ - "organization" + "Snapshots" ] - } - }, - "/v1/organizations/{id}/switch": { - "post": { - "summary": "Switch Organization context", - "operationId": "SwitchOrganization", + }, + "delete": { + "summary": "Delete a Snapshot", + "operationId": "DeleteSnapshot", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/DeleteSnapshotReply" } }, "400": { @@ -3406,37 +3774,20 @@ "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" + "Snapshots" ] - } - }, - "/v1/organizations/{organization_id}/budget": { - "get": { - "summary": "Get Budget", - "operationId": "GetBudget", + }, + "post": { + "summary": "Update a Snapshot", + "operationId": "UpdateSnapshot", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetBudgetReply" + "$ref": "#/definitions/UpdateSnapshotReply" } }, "400": { @@ -3484,24 +3835,41 @@ }, "parameters": [ { - "name": "organization_id", + "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": [ - "organization" + "Snapshots" ] - }, - "delete": { - "summary": "Delete Budget", - "operationId": "DeleteBudget", + } + }, + "/v1/secrets": { + "get": { + "summary": "List Secrets", + "operationId": "ListSecrets", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteBudgetReply" + "$ref": "#/definitions/ListSecretsReply" } }, "400": { @@ -3549,24 +3917,59 @@ }, "parameters": [ { - "name": "organization_id", - "in": "path", - "required": true, + "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": "project_id", + "description": "(Optional) A filter for the project ID", + "in": "query", + "required": false, "type": "string" } ], "tags": [ - "organization" + "Secrets" ] }, "post": { - "summary": "Create Budget", - "operationId": "CreateBudget", + "summary": "Create Secret", + "operationId": "CreateSecret", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateBudgetReply" + "$ref": "#/definitions/CreateSecretReply" } }, "400": { @@ -3614,39 +4017,28 @@ }, "parameters": [ { - "name": "organization_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", + "name": "secret", "in": "body", "required": true, "schema": { - "type": "object", - "properties": { - "amount": { - "type": "string", - "format": "int64", - "description": "In cents." - } - } + "$ref": "#/definitions/CreateSecret" } } ], "tags": [ - "organization" + "Secrets" ] - }, - "put": { - "summary": "Update Budget", - "operationId": "UpdateBudget", + } + }, + "/v1/secrets/{id}": { + "get": { + "summary": "Get Secret", + "operationId": "GetSecret", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateBudgetReply" + "$ref": "#/definitions/GetSecretReply" } }, "400": { @@ -3694,40 +4086,24 @@ }, "parameters": [ { - "name": "organization_id", + "name": "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" + "Secrets" ] - } - }, - "/v1/sso/canny": { - "post": { - "operationId": "CannyAuth", + }, + "delete": { + "summary": "Delete Secret", + "operationId": "DeleteSecret", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CannyAuthReply" + "$ref": "#/definitions/DeleteSecretReply" } }, "400": { @@ -3775,27 +4151,24 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CannyAuthRequest" - } + "type": "string" } ], "tags": [ - "sso" + "Secrets" ] - } - }, - "/v1/sso/discourse": { - "post": { - "operationId": "DiscourseAuth", + }, + "put": { + "summary": "Update Secret", + "operationId": "UpdateSecret", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DiscourseAuthReply" + "$ref": "#/definitions/UpdateSecretReply" } }, "400": { @@ -3843,29 +4216,38 @@ }, "parameters": [ { - "name": "body", + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "secret", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/DiscourseAuthRequest" + "$ref": "#/definitions/Secret" } + }, + { + "name": "update_mask", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "sso" + "Secrets" ] - } - }, - "/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", + }, + "patch": { + "summary": "Update Secret", + "operationId": "UpdateSecret2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/UpdateSecretReply" } }, "400": { @@ -3913,35 +4295,40 @@ }, "parameters": [ { - "name": "body", + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "secret", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/UnscopeOrganizationTokenRequest" + "$ref": "#/definitions/Secret" } }, { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", + "name": "update_mask", + "in": "query", "required": false, "type": "string" } ], "tags": [ - "organization" + "Secrets" ] } }, - "/v2/account/profile": { - "put": { - "summary": "Update User V2", - "operationId": "UpdateUserV2", + "/v1/secrets/{id}/reveal": { + "post": { + "summary": "Reveal Secret", + "operationId": "RevealSecret", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UserReply" + "$ref": "#/definitions/RevealSecretReply" } }, "400": { @@ -3989,32 +4376,144 @@ }, "parameters": [ { - "name": "user", + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" + "type": "object" + } + } + ], + "tags": [ + "Secrets" + ] + } + }, + "/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": "update_mask", + "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": [ - "Profile" + "Usages" ] - }, - "patch": { - "summary": "Update User V2", - "operationId": "UpdateUserV22", + } + }, + "/v1/deployment/{id}/scaling": { + "get": { + "summary": "Get Deployment Scaling", + "operationId": "GetDeploymentScaling", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UserReply" + "$ref": "#/definitions/GetDeploymentScalingReply" } }, "400": { @@ -4062,34 +4561,41 @@ }, "parameters": [ { - "name": "user", - "in": "body", + "name": "id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" - } + "type": "string" }, { - "name": "update_mask", + "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": [ - "Profile" + "Deployments" ] } }, - "/v1/organizations/{organization_id}/summary": { + "/v1/deployment_events": { "get": { - "summary": "Get organization usage summary", - "operationId": "GetOrganizationSummary", + "summary": "List Deployment events", + "operationId": "ListDeploymentEvents", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetOrganizationSummaryReply" + "$ref": "#/definitions/ListDeploymentEventsReply" } }, "400": { @@ -4137,27 +4643,59 @@ }, "parameters": [ { - "name": "organization_id", - "description": "Organization ID", - "in": "path", - "required": true, - "type": "string" + "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": [ - "Summary" + "Deployments" ] } }, - "/v1/credentials": { + "/v1/deployments": { "get": { - "summary": "List credentials", - "operationId": "ListCredentials", + "summary": "List Deployments", + "operationId": "ListDeployments", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListCredentialsReply" + "$ref": "#/definitions/ListDeploymentsReply" } }, "400": { @@ -4205,35 +4743,15 @@ }, "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", + "name": "app_id", + "description": "(Optional) Filter on application id", "in": "query", "required": false, "type": "string" }, { - "name": "user_id", - "description": "(Optional) Filter for an user", + "name": "service_id", + "description": "(Optional) Filter on service id", "in": "query", "required": false, "type": "string" @@ -4251,20 +4769,51 @@ "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" } ], "tags": [ - "Credentials" + "Deployments" ] - }, - "post": { - "summary": "Create credential", - "operationId": "CreateCredential", + } + }, + "/v1/deployments/{id}": { + "get": { + "summary": "Get Deployment", + "operationId": "GetDeployment", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateCredentialReply" + "$ref": "#/definitions/GetDeploymentReply" } }, "400": { @@ -4312,28 +4861,28 @@ }, "parameters": [ { - "name": "credential", - "in": "body", + "name": "id", + "description": "The id of the deployment", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CreateCredential" - } + "type": "string" } ], "tags": [ - "Credentials" + "Deployments" ] } }, - "/v1/credentials/{id}": { - "get": { - "summary": "Get credential", - "operationId": "GetCredential", + "/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/GetCredentialReply" + "$ref": "#/definitions/CancelDeploymentReply" } }, "400": { @@ -4382,23 +4931,26 @@ "parameters": [ { "name": "id", + "description": "The id of the deployment to cancel.", "in": "path", "required": true, "type": "string" } ], "tags": [ - "Credentials" + "Deployments" ] - }, - "delete": { - "summary": "Delete credential", - "operationId": "DeleteCredential", + } + }, + "/v1/compose": { + "post": { + "summary": "Create resources from compose.", + "operationId": "Compose", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteCredentialReply" + "$ref": "#/definitions/ComposeReply" } }, "400": { @@ -4446,24 +4998,28 @@ }, "parameters": [ { - "name": "id", - "in": "path", + "name": "compose", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/CreateCompose" + } } ], "tags": [ - "Credentials" + "Compose" ] - }, - "put": { - "summary": "Update credential", - "operationId": "UpdateCredential", + } + }, + "/v1/service_events": { + "get": { + "summary": "List Service events", + "operationId": "ListServiceEvents", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateCredentialReply" + "$ref": "#/definitions/ListServiceEventsReply" } }, "400": { @@ -4511,38 +5067,59 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "service_id", + "description": "(Optional) Filter on service id", + "in": "query", + "required": false, "type": "string" }, { - "name": "credential", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Credential" - } + "name": "types", + "description": "(Optional) Filter on service event types", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "update_mask", + "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": [ - "Credentials" + "Services" ] - }, - "patch": { - "summary": "Update credential", - "operationId": "UpdateCredential2", + } + }, + "/v1/services": { + "get": { + "summary": "List Services", + "operationId": "ListServices", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateCredentialReply" + "$ref": "#/definitions/ListServicesReply" } }, "400": { @@ -4590,40 +5167,104 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "app_id", + "description": "(Optional) The id of the app", + "in": "query", + "required": false, "type": "string" }, { - "name": "credential", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Credential" - } + "name": "limit", + "description": "(Optional) The number of items to return", + "in": "query", + "required": false, + "type": "string" }, { - "name": "update_mask", + "name": "offset", + "description": "(Optional) The offset in the list of item to return", "in": "query", "required": false, "type": "string" - } - ], - "tags": [ - "Credentials" - ] - } - }, - "/v1/account/login": { + }, + { + "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": "project_id", + "description": "(Optional) A filter for the project ID", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Services" + ] + }, "post": { - "summary": "Login user", - "operationId": "Login", + "summary": "Create Service", + "operationId": "CreateService", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/CreateServiceReply" } }, "400": { @@ -4671,35 +5312,36 @@ }, "parameters": [ { - "name": "body", + "name": "service", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/LoginRequest" + "$ref": "#/definitions/CreateService" } }, { - "name": "seon-fp", - "description": "Seon Fingerprint", - "in": "header", + "name": "dry_run", + "description": "If set only run validation", + "in": "query", "required": false, - "type": "string" + "type": "boolean" } ], "tags": [ - "Sessions" + "Services" ] } }, - "/v1/account/logout": { - "delete": { - "summary": "Logout user", - "operationId": "Logout", + "/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/LogoutReply" + "$ref": "#/definitions/AutocompleteReply" } }, "400": { @@ -4745,20 +5387,30 @@ } } }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AutocompleteRequest" + } + } + ], "tags": [ - "Sessions" + "Services" ] } }, - "/v1/account/refresh": { - "put": { - "summary": "Refresh token", - "operationId": "RefreshToken", + "/v1/services/{id}": { + "get": { + "summary": "Get Service", + "operationId": "GetService", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/GetServiceReply" } }, "400": { @@ -4804,21 +5456,28 @@ } } }, + "parameters": [ + { + "name": "id", + "description": "The id of the Service", + "in": "path", + "required": true, + "type": "string" + } + ], "tags": [ - "Sessions" + "Services" ] - } - }, - "/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\".", - "operationId": "NewSession", + }, + "delete": { + "summary": "Delete Service", + "description": "Service deletion is allowed for all status.", + "operationId": "DeleteService", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/LoginReply" + "$ref": "#/definitions/DeleteServiceReply" } }, "400": { @@ -4864,20 +5523,27 @@ } } }, + "parameters": [ + { + "name": "id", + "description": "The id of the entity to delete", + "in": "path", + "required": true, + "type": "string" + } + ], "tags": [ - "Sessions" + "Services" ] - } - }, - "/v1/organization_confirmations/{id}": { - "post": { - "summary": "Confirm organization action", - "operationId": "ConfirmOrganizationAction", + }, + "put": { + "summary": "Update Service", + "operationId": "UpdateService", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ConfirmOrganizationActionReply" + "$ref": "#/definitions/UpdateServiceReply" } }, "400": { @@ -4926,25 +5592,45 @@ "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": [ - "OrganizationConfirmations" + "Services" ] - } - }, - "/v1/intercom/profile": { - "get": { - "summary": "Get intercom profile", - "operationId": "GetIntercomProfile", + }, + "patch": { + "summary": "Update Service", + "operationId": "UpdateService2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetIntercomProfileReply" + "$ref": "#/definitions/UpdateServiceReply" } }, "400": { @@ -4990,21 +5676,51 @@ } } }, + "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": [ - "Intercom" + "Services" ] } }, - "/v1/coupons": { + "/v1/services/{id}/pause": { "post": { - "summary": "Redeem Coupon", - "description": "This API allows to redeem a coupon. Pass the code you received in the body.", - "operationId": "RedeemCoupon", + "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/RedeemCouponReply" + "$ref": "#/definitions/PauseServiceReply" } }, "400": { @@ -5052,29 +5768,27 @@ }, "parameters": [ { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/RedeemCouponRequest" - } + "name": "id", + "description": "The id of the service to pause.", + "in": "path", + "required": true, + "type": "string" } ], "tags": [ - "Coupons" + "Services" ] } }, - "/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", + "/v1/services/{id}/redeploy": { + "post": { + "summary": "ReDeploy Service", + "operationId": "ReDeploy", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CheckCouponReply" + "$ref": "#/definitions/RedeployReply" } }, "400": { @@ -5122,26 +5836,35 @@ }, "parameters": [ { - "name": "code", + "name": "id", "in": "path", "required": true, "type": "string" + }, + { + "name": "info", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/RedeployRequest.Info" + } } ], "tags": [ - "Coupons" + "Services" ] } }, - "/v1/projects": { - "get": { - "summary": "List projects", - "operationId": "ListProjects", + "/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/ListProjectsReply" + "$ref": "#/definitions/ResumeServiceReply" } }, "400": { @@ -5189,39 +5912,41 @@ }, "parameters": [ { - "name": "limit", - "description": "(Optional) The number of items to return", - "in": "query", - "required": false, + "name": "id", + "description": "The id of the service to pause.", + "in": "path", + "required": true, "type": "string" }, { - "name": "offset", - "description": "(Optional) The offset in the list of item to return", + "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": "string" + "type": "boolean" }, { - "name": "name", - "description": "(Optional) Filter by project name", + "name": "use_cache", "in": "query", "required": false, - "type": "string" + "type": "boolean" } ], "tags": [ - "Projects" + "Services" ] - }, - "post": { - "summary": "Create project", - "operationId": "CreateProject", + } + }, + "/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/CreateProjectReply" + "$ref": "#/definitions/GetServiceScalingReply" } }, "400": { @@ -5269,28 +5994,26 @@ }, "parameters": [ { - "name": "project", - "in": "body", + "name": "id", + "description": "The id of the service", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CreateProject" - } + "type": "string" } ], "tags": [ - "Projects" + "Services" ] - } - }, - "/v1/projects/{id}": { - "get": { - "summary": "Get project", - "operationId": "GetProject", + }, + "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/GetProjectReply" + "$ref": "#/definitions/DeleteServiceScalingReply" } }, "400": { @@ -5339,23 +6062,25 @@ "parameters": [ { "name": "id", + "description": "The id of the service", "in": "path", "required": true, "type": "string" } ], "tags": [ - "Projects" + "Services" ] }, - "delete": { - "summary": "Delete project", - "operationId": "DeleteProject", + "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/DeleteProjectReply" + "$ref": "#/definitions/UpdateServiceScalingReply" } }, "400": { @@ -5404,23 +6129,43 @@ "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": [ - "Projects" + "Services" ] - }, - "put": { - "summary": "Update project", - "operationId": "UpdateProject", + } + }, + "/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/UpdateProjectReply" + "$ref": "#/definitions/CreateStageAttemptReply" } }, "400": { @@ -5468,38 +6213,68 @@ }, "parameters": [ { - "name": "id", + "name": "deployment_id", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "in": "body", + "name": "stage", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/Project" - } + "type": "string" }, { - "name": "update_mask", - "in": "query", - "required": false, + "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": [ - "Projects" + "Provisioning" ] }, "patch": { - "summary": "Update project", - "operationId": "UpdateProject2", + "summary": "Declare stage progress", + "operationId": "DeclareStageProgress", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateProjectReply" + "$ref": "#/definitions/DeclareStageProgressReply" } }, "400": { @@ -5547,40 +6322,73 @@ }, "parameters": [ { - "name": "id", + "name": "deployment_id", "in": "path", "required": true, "type": "string" }, { - "name": "project", - "in": "body", + "name": "stage", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/Project" - } + "type": "string" }, { - "name": "update_mask", - "in": "query", - "required": false, + "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": [ - "Projects" + "Provisioning" ] } }, - "/v1/organization_members": { - "get": { - "summary": "List organization members", - "operationId": "ListOrganizationMembers", + "/v1/provisioning/{deployment_id}/status/{stage}/{attempt}/{step}": { + "patch": { + "summary": "Declare step progress", + "operationId": "DeclareStepProgress", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListOrganizationMembersReply" + "$ref": "#/definitions/DeclareStepProgressReply" } }, "400": { @@ -5628,68 +6436,75 @@ }, "parameters": [ { - "name": "limit", - "description": "(Optional) The number of items to return", - "in": "query", - "required": false, + "name": "deployment_id", + "in": "path", + "required": true, "type": "string" }, { - "name": "offset", - "description": "(Optional) The offset in the list of item to return", - "in": "query", - "required": false, + "name": "stage", + "in": "path", + "required": true, "type": "string" }, { - "name": "organization_id", - "description": "(Optional) Filter for an organization", - "in": "query", - "required": false, + "name": "attempt", + "in": "path", + "required": true, "type": "string" }, { - "name": "user_id", - "description": "(Optional) Filter for an user", - "in": "query", - "required": false, + "name": "step", + "in": "path", + "required": true, "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" + "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": [ - "OrganizationMembers" + "Provisioning" ] } }, - "/v1/organization_members/{id}": { - "delete": { - "summary": "Remove an organization member", - "operationId": "RemoveOrganizationMember", + "/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/RemoveOrganizationMemberReply" + "$ref": "#/definitions/CreateArchiveReply" } }, "400": { @@ -5737,26 +6552,28 @@ }, "parameters": [ { - "name": "id", - "in": "path", + "name": "archive", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/CreateArchive" + } } ], "tags": [ - "OrganizationMembers" + "Archives" ] } }, - "/v1/payment_methods": { + "/v1/intercom/profile": { "get": { - "summary": "List payment methods", - "operationId": "ListPaymentMethods", + "summary": "Get intercom profile", + "operationId": "GetIntercomProfile", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListPaymentMethodsReply" + "$ref": "#/definitions/GetIntercomProfileReply" } }, "400": { @@ -5802,54 +6619,20 @@ } } }, - "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" + "Intercom" ] - }, - "post": { - "summary": "Create payment authorization", - "operationId": "CreatePaymentAuthorization", + } + }, + "/v1/subscriptions/{id}": { + "get": { + "summary": "Get Subscription", + "operationId": "GetSubscription", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreatePaymentAuthorizationReply" + "$ref": "#/definitions/GetSubscriptionReply" } }, "400": { @@ -5897,28 +6680,27 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "id", + "description": "The id of the instance", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CreatePaymentAuthorizationRequest" - } + "type": "string" } ], "tags": [ - "PaymentMethods" + "Subscriptions" ] } }, - "/v1/payment_methods/{id}": { + "/v1/organization_members": { "get": { - "summary": "Get payment method", - "operationId": "GetPaymentMethod", + "summary": "List organization members", + "operationId": "ListOrganizationMembers", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetPaymentMethodReply" + "$ref": "#/definitions/ListOrganizationMembersReply" } }, "400": { @@ -5966,24 +6748,68 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "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": [ - "PaymentMethods" + "OrganizationMembers" ] - }, + } + }, + "/v1/organization_members/{id}": { "delete": { - "summary": "Delete payment method", - "operationId": "DeletePaymentMethod", + "summary": "Remove an organization member", + "operationId": "RemoveOrganizationMember", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeletePaymentMethodReply" + "$ref": "#/definitions/RemoveOrganizationMemberReply" } }, "400": { @@ -6038,19 +6864,20 @@ } ], "tags": [ - "PaymentMethods" + "OrganizationMembers" ] } }, - "/v1/payment_methods/{id}/confirm": { + "/v1/coupons": { "post": { - "summary": "Confirm payment authorization", - "operationId": "ConfirmPaymentAuthorization", + "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/ConfirmPaymentAuthorizationReply" + "$ref": "#/definitions/RedeemCouponReply" } }, "400": { @@ -6097,34 +6924,30 @@ } }, "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", "in": "body", "required": true, "schema": { - "type": "object" + "$ref": "#/definitions/RedeemCouponRequest" } } ], "tags": [ - "PaymentMethods" + "Coupons" ] } }, - "/v1/organizations/{organization_id}/quotas": { + "/v1/coupons/{code}": { "get": { - "operationId": "GetQuotas", + "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/GetQuotasReply" + "$ref": "#/definitions/CheckCouponReply" } }, "400": { @@ -6172,14 +6995,14 @@ }, "parameters": [ { - "name": "organization_id", + "name": "code", "in": "path", "required": true, "type": "string" } ], "tags": [ - "OrganizationQuotas" + "Coupons" ] } }, @@ -6560,15 +7383,14 @@ ] } }, - "/v1/subscriptions/{id}": { + "/v1/organizations/{organization_id}/quotas": { "get": { - "summary": "Get Subscription", - "operationId": "GetSubscription", + "operationId": "GetQuotas", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetSubscriptionReply" + "$ref": "#/definitions/GetQuotasReply" } }, "400": { @@ -6616,27 +7438,26 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the instance", + "name": "organization_id", "in": "path", "required": true, "type": "string" } ], "tags": [ - "Subscriptions" + "OrganizationQuotas" ] } }, - "/v1/streams/logs/query": { - "get": { - "summary": "Query logs", - "operationId": "QueryLogs", + "/v1/users/{id}": { + "delete": { + "summary": "Delete user", + "operationId": "DeleteUser", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/QueryLogsReply" + "$ref": "#/definitions/DeleteUserReply" } }, "400": { @@ -6684,156 +7505,95 @@ }, "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, + "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" + } }, - { - "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" + "400": { + "description": "Validation error", + "schema": { + "$ref": "#/definitions/ErrorWithFields" + } }, - { - "name": "start", - "description": "(Optional) Must always be before `end`. Defaults to 15 minutes ago.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "401": { + "description": "Returned when the token is not valid.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "end", - "description": "(Optional) Must always be after `start`. Defaults to now.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "403": { + "description": "Returned when the user does not have permission to access the resource.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "order", - "description": "(Optional) `asc` or `desc`. Defaults to `desc`.", - "in": "query", - "required": false, - "type": "string" + "404": { + "description": "Returned when the resource does not exist.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "limit", - "description": "(Optional) Defaults to 100. Maximum of 1000.", - "in": "query", - "required": false, - "type": "string", - "format": "int64" + "500": { + "description": "Returned in case of server error.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "regex", - "description": "(Optional) Apply a regex to filter logs. Can't be used with `text`.", - "in": "query", - "required": false, - "type": "string" + "503": { + "description": "Service is unavailable.", + "schema": { + "$ref": "#/definitions/Error" + } }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ { - "name": "text", - "description": "(Optional) Looks for this string in logs. Can't be used with `regex`.", - "in": "query", - "required": false, + "name": "id", + "description": "The id of the user", + "in": "path", + "required": true, "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" + "Users" ] } }, - "/v1/streams/logs/tail": { - "get": { - "summary": "Tails logs", - "operationId": "TailLogs", + "/v1/account/login": { + "post": { + "summary": "Login user", + "operationId": "Login", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/LogEntry" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of LogEntry" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -6881,132 +7641,35 @@ }, "parameters": [ { - "name": "type", - "description": "Type of logs to retrieve, either \"build\" or \"runtime\". Defaults to \"runtime\".", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/LoginRequest" + } }, { - "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", + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", "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" + "Sessions" ] } }, - "/v1/streams/metrics": { - "get": { - "summary": "Get Metrics", - "operationId": "GetMetrics", + "/v1/account/logout": { + "delete": { + "summary": "Logout user", + "operationId": "Logout", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetMetricsReply" + "$ref": "#/definitions/LogoutReply" } }, "400": { @@ -7052,89 +7715,80 @@ } } }, - "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" + "tags": [ + "Sessions" + ] + } + }, + "/v1/account/refresh": { + "put": { + "summary": "Refresh token", + "operationId": "RefreshToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/LoginReply" + } }, - { - "name": "instance_id", - "description": "ID of the instance to query metrics for.", - "in": "query", - "required": false, - "type": "string" + "400": { + "description": "Validation error", + "schema": { + "$ref": "#/definitions/ErrorWithFields" + } }, - { - "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" + "401": { + "description": "Returned when the token is not valid.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "start", - "description": "(Optional) Defaults to an hour prior to end.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "403": { + "description": "Returned when the user does not have permission to access the resource.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "end", - "description": "(Optional) Defaults to now.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "404": { + "description": "Returned when the resource does not exist.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "step", - "description": "(Optional) Must be a valid duration in hours (h) or minutes (m). Defaulst to 5m.", - "in": "query", - "required": false, - "type": "string" + "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": [ - "Metrics" + "Sessions" ] } }, - "/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", + "/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\".", + "operationId": "NewSession", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/ExecCommandReply" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of ExecCommandReply" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -7180,89 +7834,20 @@ } } }, - "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" + "Sessions" ] } }, - "/v1/activities": { - "get": { - "summary": "List Activities", - "operationId": "ListActivities", + "/v1/organization_confirmations/{id}": { + "post": { + "summary": "Confirm organization action", + "operationId": "ConfirmOrganizationAction", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ActivityList" + "$ref": "#/definitions/ConfirmOrganizationActionReply" } }, "400": { @@ -7310,43 +7895,26 @@ }, "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "offset", - "in": "query", - "required": false, + "name": "id", + "in": "path", + "required": true, "type": "string" - }, - { - "name": "types", - "description": "(Optional) Filter on object type", - "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" } ], "tags": [ - "activity" + "OrganizationConfirmations" ] } }, - "/v1/notifications": { + "/v1/credentials": { "get": { - "summary": "List Notifications", - "operationId": "ListNotifications", + "summary": "List credentials", + "operationId": "ListCredentials", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/NotificationList" + "$ref": "#/definitions/ListCredentialsReply" } }, "400": { @@ -7394,56 +7962,66 @@ }, "parameters": [ { - "name": "limit", + "name": "type", + "description": "(Optional) A filter for type", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "INVALID", + "USER", + "ORGANIZATION" + ], + "default": "INVALID" }, { - "name": "offset", + "name": "name", + "description": "(Optional) A filter for name", "in": "query", "required": false, "type": "string" }, { - "name": "mark_read", + "name": "organization_id", + "description": "(Optional) Filter for an organization", "in": "query", "required": false, "type": "string" }, { - "name": "mark_seen", + "name": "user_id", + "description": "(Optional) Filter for an user", "in": "query", "required": false, "type": "string" }, { - "name": "unread", + "name": "limit", + "description": "(Optional) The number of items to return", "in": "query", "required": false, "type": "string" }, { - "name": "unseen", + "name": "offset", + "description": "(Optional) The offset in the list of item to return", "in": "query", "required": false, "type": "string" } ], "tags": [ - "activity" + "Credentials" ] - } - }, - "/v1/regional_deployment_events": { - "get": { - "summary": "List Regional Deployment events", - "operationId": "ListRegionalDeploymentEvents", + }, + "post": { + "summary": "Create credential", + "operationId": "CreateCredential", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListRegionalDeploymentEventsReply" + "$ref": "#/definitions/CreateCredentialReply" } }, "400": { @@ -7491,60 +8069,28 @@ }, "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" + "name": "credential", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCredential" + } } ], "tags": [ - "RegionalDeployments" + "Credentials" ] } }, - "/v1/regional_deployments": { + "/v1/credentials/{id}": { "get": { - "summary": "List Regional Deployments", - "description": "Experimental: use at your own risk", - "operationId": "ListRegionalDeployments", + "summary": "Get credential", + "operationId": "GetCredential", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListRegionalDeploymentsReply" + "$ref": "#/definitions/GetCredentialReply" } }, "400": { @@ -7592,42 +8138,24 @@ }, "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, + "name": "id", + "in": "path", + "required": true, "type": "string" } ], "tags": [ - "RegionalDeployments" + "Credentials" ] - } - }, - "/v1/regional_deployments/{id}": { - "get": { - "summary": "Get Regional Deployment", - "description": "Experimental: use at your own risk", - "operationId": "GetRegionalDeployment", + }, + "delete": { + "summary": "Delete credential", + "operationId": "DeleteCredential", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetRegionalDeploymentReply" + "$ref": "#/definitions/DeleteCredentialReply" } }, "400": { @@ -7676,26 +8204,23 @@ "parameters": [ { "name": "id", - "description": "The id of the regional deployment", "in": "path", "required": true, "type": "string" } ], "tags": [ - "RegionalDeployments" + "Credentials" ] - } - }, - "/v1/snapshots": { - "get": { - "summary": "List all Snapshots", - "operationId": "ListSnapshots", + }, + "put": { + "summary": "Update credential", + "operationId": "UpdateCredential", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListSnapshotsReply" + "$ref": "#/definitions/UpdateCredentialReply" } }, "400": { @@ -7743,65 +8268,38 @@ }, "parameters": [ { - "name": "limit", - "description": "(Optional) The number of items to return", - "in": "query", - "required": false, + "name": "id", + "in": "path", + "required": true, "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": "credential", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Credential" + } }, { - "name": "region", - "description": "(Optional) A filter for the region", + "name": "update_mask", "in": "query", "required": false, "type": "string" } ], "tags": [ - "Snapshots" + "Credentials" ] }, - "post": { - "summary": "Create a Snapshot", - "operationId": "CreateSnapshot", + "patch": { + "summary": "Update credential", + "operationId": "UpdateCredential2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateSnapshotReply" + "$ref": "#/definitions/UpdateCredentialReply" } }, "400": { @@ -7849,28 +8347,40 @@ }, "parameters": [ { - "name": "body", + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "credential", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/CreateSnapshotRequest" + "$ref": "#/definitions/Credential" } + }, + { + "name": "update_mask", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "Snapshots" + "Credentials" ] } }, - "/v1/snapshots/{id}": { + "/v1/projects": { "get": { - "summary": "Get a Snapshot", - "operationId": "GetSnapshot", + "summary": "List projects", + "operationId": "ListProjects", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetSnapshotReply" + "$ref": "#/definitions/ListProjectsReply" } }, "400": { @@ -7918,24 +8428,39 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "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": [ - "Snapshots" + "Projects" ] }, - "delete": { - "summary": "Delete a Snapshot", - "operationId": "DeleteSnapshot", + "post": { + "summary": "Create project", + "operationId": "CreateProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteSnapshotReply" + "$ref": "#/definitions/CreateProjectReply" } }, "400": { @@ -7983,24 +8508,28 @@ }, "parameters": [ { - "name": "id", - "in": "path", + "name": "project", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/CreateProject" + } } ], "tags": [ - "Snapshots" + "Projects" ] - }, - "post": { - "summary": "Update a Snapshot", - "operationId": "UpdateSnapshot", + } + }, + "/v1/projects/{id}": { + "get": { + "summary": "Get project", + "operationId": "GetProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateSnapshotReply" + "$ref": "#/definitions/GetProjectReply" } }, "400": { @@ -8049,40 +8578,23 @@ "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" + "Projects" ] - } - }, - "/v1/service_events": { - "get": { - "summary": "List Service events", - "operationId": "ListServiceEvents", + }, + "delete": { + "summary": "Delete project", + "operationId": "DeleteProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListServiceEventsReply" + "$ref": "#/definitions/DeleteProjectReply" } }, "400": { @@ -8130,59 +8642,24 @@ }, "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, + "name": "id", + "in": "path", + "required": true, "type": "string" } ], "tags": [ - "Services" + "Projects" ] - } - }, - "/v1/services": { - "get": { - "summary": "List Services", - "operationId": "ListServices", + }, + "put": { + "summary": "Update project", + "operationId": "UpdateProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListServicesReply" + "$ref": "#/definitions/UpdateProjectReply" } }, "400": { @@ -8230,105 +8707,39 @@ }, "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, + "name": "id", + "in": "path", + "required": true, "type": "string" }, { - "name": "offset", - "description": "(Optional) The offset in the list of item to return", - "in": "query", - "required": false, - "type": "string" + "name": "project", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Project" + } }, { - "name": "name", - "description": "(Optional) A filter for name", + "name": "update_mask", "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": "project_id", - "description": "(Optional) A filter for the project ID", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "Services" - ] - }, - "post": { - "summary": "Create Service", - "operationId": "CreateService", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/CreateServiceReply" - } + } + ], + "tags": [ + "Projects" + ] + }, + "patch": { + "summary": "Update project", + "operationId": "UpdateProject2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateProjectReply" + } }, "400": { "description": "Validation error", @@ -8375,36 +8786,40 @@ }, "parameters": [ { - "name": "service", + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/CreateService" + "$ref": "#/definitions/Project" } }, { - "name": "dry_run", - "description": "If set only run validation", + "name": "update_mask", "in": "query", "required": false, - "type": "boolean" + "type": "string" } ], "tags": [ - "Services" + "Projects" ] } }, - "/v1/services-autocomplete": { - "post": { - "summary": "Autocomplete definition", - "description": "Generate autocomplete definition for a service", - "operationId": "Autocomplete", + "/v1/organizations/{organization_id}/summary": { + "get": { + "summary": "Get organization usage summary", + "operationId": "GetOrganizationSummary", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/AutocompleteReply" + "$ref": "#/definitions/GetOrganizationSummaryReply" } }, "400": { @@ -8452,28 +8867,27 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "organization_id", + "description": "Organization ID", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/AutocompleteRequest" - } + "type": "string" } ], "tags": [ - "Services" + "Summary" ] } }, - "/v1/services/{id}": { + "/v1/payment_methods": { "get": { - "summary": "Get Service", - "operationId": "GetService", + "summary": "List payment methods", + "operationId": "ListPaymentMethods", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetServiceReply" + "$ref": "#/definitions/ListPaymentMethodsReply" } }, "400": { @@ -8521,26 +8935,52 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the Service", - "in": "path", - "required": true, + "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": [ - "Services" + "PaymentMethods" ] }, - "delete": { - "summary": "Delete Service", - "description": "Service deletion is allowed for all status.", - "operationId": "DeleteService", + "post": { + "summary": "Create payment authorization", + "operationId": "CreatePaymentAuthorization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteServiceReply" + "$ref": "#/definitions/CreatePaymentAuthorizationReply" } }, "400": { @@ -8588,25 +9028,28 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the entity to delete", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/CreatePaymentAuthorizationRequest" + } } ], "tags": [ - "Services" + "PaymentMethods" ] - }, - "put": { - "summary": "Update Service", - "operationId": "UpdateService", + } + }, + "/v1/payment_methods/{id}": { + "get": { + "summary": "Get payment method", + "operationId": "GetPaymentMethod", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateServiceReply" + "$ref": "#/definitions/GetPaymentMethodReply" } }, "400": { @@ -8655,45 +9098,23 @@ "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" + "PaymentMethods" ] }, - "patch": { - "summary": "Update Service", - "operationId": "UpdateService2", + "delete": { + "summary": "Delete payment method", + "operationId": "DeletePaymentMethod", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateServiceReply" + "$ref": "#/definitions/DeletePaymentMethodReply" } }, "400": { @@ -8742,48 +9163,25 @@ "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" + "PaymentMethods" ] } }, - "/v1/services/{id}/pause": { + "/v1/payment_methods/{id}/confirm": { "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", + "summary": "Confirm payment authorization", + "operationId": "ConfirmPaymentAuthorization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/PauseServiceReply" + "$ref": "#/definitions/ConfirmPaymentAuthorizationReply" } }, "400": { @@ -8832,26 +9230,32 @@ "parameters": [ { "name": "id", - "description": "The id of the service to pause.", "in": "path", "required": true, "type": "string" - } - ], - "tags": [ - "Services" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object" + } + } + ], + "tags": [ + "PaymentMethods" ] } }, - "/v1/services/{id}/redeploy": { - "post": { - "summary": "ReDeploy Service", - "operationId": "ReDeploy", + "/v1/account/activities": { + "get": { + "operationId": "GetAccountActivities", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/RedeployReply" + "$ref": "#/definitions/ActivityList" } }, "400": { @@ -8899,35 +9303,32 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "limit", + "in": "query", + "required": false, "type": "string" }, { - "name": "info", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/RedeployRequest.Info" - } + "name": "offset", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "Services" + "activity" ] } }, - "/v1/services/{id}/resume": { - "post": { - "summary": "Resume Service", - "description": "Service resume action is allowed for the following status:\n - paused", - "operationId": "ResumeService", + "/v1/account/idenfy": { + "get": { + "summary": "Begin a session with iDenfy, emit an authToken", + "operationId": "GetIdenfyToken", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ResumeServiceReply" + "$ref": "#/definitions/GetIdenfyTokenReply" } }, "400": { @@ -8973,43 +9374,18 @@ } } }, - "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" + "Profile" ] - } - }, - "/v1/services/{id}/scale": { - "get": { - "summary": "Get Service Scaling", - "description": "Returns the current scaling configuration for a service", - "operationId": "GetServiceScaling", + }, + "post": { + "summary": "ClearIdenfyVerificationResult marks the current result for idenfy as\nsuperseded", + "operationId": "ClearIdenfyVerificationResult", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetServiceScalingReply" + "$ref": "#/definitions/ClearIdenfyVerificationResultReply" } }, "400": { @@ -9057,26 +9433,27 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the service", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/ClearIdenfyVerificationResultRequest" + } } ], "tags": [ - "Services" + "Profile" ] - }, - "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", + } + }, + "/v1/account/invite": { + "post": { + "operationId": "CreateInvite", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteServiceScalingReply" + "$ref": "#/definitions/Empty" } }, "400": { @@ -9124,26 +9501,28 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the service", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/InviteUserRequest" + } } ], "tags": [ - "Services" + "invite" ] - }, - "put": { - "summary": "Update Service Scaling", - "description": "Stores or updates the scaling configuration for a service to use manual scaling", - "operationId": "UpdateServiceScaling", + } + }, + "/v1/account/login_method": { + "get": { + "summary": "Get the login method for an email address", + "operationId": "LoginMethod", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateServiceScalingReply" + "$ref": "#/definitions/LoginMethodReply" } }, "400": { @@ -9191,44 +9570,26 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the service to scale", - "in": "path", - "required": true, + "name": "email", + "in": "query", + "required": false, "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" + "Profile" ] } }, - "/v1/deployment/{id}/scaling": { + "/v1/account/oauth": { "get": { - "summary": "Get Deployment Scaling", - "operationId": "GetDeploymentScaling", + "summary": "Get OAuth Providers", + "operationId": "GetOAuthOptions", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetDeploymentScalingReply" + "$ref": "#/definitions/GetOAuthOptionsReply" } }, "400": { @@ -9276,41 +9637,38 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "region", - "description": "(Optional) Filter on region", + "name": "action", + "description": "Which authentication flow is being initiated", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "signin", + "signup", + "register" + ], + "default": "signin" }, { - "name": "replica_index", - "description": "(Optional) Filter on replica_index", + "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": "integer", - "format": "int64" + "type": "string" } ], "tags": [ - "Deployments" + "Profile" ] - } - }, - "/v1/deployment_events": { - "get": { - "summary": "List Deployment events", - "operationId": "ListDeploymentEvents", + }, + "post": { + "summary": "Authenticate using OAuth", + "operationId": "OAuthCallback", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListDeploymentEventsReply" + "$ref": "#/definitions/OAuthCallbackReply" } }, "400": { @@ -9358,59 +9716,35 @@ }, "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": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/OAuthCallbackRequest" + } }, { - "name": "order", - "description": "(Optional) Sorts the list in the ascending or the descending order", - "in": "query", + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", "required": false, "type": "string" } ], "tags": [ - "Deployments" + "Profile" ] } }, - "/v1/deployments": { + "/v1/account/organization": { "get": { - "summary": "List Deployments", - "operationId": "ListDeployments", - "responses": { + "summary": "Get Current Organization", + "operationId": "GetCurrentOrganization", + "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListDeploymentsReply" + "$ref": "#/definitions/GetOrganizationReply" } }, "400": { @@ -9456,79 +9790,20 @@ } } }, - "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" - } - ], "tags": [ - "Deployments" + "Profile" ] } }, - "/v1/deployments/{id}": { + "/v1/account/organization_invitations": { "get": { - "summary": "Get Deployment", - "operationId": "GetDeployment", + "summary": "List User Organization Invitations", + "operationId": "ListUserOrganizationInvitations", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetDeploymentReply" + "$ref": "#/definitions/ListUserOrganizationInvitationsReply" } }, "400": { @@ -9576,28 +9851,52 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the deployment", - "in": "path", - "required": true, + "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": [ - "Deployments" + "Profile" ] } }, - "/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", + "/v1/account/organization_invitations/{id}": { + "get": { + "summary": "Get User Organization Invitation", + "operationId": "GetUserOrganizationInvitation", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CancelDeploymentReply" + "$ref": "#/definitions/GetUserOrganizationInvitationReply" } }, "400": { @@ -9646,26 +9945,26 @@ "parameters": [ { "name": "id", - "description": "The id of the deployment to cancel.", + "description": "The id of the organization invitation to get", "in": "path", "required": true, "type": "string" } ], "tags": [ - "Deployments" + "Profile" ] } }, - "/v1/provisioning/{deployment_id}/status/{stage}/{attempt}": { + "/v1/account/organization_invitations/{id}/accept": { "post": { - "summary": "Create an attempt for a stage", - "operationId": "CreateStageAttempt", + "summary": "Accept Organization Invitation", + "operationId": "AcceptOrganizationInvitation", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateStageAttemptReply" + "$ref": "#/definitions/AcceptOrganizationInvitationReply" } }, "400": { @@ -9713,19 +10012,8 @@ }, "parameters": [ { - "name": "deployment_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "stage", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attempt", + "name": "id", + "description": "The id of the organization invitation to accept", "in": "path", "required": true, "type": "string" @@ -9735,46 +10023,24 @@ "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" - } - } - } + "type": "object" } } ], "tags": [ - "Provisioning" + "Profile" ] - }, - "patch": { - "summary": "Declare stage progress", - "operationId": "DeclareStageProgress", + } + }, + "/v1/account/organization_invitations/{id}/decline": { + "post": { + "summary": "Decline Organization Invitation", + "operationId": "DeclineOrganizationInvitation", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeclareStageProgressReply" + "$ref": "#/definitions/DeclineOrganizationInvitationReply" } }, "400": { @@ -9822,19 +10088,8 @@ }, "parameters": [ { - "name": "deployment_id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "stage", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "attempt", + "name": "id", + "description": "The id of the organization invitation to decline", "in": "path", "required": true, "type": "string" @@ -9844,51 +10099,25 @@ "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" - } - } + "type": "object" } } ], "tags": [ - "Provisioning" + "Profile" ] } }, - "/v1/provisioning/{deployment_id}/status/{stage}/{attempt}/{step}": { - "patch": { - "summary": "Declare step progress", - "operationId": "DeclareStepProgress", + "/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/DeclareStepProgressReply" + "$ref": "#/definitions/ListUserOrganizationsReply" } }, "400": { @@ -9936,75 +10165,68 @@ }, "parameters": [ { - "name": "deployment_id", - "in": "path", - "required": true, + "name": "limit", + "description": "(Optional) Define pagination limit", + "in": "query", + "required": false, "type": "string" }, { - "name": "stage", - "in": "path", - "required": true, - "type": "string" - }, + "name": "offset", + "description": "(Optional) Define pagination offset", + "in": "query", + "required": false, + "type": "string" + }, { - "name": "attempt", - "in": "path", - "required": true, + "name": "order", + "description": "(Optional) Sorts the list in the ascending or the descending order", + "in": "query", + "required": false, "type": "string" }, { - "name": "step", - "in": "path", - "required": true, + "name": "search", + "description": "(Optional) Fuzzy case-insensitive search based on organization name or\norganization id", + "in": "query", + "required": false, "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" - } - } - } - } + "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": [ - "Provisioning" + "Profile" ] } }, - "/v1/docker-helper/verify": { + "/v1/account/profile": { "get": { - "summary": "Verify Docker Image", - "description": "Verify if a docker image is reachable", - "operationId": "VerifyDockerImage", + "summary": "Get Current User", + "operationId": "GetCurrentUser", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/VerifyDockerImageReply" + "$ref": "#/definitions/UserReply" } }, "400": { @@ -10052,34 +10274,25 @@ }, "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", + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", "required": false, "type": "string" } ], "tags": [ - "DockerHelper" + "Profile" ] - } - }, - "/v1/secrets": { - "get": { - "summary": "List Secrets", - "operationId": "ListSecrets", + }, + "put": { + "summary": "Update User", + "operationId": "UpdateUser", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListSecretsReply" + "$ref": "#/definitions/UserReply" } }, "400": { @@ -10127,59 +10340,32 @@ }, "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": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" + } }, { - "name": "project_id", - "description": "(Optional) A filter for the project ID", + "name": "update_mask", "in": "query", "required": false, "type": "string" } ], "tags": [ - "Secrets" + "Profile" ] }, - "post": { - "summary": "Create Secret", - "operationId": "CreateSecret", + "patch": { + "summary": "Update User", + "operationId": "UpdateUser2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateSecretReply" + "$ref": "#/definitions/UserReply" } }, "400": { @@ -10227,28 +10413,34 @@ }, "parameters": [ { - "name": "secret", + "name": "user", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/CreateSecret" + "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" } + }, + { + "name": "update_mask", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ - "Secrets" + "Profile" ] } }, - "/v1/secrets/{id}": { - "get": { - "summary": "Get Secret", - "operationId": "GetSecret", + "/v1/account/resend_validation": { + "post": { + "summary": "Resend Email Verification", + "operationId": "ResendEmailValidation", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetSecretReply" + "$ref": "#/definitions/ResendEmailValidationReply" } }, "400": { @@ -10296,24 +10488,28 @@ }, "parameters": [ { - "name": "id", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/ResendEmailValidationRequest" + } } ], "tags": [ - "Secrets" + "Profile" ] - }, - "delete": { - "summary": "Delete Secret", - "operationId": "DeleteSecret", + } + }, + "/v1/account/reset_password": { + "post": { + "summary": "Reset Password", + "operationId": "ResetPassword", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteSecretReply" + "$ref": "#/definitions/ResetPasswordReply" } }, "400": { @@ -10361,24 +10557,27 @@ }, "parameters": [ { - "name": "id", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/ResetPasswordRequest" + } } ], "tags": [ - "Secrets" + "Profile" ] - }, - "put": { - "summary": "Update Secret", - "operationId": "UpdateSecret", + } + }, + "/v1/account/settings": { + "get": { + "operationId": "GetUserSettings", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateSecretReply" + "$ref": "#/definitions/GetUserSettingsReply" } }, "400": { @@ -10424,40 +10623,17 @@ } } }, - "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" + "Profile" ] }, "patch": { - "summary": "Update Secret", - "operationId": "UpdateSecret2", + "operationId": "UpdateUserSettings", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateSecretReply" + "$ref": "#/definitions/UpdateUserSettingsReply" } }, "400": { @@ -10505,40 +10681,28 @@ }, "parameters": [ { - "name": "id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "secret", - "in": "body", + "name": "body", + "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Secret" + "$ref": "#/definitions/UpdateUserSettingsRequest" } - }, - { - "name": "update_mask", - "in": "query", - "required": false, - "type": "string" } ], "tags": [ - "Secrets" + "Profile" ] } }, - "/v1/secrets/{id}/reveal": { + "/v1/account/signup": { "post": { - "summary": "Reveal Secret", - "operationId": "RevealSecret", + "summary": "Signup", + "operationId": "Signup", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/RevealSecretReply" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -10585,35 +10749,37 @@ } }, "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", + "description": "Create new account", "in": "body", "required": true, "schema": { - "type": "object" + "$ref": "#/definitions/CreateAccountRequest" } + }, + { + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", + "required": false, + "type": "string" } ], "tags": [ - "Secrets" + "Profile" ] } }, - "/v1/domains": { - "get": { - "summary": "List Domains", - "operationId": "ListDomains", + "/v1/account/update_password": { + "post": { + "summary": "Update Password", + "operationId": "UpdatePassword", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListDomainsReply" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -10661,90 +10827,35 @@ }, "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 -.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": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/UpdatePasswordRequest" + } }, { - "name": "project_id", - "description": "(Optional) A filter for the project ID", - "in": "query", + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", "required": false, "type": "string" } ], "tags": [ - "Domains" + "Profile" ] - }, + } + }, + "/v1/account/validate/{id}": { "post": { - "summary": "Create Domain", - "operationId": "CreateDomain", + "summary": "Validate", + "operationId": "Validate", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateDomainReply" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -10792,28 +10903,34 @@ }, "parameters": [ { - "name": "domain", - "in": "body", + "name": "id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CreateDomain" - } + "type": "string" + }, + { + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", + "required": false, + "type": "string" } ], "tags": [ - "Domains" + "Profile" ] } }, - "/v1/domains/{id}": { + "/v1/billing/has_unpaid_invoices": { "get": { - "summary": "Get Domain", - "operationId": "GetDomain", + "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/GetDomainReply" + "$ref": "#/definitions/HasUnpaidInvoicesReply" } }, "400": { @@ -10859,26 +10976,19 @@ } } }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - } - ], "tags": [ - "Domains" + "billing" ] - }, - "delete": { - "summary": "Delete Domain", - "operationId": "DeleteDomain", + } + }, + "/v1/billing/manage": { + "get": { + "operationId": "Manage", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteDomainReply" + "$ref": "#/definitions/ManageReply" } }, "400": { @@ -10924,26 +11034,21 @@ } } }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - } - ], "tags": [ - "Domains" + "billing" ] - }, - "patch": { - "summary": "Update Domain", - "operationId": "UpdateDomain", + } + }, + "/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/UpdateDomainReply" + "$ref": "#/definitions/NextInvoiceReply" } }, "400": { @@ -10989,49 +11094,20 @@ } } }, - "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" + "billing" ] } }, - "/v1/domains/{id}/refresh": { - "post": { - "summary": "Refresh Domain Status", - "operationId": "RefreshDomainStatus", + "/v1/github/installation": { + "get": { + "summary": "Fetch Github Installation configuration", + "operationId": "GetGithubInstallation", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/RefreshDomainStatusReply" + "$ref": "#/definitions/GetGithubInstallationReply" } }, "400": { @@ -11077,28 +11153,18 @@ } } }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - } - ], "tags": [ - "Domains" + "organization" ] - } - }, - "/v1/app_events": { - "get": { - "summary": "List App events", - "operationId": "ListAppEvents", + }, + "post": { + "summary": "Start Github Installation", + "operationId": "GithubInstallation", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListAppEventsReply" + "$ref": "#/definitions/GithubInstallationReply" } }, "400": { @@ -11146,59 +11212,28 @@ }, "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" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/GithubInstallationRequest" + } } ], "tags": [ - "Apps" + "organization" ] } }, - "/v1/apps": { - "get": { - "summary": "List App", - "operationId": "ListApps", + "/v1/organizations": { + "post": { + "summary": "Create Organization", + "operationId": "CreateOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListAppsReply" + "$ref": "#/definitions/CreateOrganizationReply" } }, "400": { @@ -11246,46 +11281,28 @@ }, "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": "project_id", - "description": "(Optional) A filter for the project ID", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateOrganizationRequest" + } } ], "tags": [ - "Apps" + "organization" ] - }, - "post": { - "summary": "Create App", - "operationId": "CreateApp", + } + }, + "/v1/organizations/{id}": { + "get": { + "summary": "Get Organization", + "operationId": "GetOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateAppReply" + "$ref": "#/definitions/GetOrganizationReply" } }, "400": { @@ -11333,28 +11350,24 @@ }, "parameters": [ { - "name": "app", - "in": "body", + "name": "id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CreateApp" - } + "type": "string" } ], "tags": [ - "Apps" + "organization" ] - } - }, - "/v1/apps/{id}": { - "get": { - "summary": "Get App", - "operationId": "GetApp", + }, + "delete": { + "summary": "Delete an Organization", + "operationId": "DeleteOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetAppReply" + "$ref": "#/definitions/DeleteOrganizationReply" } }, "400": { @@ -11403,25 +11416,23 @@ "parameters": [ { "name": "id", - "description": "The id of the App", "in": "path", "required": true, "type": "string" } ], "tags": [ - "Apps" + "organization" ] }, - "delete": { - "summary": "Delete App", - "description": "App deletion is allowed for all status.", - "operationId": "DeleteApp", + "put": { + "summary": "Update Organization", + "operationId": "UpdateOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeleteAppReply" + "$ref": "#/definitions/UpdateOrganizationReply" } }, "400": { @@ -11470,24 +11481,37 @@ "parameters": [ { "name": "id", - "description": "The id of the App to delete", "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": [ - "Apps" + "organization" ] }, - "put": { - "summary": "Update App", - "operationId": "UpdateApp", + "patch": { + "summary": "Update Organization", + "operationId": "UpdateOrganization2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdateAppReply" + "$ref": "#/definitions/UpdateOrganizationReply" } }, "400": { @@ -11536,17 +11560,16 @@ "parameters": [ { "name": "id", - "description": "The id of the app to update.", "in": "path", "required": true, "type": "string" }, { - "name": "app", + "name": "organization", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/UpdateApp" + "$ref": "#/definitions/Organization" } }, { @@ -11557,17 +11580,20 @@ } ], "tags": [ - "Apps" + "organization" ] - }, - "patch": { - "summary": "Update App", - "operationId": "UpdateApp2", + } + }, + "/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 `s`, where ``\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/UpdateAppReply" + "$ref": "#/definitions/CreateAccessTokenReply" } }, "400": { @@ -11616,41 +11642,40 @@ "parameters": [ { "name": "id", - "description": "The id of the app to update.", + "description": "Organization id for ephemeral credential", "in": "path", "required": true, "type": "string" }, { - "name": "app", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/UpdateApp" + "type": "object", + "properties": { + "validity": { + "type": "string", + "title": "Validity of the credential" + } + } } - }, - { - "name": "update_mask", - "in": "query", - "required": false, - "type": "string" } ], "tags": [ - "Apps" + "organization" ] } }, - "/v1/apps/{id}/pause": { + "/v1/organizations/{id}/deactivate": { "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", + "summary": "Deactivate an Organization", + "operationId": "DeactivateOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/PauseAppReply" + "$ref": "#/definitions/DeactivateOrganizationReply" } }, "400": { @@ -11699,27 +11724,39 @@ "parameters": [ { "name": "id", - "description": "The id of the app to pause.", "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": [ - "Apps" + "organization" ] } }, - "/v1/apps/{id}/resume": { - "post": { - "summary": "Resume App", - "description": "App resume action is allowed for the following status:\n - paused", - "operationId": "ResumeApp", + "/v1/organizations/{id}/default_project": { + "put": { + "summary": "Update Organization's default project", + "operationId": "UpdateOrganizationDefaultProject", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ResumeAppReply" + "$ref": "#/definitions/UpdateOrganizationDefaultProjectReply" } }, "400": { @@ -11768,26 +11805,38 @@ "parameters": [ { "name": "id", - "description": "The id of the app to resume.", "in": "path", "required": true, "type": "string" - } - ], - "tags": [ - "Apps" - ] + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "default_project_id": { + "type": "string" + } + } + } + } + ], + "tags": [ + "organization" + ] } }, - "/v1/volume_events": { - "get": { - "summary": "List Persistent Volume events", - "operationId": "ListPersistentVolumeEvents", + "/v1/organizations/{id}/name": { + "put": { + "summary": "Update Organization Name", + "operationId": "UpdateOrganizationName", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListPersistentVolumeEventsReply" + "$ref": "#/definitions/UpdateOrganizationNameReply" } }, "400": { @@ -11835,59 +11884,39 @@ }, "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, + "name": "id", + "in": "path", + "required": true, "type": "string" }, { - "name": "order", - "description": "(Optional) Sorts the list in the ascending or the descending order", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } } ], "tags": [ - "PersistentVolumes" + "organization" ] } }, - "/v1/volumes": { - "get": { - "summary": "List all PersistentVolumes", - "operationId": "ListPersistentVolumes", + "/v1/organizations/{id}/plan": { + "post": { + "summary": "Update Organization plan", + "operationId": "UpdateOrganizationPlan", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListPersistentVolumesReply" + "$ref": "#/definitions/UpdateOrganizationPlanReply" } }, "400": { @@ -11935,60 +11964,42 @@ }, "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, + "name": "id", + "in": "path", + "required": true, "type": "string" }, { - "name": "project_id", - "description": "(Optional) A filter for the project ID", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "plan": { + "$ref": "#/definitions/Plan" + }, + "coupon_code": { + "type": "string" + } + } + } } ], "tags": [ - "PersistentVolumes" + "organization" ] - }, + } + }, + "/v1/organizations/{id}/reactivate": { "post": { - "summary": "Create a PersistentVolume", - "operationId": "CreatePersistentVolume", + "summary": "Reactivate an Organization", + "operationId": "ReactivateOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreatePersistentVolumeReply" + "$ref": "#/definitions/ReactivateOrganizationReply" } }, "400": { @@ -12035,29 +12046,35 @@ } }, "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/CreatePersistentVolumeRequest" + "type": "object" } } ], "tags": [ - "PersistentVolumes" + "organization" ] } }, - "/v1/volumes/{id}": { - "get": { - "summary": "Get a PersistentVolume", - "operationId": "GetPersistentVolume", + "/v1/organizations/{id}/signup_qualification": { + "post": { + "summary": "Upsert Organization's signup qualification", + "operationId": "UpsertSignupQualification", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetPersistentVolumeReply" + "$ref": "#/definitions/UpsertSignupQualificationReply" } }, "400": { @@ -12109,20 +12126,35 @@ "in": "path", "required": true, "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "signup_qualification": { + "type": "object" + } + } + } } ], "tags": [ - "PersistentVolumes" + "organization" ] - }, - "delete": { - "summary": "Delete a PersistentVolume", - "operationId": "DeletePersistentVolume", + } + }, + "/v1/organizations/{id}/switch": { + "post": { + "summary": "Switch Organization context", + "operationId": "SwitchOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/DeletePersistentVolumeReply" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -12174,20 +12206,37 @@ "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": [ - "PersistentVolumes" + "organization" ] - }, - "post": { - "summary": "Update a PersistentVolume", - "operationId": "UpdatePersistentVolume", + } + }, + "/v1/organizations/{organization_id}/budget": { + "get": { + "summary": "Get Budget", + "operationId": "GetBudget", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/UpdatePersistentVolumeReply" + "$ref": "#/definitions/GetBudgetReply" } }, "400": { @@ -12235,46 +12284,24 @@ }, "parameters": [ { - "name": "id", + "name": "organization_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" + "organization" ] - } - }, - "/v1/archives": { - "post": { - "summary": "Create Archive", - "description": "Create a signed URL to upload an archive.", - "operationId": "CreateArchive", + }, + "delete": { + "summary": "Delete Budget", + "operationId": "DeleteBudget", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/CreateArchiveReply" + "$ref": "#/definitions/DeleteBudgetReply" } }, "400": { @@ -12322,28 +12349,24 @@ }, "parameters": [ { - "name": "archive", - "in": "body", + "name": "organization_id", + "in": "path", "required": true, - "schema": { - "$ref": "#/definitions/CreateArchive" - } + "type": "string" } ], "tags": [ - "Archives" + "organization" ] - } - }, - "/v1/instance_events": { - "get": { - "summary": "List Instance events", - "operationId": "ListInstanceEvents", + }, + "post": { + "summary": "Create Budget", + "operationId": "CreateBudget", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListInstanceEventsReply" + "$ref": "#/definitions/CreateBudgetReply" } }, "400": { @@ -12391,63 +12414,39 @@ }, "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, + "name": "organization_id", + "in": "path", + "required": true, "type": "string" }, { - "name": "order", - "description": "(Optional) Sorts the list in the ascending or the descending order", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "amount": { + "type": "string", + "format": "int64", + "description": "In cents." + } + } + } } ], "tags": [ - "Instances" + "organization" ] - } - }, - "/v1/instances": { - "get": { - "summary": "List Instances", - "operationId": "ListInstances", + }, + "put": { + "summary": "Update Budget", + "operationId": "UpdateBudget", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListInstancesReply" + "$ref": "#/definitions/UpdateBudgetReply" } }, "400": { @@ -12495,120 +12494,40 @@ }, "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, + "name": "organization_id", + "in": "path", + "required": true, "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": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "amount": { + "type": "string", + "format": "int64", + "description": "In cents." + } + } + } } ], "tags": [ - "Instances" + "organization" ] } }, - "/v1/instances/{id}": { - "get": { - "summary": "Get Instance", - "operationId": "GetInstance", + "/v1/sso/canny": { + "post": { + "operationId": "CannyAuth", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetInstanceReply" + "$ref": "#/definitions/CannyAuthReply" } }, "400": { @@ -12656,27 +12575,27 @@ }, "parameters": [ { - "name": "id", - "description": "The id of the instance", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/CannyAuthRequest" + } } ], "tags": [ - "Instances" + "sso" ] } }, - "/v1/quotas/capacity": { + "/v1/sso/discourse": { "post": { - "summary": "DEPRECATED: Review Organization Capacity", - "operationId": "ReviewOrganizationCapacity", + "operationId": "DiscourseAuth", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ReviewOrganizationCapacityReply" + "$ref": "#/definitions/DiscourseAuthReply" } }, "400": { @@ -12728,24 +12647,25 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/ReviewOrganizationCapacityRequest" + "$ref": "#/definitions/DiscourseAuthRequest" } } ], "tags": [ - "Quotas" + "sso" ] } }, - "/v1/compose": { + "/v1/unscope_organization_token": { "post": { - "summary": "Create resources from compose.", - "operationId": "Compose", + "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/ComposeReply" + "$ref": "#/definitions/LoginReply" } }, "400": { @@ -12793,28 +12713,71 @@ }, "parameters": [ { - "name": "compose", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/CreateCompose" + "$ref": "#/definitions/UnscopeOrganizationTokenRequest" } + }, + { + "name": "seon-fp", + "description": "Seon Fingerprint", + "in": "header", + "required": false, + "type": "string" } ], "tags": [ - "Compose" + "organization" ] } }, - "/v1/usages": { - "get": { - "summary": "Get organization usage", - "operationId": "GetOrganizationUsage", + "/v2/account/profile": { + "put": { + "summary": "Update User V2", + "operationId": "UpdateUserV2", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetOrganizationUsageReply" + "$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": { @@ -12826,105 +12789,68 @@ }, "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": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" + } }, { - "name": "ending_time", - "description": "The ending time of the period to get data from", + "name": "update_mask", "in": "query", "required": false, - "type": "string", - "format": "date-time" + "type": "string" } ], "tags": [ - "Usages" + "Profile" ] - } - }, - "/v1/usages/details": { - "get": { - "summary": "Get organization usage details", - "operationId": "GetOrganizationUsageDetails", + }, + "patch": { + "summary": "Update User V2", + "operationId": "UpdateUserV22", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetOrganizationUsageDetailsReply" + "$ref": "#/definitions/UserReply" } }, - "default": { - "description": "An unexpected error response.", + "400": { + "description": "Validation error", "schema": { - "$ref": "#/definitions/google.rpc.Status" + "$ref": "#/definitions/ErrorWithFields" } - } - }, - "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" + "401": { + "description": "Returned when the token is not valid.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "limit", - "description": "(Optional) The number of items to return", - "in": "query", - "required": false, - "type": "string" + "403": { + "description": "Returned when the user does not have permission to access the resource.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "offset", - "description": "(Optional) The offset in the list of item to return", - "in": "query", - "required": false, - "type": "string" + "404": { + "description": "Returned when the resource does not exist.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "order", - "description": "(Optional) Sorts the list in the ascending or the descending order", - "in": "query", - "required": false, - "type": "string" + "500": { + "description": "Returned in case of server error.", + "schema": { + "$ref": "#/definitions/Error" + } }, - { - "name": "Accept", - "description": "If defined with the value 'text/csv', a csv file is returned", - "in": "header", - "required": false, - "type": "string" - } - ], - "tags": [ - "Usages" - ] - } - }, - "/v1/catalog/regions": { - "get": { - "summary": "List Region", - "operationId": "ListRegions", - "responses": { - "200": { - "description": "A successful response.", + "503": { + "description": "Service is unavailable.", "schema": { - "$ref": "#/definitions/ListRegionsReply" + "$ref": "#/definitions/Error" } }, "default": { @@ -12936,41 +12862,70 @@ }, "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": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/UpdateUserRequest.UserUpdateBody" + } }, { - "name": "id", - "description": "(Optional) A filter for regions", + "name": "update_mask", "in": "query", "required": false, "type": "string" } ], "tags": [ - "CatalogRegions" + "Profile" ] } }, - "/v1/catalog/regions/{id}": { + "/v1/search": { "get": { - "summary": "Get Region", - "operationId": "GetRegion", + "summary": "Search", + "operationId": "Search", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetRegionReply" + "$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": { @@ -12982,57 +12937,63 @@ }, "parameters": [ { - "name": "id", - "description": "The name of the region", - "in": "path", - "required": true, + "name": "query", + "description": "(Optional) Search query", + "in": "query", + "required": false, "type": "string" } ], "tags": [ - "CatalogRegions" + "Search" ] } }, - "/v1/catalog/usage": { + "/v1/git/branches": { "get": { - "operationId": "ListUsage", + "summary": "List Branches", + "operationId": "ListBranches", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ListUsageReply" + "$ref": "#/definitions/kgitproxy.ListBranchesReply" } }, - "default": { - "description": "An unexpected error response.", + "400": { + "description": "Validation error", "schema": { - "$ref": "#/definitions/google.rpc.Status" + "$ref": "#/definitions/ErrorWithFields" } - } - }, - "parameters": [ - { - "name": "region", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "CatalogInstanceUsage" - ] - } - }, - "/v1/catalog/instances": { - "get": { - "summary": "List Instances", - "operationId": "ListCatalogInstances", - "responses": { - "200": { - "description": "A successful response.", + }, + "401": { + "description": "Returned when the token is not valid.", "schema": { - "$ref": "#/definitions/ListCatalogInstancesReply" + "$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": { @@ -13044,73 +13005,84 @@ }, "parameters": [ { - "name": "limit", - "description": "(Optional) The number of items to return", + "name": "repository_id", + "description": "(Optional) Filter on one repository.", "in": "query", "required": false, "type": "string" }, { - "name": "offset", - "description": "(Optional) The offset in the list of item to return", + "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": "id", - "description": "(Optional) A filter for instances", + "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": [ - "CatalogInstances" + "Repositories" ] } }, - "/v1/catalog/instances/{id}": { + "/v1/git/repositories": { "get": { - "summary": "Get Instance", - "operationId": "GetCatalogInstance", + "summary": "List Repositories", + "operationId": "ListRepositories", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/GetCatalogInstanceReply" + "$ref": "#/definitions/kgitproxy.ListRepositoriesReply" } }, - "default": { - "description": "An unexpected error response.", + "400": { + "description": "Validation error", "schema": { - "$ref": "#/definitions/google.rpc.Status" + "$ref": "#/definitions/ErrorWithFields" } - } - }, - "parameters": [ - { - "name": "id", - "description": "The name of the instance", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "CatalogInstances" - ] - } - }, - "/v1/catalog/datacenters": { - "get": { - "summary": "List datacenters", - "operationId": "ListDatacenters", - "responses": { - "200": { - "description": "A successful response.", + }, + "401": { + "description": "Returned when the token is not valid.", "schema": { - "$ref": "#/definitions/ListDatacentersReply" + "$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": { @@ -13120,20 +13092,50 @@ } } }, + "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": [ - "CatalogDatacenters" + "Repositories" ] } }, - "/v1/search": { - "get": { - "summary": "Search", - "operationId": "Search", + "/v1/git/sync/organization/{organization_id}": { + "post": { + "summary": "Resync Organization", + "operationId": "ResyncOrganization", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/ksearch.SearchReply" + "$ref": "#/definitions/kgitproxy.ResyncOrganizationReply" } }, "400": { @@ -13181,15 +13183,14 @@ }, "parameters": [ { - "name": "query", - "description": "(Optional) Search query", - "in": "query", - "required": false, + "name": "organization_id", + "in": "path", + "required": true, "type": "string" } ], "tags": [ - "Search" + "Repositories" ] } } @@ -13204,6 +13205,14 @@ }, "additionalProperties": {} }, + "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": { @@ -13222,1924 +13231,1664 @@ } } }, - "Error": { + "Activity": { "type": "object", "properties": { - "status": { - "type": "integer", - "format": "int32" - }, - "code": { + "id": { "type": "string" }, - "message": { + "actor": { + "$ref": "#/definitions/Object" + }, + "object": { + "$ref": "#/definitions/Object" + }, + "verb": { "type": "string" + }, + "metadata": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "date-time" } } }, - "ErrorField": { + "ActivityList": { "type": "object", "properties": { - "field": { - "type": "string" + "activities": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } }, - "description": { - "type": "string" + "limit": { + "type": "integer", + "format": "int64" + }, + "offset": { + "type": "integer", + "format": "int64" + }, + "has_next": { + "type": "boolean" } } }, - "ErrorWithFields": { + "Notification": { "type": "object", "properties": { - "status": { - "type": "integer", - "format": "int32" - }, - "code": { + "id": { "type": "string" }, - "message": { - "type": "string" - }, - "fields": { - "type": "array", - "items": { - "$ref": "#/definitions/ErrorField" - } - } - } - }, - "kgitproxy.Branch": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "organization_id": { - "type": "string" - }, - "repository_id": { - "type": "string" - }, - "name": { - "type": "string" + "activity": { + "$ref": "#/definitions/Activity" }, - "is_default": { + "is_read": { "type": "boolean" }, - "is_protected": { + "is_seen": { "type": "boolean" }, - "provider": { - "$ref": "#/definitions/kgitproxy.RepositoryProvider" - } - } - }, - "kgitproxy.GitHubRepository": { - "type": "object", - "properties": { - "github_id": { - "type": "string" + "created_at": { + "type": "string", + "format": "date-time" } } }, - "kgitproxy.ListBranchesReply": { + "NotificationList": { "type": "object", "properties": { - "branches": { + "notifications": { "type": "array", "items": { - "$ref": "#/definitions/kgitproxy.Branch" - }, - "description": "The collection of branches." + "$ref": "#/definitions/Notification" + } }, "limit": { "type": "integer", - "format": "int64", - "description": "The limit in the request." + "format": "int64" }, "offset": { "type": "integer", - "format": "int64", - "description": "The offset in the request." + "format": "int64" }, "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." + "format": "int64" }, - "limit": { - "type": "integer", - "format": "int64", - "description": "The limit in the request." + "is_read": { + "type": "boolean" }, - "offset": { + "is_seen": { + "type": "boolean" + }, + "unread": { "type": "integer", - "format": "int64", - "description": "The offset in the request." + "format": "int64" }, - "count": { + "unseen": { "type": "integer", - "format": "int64", - "description": "The total number of items." + "format": "int64" } } }, - "kgitproxy.Repository": { + "Object": { "type": "object", "properties": { "id": { "type": "string" }, - "organization_id": { - "type": "string" - }, "name": { "type": "string" }, - "url": { - "type": "string" - }, - "description": { + "type": { "type": "string" }, - "is_private": { - "type": "boolean" + "metadata": { + "type": "object" }, - "is_disabled": { + "deleted": { "type": "boolean" + } + } + }, + "Error": { + "type": "object", + "properties": { + "status": { + "type": "integer", + "format": "int32" }, - "default_branch": { + "code": { "type": "string" }, - "provider": { - "$ref": "#/definitions/kgitproxy.RepositoryProvider" - }, - "last_push_date": { - "type": "string", - "format": "date-time" - }, - "github": { - "$ref": "#/definitions/kgitproxy.GitHubRepository" + "message": { + "type": "string" } } }, - "kgitproxy.RepositoryProvider": { - "type": "string", - "enum": [ - "INVALID_PROVIDER", - "GITHUB" - ], - "default": "INVALID_PROVIDER" - }, - "kgitproxy.ResyncOrganizationReply": { - "type": "object" - }, - "DeleteUserReply": { + "ErrorField": { "type": "object", "properties": { - "user": { - "$ref": "#/definitions/User" + "field": { + "type": "string" + }, + "description": { + "type": "string" } } }, - "User": { + "ErrorWithFields": { "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" + "status": { + "type": "integer", + "format": "int32" }, - "email": { + "code": { "type": "string" }, - "avatar_url": { + "message": { "type": "string" }, - "two_factor_authentication": { - "type": "boolean" + "fields": { + "type": "array", + "items": { + "$ref": "#/definitions/ErrorField" + } + } + } + }, + "CatalogGPUDetails": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int64", + "title": "The number of GPUs" }, - "last_login": { + "brand": { "type": "string", - "format": "date-time" + "title": "The brand of GPU" }, - "last_login_ip": { - "type": "string" + "memory": { + "type": "string", + "title": "GPU memory" }, - "updated_at": { + "name": { "type": "string", - "format": "date-time" + "title": "Name of GPU" + } + } + }, + "CatalogInstance": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "The name of the instance" }, - "created_at": { + "description": { "type": "string", - "format": "date-time" + "title": "A short description of the instance" }, - "newsletter_subscribed": { - "type": "boolean" + "vcpu": { + "type": "integer", + "format": "int64", + "description": "The number of cpus. Deprecated. Use vcpu_shares instead." }, - "github_id": { - "type": "string" + "memory": { + "type": "string", + "title": "The memory in bytes in a format like 5MB" }, - "github_user": { - "type": "string" + "disk": { + "type": "string", + "title": "The size of the disk in bytes in a format like 5MB" }, - "flags": { - "type": "array", - "items": { - "$ref": "#/definitions/UserFlags" - } + "price_per_second": { + "type": "string", + "title": "The price to pay per second" }, - "name": { - "type": "string" + "price_hourly": { + "type": "string", + "title": "The price to pay per hour" }, - "email_validated": { - "type": "boolean" + "price_monthly": { + "type": "string", + "title": "The price to pay per month" }, - "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" - }, - "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." - }, - "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": { + "regions": { "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" + "type": "string" + }, + "title": "The regions where this instance type is available" }, "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" + "title": "The status of the instance" }, - "count": { - "type": "integer", - "format": "int64", - "title": "The total number of items" - } - } - }, - "ListUserOrganizationsReply": { - "type": "object", - "properties": { - "organizations": { + "require_plan": { "type": "array", "items": { - "$ref": "#/definitions/Organization" + "type": "string" }, - "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" + "title": "The plan required to use instance" }, - "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" + "vcpu_shares": { + "type": "number", + "format": "float", + "description": "The number of vcpu shares reserved for the instance." }, - "lines": { - "type": "array", - "items": { - "$ref": "#/definitions/NextInvoiceReply.Line" - } + "display_name": { + "type": "string", + "title": "The display name of the instance" }, - "discounts": { + "aliases": { "type": "array", "items": { - "$ref": "#/definitions/NextInvoiceReply.Discount" - } - } - } - }, - "NextInvoiceReply.Discount": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/NextInvoiceReply.Discount.Type" - }, - "name": { - "type": "string" + "type": "string" + }, + "title": "Aliases" }, - "amount": { + "type": { "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" + "title": "The type of the instance (e.g. \"gpu\")" }, - "period": { - "$ref": "#/definitions/NextInvoiceReply.Line.Period" + "gpu": { + "$ref": "#/definitions/CatalogGPUDetails", + "title": "GPU details" }, - "plan_nickname": { - "type": "string" + "service_types": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Allowed service types for this instance (e.g. [\"web\", \"worker\"])" }, - "price": { - "$ref": "#/definitions/NextInvoiceReply.Line.Price" + "volumes_enabled": { + "type": "boolean", + "title": "Are the volumes enabled for this instance type" }, - "quantity": { - "type": "integer", - "format": "int32" + "light_sleep_enabled": { + "type": "boolean", + "title": "Is light sleep enabled for this instance type" } } }, - "NextInvoiceReply.Line.Period": { + "CatalogInstanceListItem": { "type": "object", "properties": { - "start": { + "id": { "type": "string", - "format": "date-time" + "title": "The name of the instance" }, - "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": { + "description": { "type": "string", - "title": "The state created at the origin of the OAuth flow" + "title": "A short description of the instance" }, - "code": { - "type": "string", - "title": "The code returned by the OAuth provider" + "vcpu": { + "type": "integer", + "format": "int64", + "description": "The number of cpus. Deprecated. Use vcpu_shares instead." }, - "setup_action": { + "memory": { "type": "string", - "description": "setup_action is populated in the context of a GitHub app installation\nrequest. For logins and signups, it is not set." + "title": "The memory in bytes in a format like 5MB" }, - "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": { + "disk": { "type": "string", - "title": "The name of the provider (.e.g github, google)" + "title": "The size of the disk in bytes in a format like 5MB" }, - "url": { + "price_per_second": { "type": "string", - "title": "The URL to call to initiate the OAuth flow" + "title": "The price to pay per second" }, - "state": { + "price_hourly": { "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" + "title": "The price to pay per hour" }, - "plan_updated_at": { + "price_monthly": { "type": "string", - "format": "date-time" - }, - "has_payment_method": { - "type": "boolean" - }, - "subscription_id": { - "type": "string" - }, - "current_subscription_id": { - "type": "string" - }, - "latest_subscription_id": { - "type": "string" + "title": "The price to pay per month" }, - "signup_qualification": { - "type": "object" + "regions": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The regions where this instance type is available" }, "status": { - "$ref": "#/definitions/Organization.Status" - }, - "status_message": { - "$ref": "#/definitions/OrganizationDetailedStatus" - }, - "deactivation_reason": { - "$ref": "#/definitions/Organization.DeactivationReason" + "type": "string", + "title": "The status of the instance" }, - "verified": { - "type": "boolean" + "require_plan": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The plan required to use instance" }, - "qualifies_for_hobby23": { - "type": "boolean" + "vcpu_shares": { + "type": "number", + "format": "float", + "description": "The number of vcpu shares reserved for the instance." }, - "reprocess_after": { + "display_name": { "type": "string", - "format": "date-time" - }, - "trialing": { - "type": "boolean" + "title": "The display name of the instance" }, - "trial_starts_at": { - "type": "string", - "format": "date-time" + "aliases": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Aliases" }, - "trial_ends_at": { + "type": { "type": "string", - "format": "date-time" + "title": "The type of the instance (e.g. \"gpu\")" }, - "email_domain_allowlist": { + "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" } }, - "default_project_id": { - "type": "string" + "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" } - }, - "title": "Represent an Organization" + } }, - "Organization.DeactivationReason": { + "AvailabilityLevel": { "type": "string", "enum": [ - "INVALID", - "REQUESTED_BY_OWNER", - "SUBSCRIPTION_TERMINATION", - "LOCKED_BY_ADMIN", - "VERIFICATION_FAILED", - "TRIAL_DID_NOT_CONVERT" + "UNKNOWN", + "LOW", + "MEDIUM", + "HIGH" ], - "default": "INVALID" + "default": "UNKNOWN" }, - "Organization.Status": { - "type": "string", - "enum": [ - "WARNING", - "LOCKED", - "ACTIVE", - "DEACTIVATING", - "DEACTIVATED", - "DELETING", - "DELETED" - ], - "default": "WARNING" + "CatalogUsage": { + "type": "object", + "properties": { + "instances": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/InstanceAvailability" + } + } + } }, - "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" + "InstanceAvailability": { + "type": "object", + "properties": { + "regions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/RegionAvailability" + } + }, + "availability": { + "$ref": "#/definitions/AvailabilityLevel" + } + } }, - "OrganizationInvitation": { + "ListUsageReply": { "type": "object", "properties": { - "id": { - "type": "string" + "usage": { + "$ref": "#/definitions/CatalogUsage", + "title": "The Usage retrieved" + } + } + }, + "RegionAvailability": { + "type": "object", + "properties": { + "availability": { + "$ref": "#/definitions/AvailabilityLevel" + } + } + }, + "GetRegionReply": { + "type": "object", + "properties": { + "region": { + "$ref": "#/definitions/Region", + "title": "The Region retrieved" + } + } + }, + "ListRegionsReply": { + "type": "object", + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/definitions/RegionListItem" + } }, - "email": { - "type": "string" + "limit": { + "type": "integer", + "format": "int64", + "title": "The limit in the request" }, - "role": { - "$ref": "#/definitions/UserRole.Role" + "offset": { + "type": "integer", + "format": "int64", + "title": "The offset in the request" }, - "status": { - "$ref": "#/definitions/OrganizationInvitation.Status" + "count": { + "type": "integer", + "format": "int64", + "title": "The total number of items" + } + } + }, + "Region": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "The id of the region" }, - "expires_at": { + "name": { "type": "string", - "format": "date-time" + "title": "The name of the region" }, - "organization_id": { - "type": "string" + "coordinates": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The coordinates of the region (lat/long)" }, - "organization": { - "$ref": "#/definitions/PublicOrganization" + "status": { + "type": "string", + "title": "The status of the region" }, - "invitee_id": { - "type": "string" + "instances": { + "type": "array", + "items": { + "type": "string" + }, + "title": "A list of instances available in this region" }, - "invitee": { - "$ref": "#/definitions/PublicUser" + "datacenters": { + "type": "array", + "items": { + "type": "string" + }, + "title": "A list of datacenters available in this region" }, - "inviter_id": { - "type": "string" + "volumes_enabled": { + "type": "boolean", + "title": "Are the volumes enabled for this instance type" }, - "inviter": { - "$ref": "#/definitions/PublicUser" + "scope": { + "type": "string", + "description": "The scope of the region, continent, metropolitan area, etc." } - } - }, - "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": { + "RegionListItem": { "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "title": "The id of the region" }, "name": { - "type": "string" + "type": "string", + "title": "The name of the region" }, - "plan": { - "$ref": "#/definitions/Plan" + "coordinates": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The coordinates of the region (lat/long)" }, "status": { - "$ref": "#/definitions/Organization.Status" + "type": "string", + "title": "The status of the region" }, - "external_id": { - "type": "string" + "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." } } }, - "PublicUser": { + "DatacenterListItem": { "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "title": "e.g. \"par1\"" }, - "email": { - "type": "string" + "region_id": { + "type": "string", + "title": "e.g. \"par\"" }, - "name": { - "type": "string" + "domain": { + "type": "string", + "title": "e.g. \"all-par1.infra.prod.koyeb.com\"" }, - "avatar_url": { - "type": "string" + "coordinates": { + "type": "array", + "items": { + "type": "string" + }, + "title": "e.g. \"8.856614\" ,\"2.352221\"?" }, - "github_id": { - "type": "string" + "use_gpu": { + "type": "boolean", + "title": "e.g. true" }, - "github_user": { - "type": "string" + "regions": { + "type": "array", + "items": { + "type": "string" + }, + "title": "e.g. \"par\", \"fra\"" } } }, - "ReactivateOrganizationReply": { + "ListDatacentersReply": { "type": "object", "properties": { - "organization": { - "$ref": "#/definitions/Organization" + "datacenters": { + "type": "array", + "items": { + "$ref": "#/definitions/DatacenterListItem" + } } } }, - "ResendEmailValidationReply": { - "type": "object" - }, - "ResendEmailValidationRequest": { - "type": "object" - }, - "ResetPasswordReply": { - "type": "object" + "ExecCommandIO": { + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "byte", + "description": "Data is base64 encoded" + }, + "close": { + "type": "boolean", + "description": "Indicate last data frame" + } + } }, - "ResetPasswordRequest": { + "ExecCommandReply": { "type": "object", - "example": { - "email": "john@snow.com" - }, "properties": { - "email": { - "type": "string" + "stdout": { + "$ref": "#/definitions/ExecCommandIO" + }, + "stderr": { + "$ref": "#/definitions/ExecCommandIO" + }, + "exited": { + "type": "boolean" + }, + "exit_code": { + "type": "integer", + "format": "int32" } } }, - "Token": { + "ExecCommandRequest.Body": { "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" + "command": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Command to exec. Mandatory in the first frame sent" }, - "user_id": { - "type": "string" + "tty_size": { + "$ref": "#/definitions/ExecCommandRequest.TerminalSize" }, - "organization_id": { + "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" }, - "expires_at": { + "created_at": { "type": "string", "format": "date-time" + }, + "labels": { + "type": "object" } } }, - "UnscopeOrganizationTokenRequest": { - "type": "object" + "QueryLogsReply": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/LogEntry" + } + }, + "pagination": { + "$ref": "#/definitions/QueryLogsReplyPagination" + } + } }, - "UpdateBudgetReply": { + "QueryLogsReplyPagination": { "type": "object", "properties": { - "budget": { - "$ref": "#/definitions/Budget" + "has_more": { + "type": "boolean" + }, + "next_start": { + "type": "string", + "format": "date-time" + }, + "next_end": { + "type": "string", + "format": "date-time" } } }, - "UpdateOrganizationDefaultProjectReply": { + "GetMetricsReply": { "type": "object", "properties": { - "organization": { - "$ref": "#/definitions/Organization" + "metrics": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetricsReply.Metric" + } } } }, - "UpdateOrganizationNameReply": { + "GetMetricsReply.Metric": { "type": "object", "properties": { - "organization": { - "$ref": "#/definitions/Organization" + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "samples": { + "type": "array", + "items": { + "$ref": "#/definitions/Sample" + } } } }, - "UpdateOrganizationPlanReply": { + "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": { - "organization": { - "$ref": "#/definitions/Organization" + "timestamp": { + "type": "string" + }, + "value": { + "type": "number", + "format": "double" } } }, - "UpdateOrganizationReply": { + "GetInstanceReply": { "type": "object", "properties": { - "organization": { - "$ref": "#/definitions/Organization" + "instance": { + "$ref": "#/definitions/Instance" } } }, - "UpdatePasswordRequest": { + "Instance": { "type": "object", - "example": { - "id": "...", - "password": "..." - }, "properties": { "id": { "type": "string" }, - "password": { + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + }, + "organization_id": { "type": "string" - } - } - }, - "UpdateUserRequest.UserUpdateBody": { - "type": "object", - "properties": { - "id": { + }, + "app_id": { "type": "string" }, - "email": { + "service_id": { "type": "string" }, - "current_password": { + "regional_deployment_id": { "type": "string" }, - "password": { + "allocation_id": { "type": "string" }, - "newsletter_subscribed": { - "type": "boolean" + "type": { + "type": "string" }, - "name": { + "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." } } }, - "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" - } - } - }, - "UserReply": { - "type": "object", - "properties": { - "user": { - "$ref": "#/definitions/User" - } - } - }, - "UserRole.Role": { + "Instance.Status": { "type": "string", "enum": [ - "INVALID", - "OWNER" + "ALLOCATING", + "STARTING", + "HEALTHY", + "UNHEALTHY", + "STOPPING", + "STOPPED", + "ERROR", + "SLEEPING" ], - "default": "INVALID" + "default": "ALLOCATING" }, - "UserSettings": { + "InstanceEvent": { "type": "object", "properties": { "id": { "type": "string" }, - "user_id": { + "when": { + "type": "string", + "format": "date-time" + }, + "organization_id": { "type": "string" }, - "failed_deployment_email_notification": { - "type": "boolean" + "instance_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "message": { + "type": "string" + }, + "metadata": { + "type": "object" } } }, - "Activity": { + "InstanceListItem": { "type": "object", "properties": { "id": { "type": "string" }, - "actor": { - "$ref": "#/definitions/Object" + "created_at": { + "type": "string", + "format": "date-time" }, - "object": { - "$ref": "#/definitions/Object" + "updated_at": { + "type": "string", + "format": "date-time" }, - "verb": { + "organization_id": { "type": "string" }, - "metadata": { - "type": "object" + "app_id": { + "type": "string" }, - "created_at": { + "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", - "format": "date-time" + "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." } } }, - "ActivityList": { + "ListInstanceEventsReply": { "type": "object", "properties": { - "activities": { + "events": { "type": "array", "items": { - "$ref": "#/definitions/Activity" - } + "$ref": "#/definitions/InstanceEvent" + }, + "title": "The collection of events" }, "limit": { "type": "integer", - "format": "int64" + "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" }, - "offset": { + "count": { "type": "integer", - "format": "int64" + "format": "int64", + "title": "The total number of items" }, - "has_next": { - "type": "boolean" + "order": { + "type": "string", + "title": "The order in the request" } } }, - "Object": { + "VerifyDockerImageReply": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" + "success": { + "type": "boolean", + "title": "Whether the image is accessible or not" }, - "metadata": { - "type": "object" + "reason": { + "type": "string", + "title": "(Optional) If the image is not accessible, the reason" }, - "deleted": { - "type": "boolean" + "code": { + "$ref": "#/definitions/VerifyDockerImageReply.ErrCode", + "title": "(Optional) If the image is not accessible, return an error code" } } }, - "Empty": { - "type": "object" - }, - "kgitproxy.GithubInstallation.Status": { - "type": "string", - "enum": [ - "INVALID", - "INSTALLED", - "SUSPENDED", - "DELETED" - ], - "default": "INVALID" - }, - "kgitproxy.IndexingStatus": { + "VerifyDockerImageReply.ErrCode": { "type": "string", "enum": [ - "INVALID_INDEXING_STATUS", - "NOT_STARTED", - "IN_PROGRESS", - "COMPLETED" + "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": "INVALID_INDEXING_STATUS" + "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" }, - "AppsSummary": { + "BasicAuthPolicy": { "type": "object", "properties": { - "total": { - "type": "string", - "format": "int64", - "title": "Total number of apps" + "username": { + "type": "string" }, - "by_status": { - "type": "object", - "additionalProperties": { - "type": "string", - "format": "int64" - }, - "title": "Number of apps grouped by status" + "password": { + "type": "string" } } }, - "DomainsSummary": { + "SecurityPolicies": { "type": "object", "properties": { - "total": { - "type": "string", - "format": "int64", - "title": "Total number of domains" + "basic_auths": { + "type": "array", + "items": { + "$ref": "#/definitions/BasicAuthPolicy" + } }, - "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" + "api_keys": { + "type": "array", + "items": { + "type": "string" + } } } }, - "InstancesSummary": { + "ArchiveSource": { "type": "object", "properties": { - "total": { + "id": { "type": "string", - "format": "int64", - "title": "Total number of instances" + "title": "The ID of the archive to deploy" }, - "by_type": { - "type": "object", - "additionalProperties": { - "type": "string", - "format": "int64" - }, - "title": "Number of instances grouped by type" + "buildpack": { + "$ref": "#/definitions/BuildpackBuilder" + }, + "docker": { + "$ref": "#/definitions/DockerBuilder" } } }, - "MembersSummary": { + "BuildpackBuilder": { "type": "object", "properties": { - "total": { + "build_command": { "type": "string", - "format": "int64", - "title": "Number of members" + "title": "A command used to override the build command, run after all build steps" }, - "invitations_by_status": { - "type": "object", - "additionalProperties": { - "type": "string", - "format": "int64" - }, - "title": "Number of invitations grouped by status" + "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" } } }, - "NeonPostgresSummary": { + "ConfigFile": { "type": "object", "properties": { - "total": { + "path": { "type": "string", - "format": "int64", - "title": "Total number of databases" + "title": "the path where the file is copied" }, - "by_instance_type": { - "type": "object", - "additionalProperties": { - "type": "string", - "format": "int64" - }, - "title": "Number of databases grouped by instance type" + "permissions": { + "type": "string", + "title": "the permissions of the file in format 0644" + }, + "content": { + "type": "string", + "title": "the content of the file" } } }, - "OrganizationSummary": { + "DeploymentHealthCheck": { "type": "object", "properties": { - "organization_id": { - "type": "string" - }, - "instances": { - "$ref": "#/definitions/InstancesSummary" - }, - "apps": { - "$ref": "#/definitions/AppsSummary" + "grace_period": { + "type": "integer", + "format": "int64", + "title": "An optional initial period in seconds to wait for the instance to become healthy, default is 5s" }, - "services": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/ServiceSummary" - }, - "title": "Number of services grouped by type" + "interval": { + "type": "integer", + "format": "int64", + "title": "An optional period in seconds between two health checks, default is 60s" }, - "domains": { - "$ref": "#/definitions/DomainsSummary" + "restart_limit": { + "type": "integer", + "format": "int64", + "title": "An optional number of consecutive failures before attempting to restart the service, default is 3" }, - "secrets": { - "$ref": "#/definitions/SecretsSummary" + "timeout": { + "type": "integer", + "format": "int64", + "title": "An optional maximum time to wait in seconds before considering the check as a failure, default is 5s" }, - "neon_postgres": { - "$ref": "#/definitions/NeonPostgresSummary" + "tcp": { + "$ref": "#/definitions/TCPHealthCheck" }, - "members": { - "$ref": "#/definitions/MembersSummary" + "http": { + "$ref": "#/definitions/HTTPHealthCheck" } } }, - "SecretsSummary": { + "DeploymentProvisioningInfo": { "type": "object", "properties": { - "total": { + "sha": { "type": "string", - "format": "int64", - "title": "Total number of secrets" + "description": "The git sha for this build (we resolve the reference at the start of the build)." }, - "by_type": { - "type": "object", - "additionalProperties": { - "type": "string", - "format": "int64" - }, - "title": "Number of secrets grouped by type" - } - } - }, - "ServiceSummary": { - "type": "object", - "properties": { - "total": { + "image": { "type": "string", - "format": "int64", - "title": "Total number of services" - }, - "by_status": { - "type": "object", - "additionalProperties": { - "type": "string", - "format": "int64" + "description": "The docker image built as a result of this build." + }, + "stages": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentProvisioningInfo.Stage" }, - "title": "Number of services grouped by status" + "description": "Some info about the build." } } }, - "CreateCredential": { + "DeploymentProvisioningInfo.Stage": { "type": "object", "properties": { "name": { - "type": "string", - "title": "Credential name" + "type": "string" }, - "description": { - "type": "string", - "title": "Credential description" + "status": { + "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status" }, - "type": { - "$ref": "#/definitions/Credential.Type", - "title": "Credential type" + "messages": { + "type": "array", + "items": { + "type": "string" + } }, - "organization_id": { + "started_at": { "type": "string", - "title": "Organization id for user credential" - } - } - }, - "CreateCredentialReply": { - "type": "object", - "properties": { - "credential": { - "$ref": "#/definitions/Credential" + "format": "date-time" + }, + "finished_at": { + "type": "string", + "format": "date-time" + }, + "build_attempts": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt" + } } } }, - "Credential": { + "DeploymentProvisioningInfo.Stage.BuildAttempt": { "type": "object", "properties": { "id": { - "type": "string" + "type": "integer", + "format": "int64" }, - "type": { - "$ref": "#/definitions/Credential.Type" + "status": { + "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status" }, - "name": { - "type": "string" + "messages": { + "type": "array", + "items": { + "type": "string" + } }, - "token": { - "type": "string" + "started_at": { + "type": "string", + "format": "date-time" }, - "description": { - "type": "string" + "finished_at": { + "type": "string", + "format": "date-time" }, - "user_id": { - "type": "string" + "steps": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep" + } }, - "organization_id": { + "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" }, - "updated_at": { - "type": "string", - "format": "date-time" + "status": { + "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status" }, - "created_at": { + "messages": { + "type": "array", + "items": { + "type": "string" + } + }, + "started_at": { "type": "string", "format": "date-time" }, - "expires_at": { + "finished_at": { "type": "string", "format": "date-time" } } }, - "Credential.Type": { + "DeploymentProvisioningInfo.Stage.Status": { "type": "string", "enum": [ - "INVALID", - "USER", - "ORGANIZATION" + "UNKNOWN", + "PENDING", + "RUNNING", + "FAILED", + "COMPLETED", + "ABORTED" ], - "default": "INVALID" - }, - "DeleteCredentialReply": { - "type": "object" - }, - "GetCredentialReply": { - "type": "object", - "properties": { - "credential": { - "$ref": "#/definitions/Credential" - } - } + "default": "UNKNOWN" }, - "ListCredentialsReply": { + "DeploymentScalingTarget": { "type": "object", "properties": { - "credentials": { - "type": "array", - "items": { - "$ref": "#/definitions/Credential" - } + "average_cpu": { + "$ref": "#/definitions/DeploymentScalingTargetAverageCPU" }, - "limit": { - "type": "integer", - "format": "int64" + "average_mem": { + "$ref": "#/definitions/DeploymentScalingTargetAverageMem" }, - "offset": { - "type": "integer", - "format": "int64" + "requests_per_second": { + "$ref": "#/definitions/DeploymentScalingTargetRequestsPerSecond" }, - "count": { - "type": "integer", - "format": "int64" + "concurrent_requests": { + "$ref": "#/definitions/DeploymentScalingTargetConcurrentRequests" + }, + "requests_response_time": { + "$ref": "#/definitions/DeploymentScalingTargetRequestsResponseTime" + }, + "sleep_idle_delay": { + "$ref": "#/definitions/DeploymentScalingTargetSleepIdleDelay" } } }, - "UpdateCredentialReply": { + "DeploymentScalingTargetAverageCPU": { "type": "object", "properties": { - "credential": { - "$ref": "#/definitions/Credential" + "value": { + "type": "integer", + "format": "int64" } } }, - "LoginRequest": { + "DeploymentScalingTargetAverageMem": { "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" + "value": { + "type": "integer", + "format": "int64" } } }, - "LogoutReply": { - "type": "object" - }, - "ConfirmOrganizationActionReply": { - "type": "object" - }, - "GetIntercomProfileReply": { + "DeploymentScalingTargetConcurrentRequests": { "type": "object", "properties": { - "hash": { - "type": "string" + "value": { + "type": "integer", + "format": "int64" } } }, - "CheckCouponReply": { + "DeploymentScalingTargetRequestsPerSecond": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "percent_off": { - "type": "number", - "format": "float" - }, - "amount_off": { - "type": "string", + "value": { + "type": "integer", "format": "int64" - }, - "currency": { - "type": "string" } } }, - "RedeemCouponReply": { - "type": "object" - }, - "RedeemCouponRequest": { + "DeploymentScalingTargetRequestsResponseTime": { "type": "object", "properties": { - "code": { - "type": "string" + "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." } } }, - "CreateProject": { + "DeploymentScalingTargetSleepIdleDelay": { "type": "object", "properties": { - "name": { - "type": "string", - "title": "Project name" + "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." }, - "description": { - "type": "string", - "title": "Project description" + "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." } } }, - "CreateProjectReply": { + "DeploymentStrategy": { "type": "object", "properties": { - "project": { - "$ref": "#/definitions/Project" + "type": { + "$ref": "#/definitions/DeploymentStrategyType", + "title": "Strategy type" } } }, - "DeleteProjectReply": { - "type": "object" - }, - "GetProjectReply": { - "type": "object", - "properties": { - "project": { - "$ref": "#/definitions/Project" - } - } + "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." }, - "ListProjectsReply": { + "DockerBuilder": { "type": "object", "properties": { - "projects": { + "dockerfile": { + "type": "string", + "title": "A path to the Dockerfile" + }, + "entrypoint": { "type": "array", "items": { - "$ref": "#/definitions/Project" - } + "type": "string" + }, + "title": "The docker ENTRYPOINT" }, - "limit": { - "type": "integer", - "format": "int64" + "command": { + "type": "string", + "title": "The docker CMD" }, - "offset": { - "type": "integer", - "format": "int64" + "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" } } }, - "Project": { + "DockerSource": { "type": "object", "properties": { - "id": { + "image": { "type": "string" }, - "name": { + "command": { "type": "string" }, - "description": { - "type": "string" + "args": { + "type": "array", + "items": { + "type": "string" + } }, - "organization_id": { + "image_registry_secret": { "type": "string" }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "created_at": { - "type": "string", - "format": "date-time" + "entrypoint": { + "type": "array", + "items": { + "type": "string" + } }, - "service_count": { - "type": "string", - "format": "int64", - "title": "Number of services in this project" + "privileged": { + "type": "boolean", + "title": "A flag to run the container in privileged mode" } } }, - "UpdateProjectReply": { + "Env": { "type": "object", "properties": { - "project": { - "$ref": "#/definitions/Project" + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "secret": { + "type": "string" } } }, - "ListOrganizationMembersReply": { + "GetRegionalDeploymentReply": { "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" + "regional_deployment": { + "$ref": "#/definitions/RegionalDeployment" } } }, - "OrganizationMember": { + "GitSource": { "type": "object", "properties": { - "id": { - "type": "string" + "repository": { + "type": "string", + "description": "A url to a git repository (contains the provider as well) .e.g: github.com/koyeb/test." }, - "organization_id": { - "type": "string" + "branch": { + "type": "string", + "title": "A git branch that will be tracked for new commits and deployments will be created" }, - "user_id": { - "type": "string" + "tag": { + "type": "string", + "title": "A git tag that should be built" }, - "external_id": { - "type": "string" + "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)" }, - "joined_at": { + "build_command": { "type": "string", - "format": "date-time" + "title": "A command used to override the build command, run after all build steps \u2014 deprecated, use buildpack.build_command instead" }, - "role": { - "$ref": "#/definitions/UserRole.Role" + "run_command": { + "type": "string", + "title": "A command used to override the default run command - deprecated, use buildpack.run_command instead" }, - "status": { - "$ref": "#/definitions/OrganizationMember.Status" + "no_deploy_on_push": { + "type": "boolean", + "title": "A flag to disable a new deployment when a push event is detected" }, - "user": { - "$ref": "#/definitions/PublicUser" + "workdir": { + "type": "string", + "title": "A subdirectory to use as the build directory" }, - "organization": { - "$ref": "#/definitions/PublicOrganization" - } - } - }, - "OrganizationMember.Status": { - "type": "string", - "enum": [ - "INVALID", - "ACTIVE", - "DELETED" - ], - "default": "INVALID" - }, - "RemoveOrganizationMemberReply": { - "type": "object", - "properties": { - "member": { - "$ref": "#/definitions/OrganizationMember" + "buildpack": { + "$ref": "#/definitions/BuildpackBuilder" + }, + "docker": { + "$ref": "#/definitions/DockerBuilder" } } }, - "ConfirmPaymentAuthorizationReply": { + "HTTPHeader": { "type": "object", "properties": { - "payment_method": { - "$ref": "#/definitions/PaymentMethod" + "key": { + "type": "string" + }, + "value": { + "type": "string" } } }, - "CreatePaymentAuthorizationReply": { + "HTTPHealthCheck": { "type": "object", "properties": { - "payment_method": { - "$ref": "#/definitions/PaymentMethod" + "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" } } }, - "CreatePaymentAuthorizationRequest": { - "type": "object" - }, - "DeletePaymentMethodReply": { - "type": "object" - }, - "GetPaymentMethodReply": { + "ListRegionalDeploymentEventsReply": { "type": "object", "properties": { - "payment_method": { - "$ref": "#/definitions/PaymentMethod" + "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" } } }, - "ListPaymentMethodsReply": { + "ListRegionalDeploymentsReply": { "type": "object", "properties": { - "payment_methods": { + "regional_deployments": { "type": "array", "items": { - "$ref": "#/definitions/PaymentMethod" + "$ref": "#/definitions/RegionalDeploymentListItem" }, - "title": "The collection of payment methods" + "title": "The collection of regional deployments" }, "limit": { "type": "integer", @@ -15155,10 +14904,26 @@ "type": "integer", "format": "int64", "title": "The total number of items" + }, + "has_next": { + "type": "boolean", + "title": "If there is more items after in the collection" } } }, - "PaymentMethod": { + "Port": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "format": "int64" + }, + "protocol": { + "type": "string" + } + } + }, + "RegionalDeployment": { "type": "object", "properties": { "id": { @@ -15172,21 +14937,46 @@ "type": "string", "format": "date-time" }, - "version": { + "scheduled_at": { "type": "string", - "format": "uint64" + "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" }, - "type": { + "app_id": { "type": "string" }, - "provider": { + "service_id": { + "type": "string" + }, + "region": { + "type": "string" + }, + "parent_id": { + "type": "string" + }, + "child_id": { "type": "string" }, "status": { - "$ref": "#/definitions/PaymentMethod.Status" + "$ref": "#/definitions/RegionalDeployment.Status" }, "messages": { "type": "array", @@ -15194,293 +14984,356 @@ "type": "string" } }, - "stripe_payment_method_id": { - "type": "string" - }, - "authorization_verified_at": { - "type": "string", - "format": "date-time" - }, - "authorization_canceled_at": { - "type": "string", - "format": "date-time" + "definition": { + "$ref": "#/definitions/RegionalDeploymentDefinition" }, - "authorization_stripe_payment_intent_id": { - "type": "string" + "datacenters": { + "type": "array", + "items": { + "type": "string" + } }, - "authorization_stripe_payment_intent_client_secret": { - "type": "string" + "metadata": { + "$ref": "#/definitions/RegionalDeploymentMetadata" }, - "card_brand": { - "type": "string" + "provisioning_info": { + "$ref": "#/definitions/DeploymentProvisioningInfo" }, - "card_country": { - "type": "string" + "role": { + "$ref": "#/definitions/RegionalDeployment.Role" }, - "card_funding": { - "type": "string" + "version": { + "type": "string", + "format": "uint64" }, - "card_fingerprint": { - "type": "string" + "deployment_group": { + "type": "string", + "title": "Legacy stuff" }, - "card_last_digits": { + "deployment_id": { "type": "string" - }, - "card_expiration_month": { - "type": "integer", - "format": "int64" - }, - "card_expiration_year": { - "type": "integer", - "format": "int64" } } }, - "PaymentMethod.Status": { + "RegionalDeployment.Role": { "type": "string", "enum": [ "INVALID", - "CREATED", - "AUTHORIZED", - "DECLINED", - "CANCELED", - "EXPIRED", - "UNCHECKED" + "ACTIVE", + "UPCOMING", + "CURRENT" ], "default": "INVALID" }, - "DomainLoadBalancerQuotas": { - "type": "object", - "properties": { - "max_koyeb": { - "type": "integer", - "format": "int64" - } - } - }, - "GetQuotasReply": { - "type": "object", - "properties": { - "quotas": { - "$ref": "#/definitions/Quotas" - } - } + "RegionalDeployment.Status": { + "type": "string", + "enum": [ + "PENDING", + "PROVISIONING", + "SCHEDULED", + "CANCELING", + "CANCELED", + "ALLOCATING", + "STARTING", + "HEALTHY", + "DEGRADED", + "UNHEALTHY", + "STOPPING", + "STOPPED", + "ERRORING", + "ERROR", + "SLEEPING" + ], + "default": "PENDING" }, - "LifecycleQuotas": { + "RegionalDeploymentDefinition": { "type": "object", "properties": { - "delete_after_sleep_min": { - "type": "integer", - "format": "int64", - "title": "delete after sleep limits" + "name": { + "type": "string" }, - "delete_after_sleep_max": { - "type": "integer", - "format": "int64" + "type": { + "$ref": "#/definitions/RegionalDeploymentDefinition.Type" }, - "delete_after_create_min": { - "type": "integer", - "format": "int64", - "title": "delete after create limits" + "strategy": { + "$ref": "#/definitions/DeploymentStrategy" }, - "delete_after_create_max": { - "type": "integer", - "format": "int64" + "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" + }, + "docker": { + "$ref": "#/definitions/DockerSource" + }, + "git": { + "$ref": "#/definitions/GitSource" + }, + "archive": { + "$ref": "#/definitions/ArchiveSource" } } }, - "PersistentVolumeQuotas": { + "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": { - "max_total_size": { - "type": "integer", - "format": "int64", - "description": "MaxTotalSize for all volumes on a region (in Gigabyte / GB)." + "id": { + "type": "string" }, - "max_volume_size": { - "type": "integer", - "format": "int64", - "description": "MaxVolumeSize for one volume (in Gigabyte / GB)." + "when": { + "type": "string", + "format": "date-time" }, - "max_per_instance_size": { - "type": "integer", - "format": "int64", - "description": "MaxPerInstanceSize for all volumes on an instance (in Gigabyte / GB)." + "organization_id": { + "type": "string" + }, + "regional_deployment_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "message": { + "type": "string" + }, + "metadata": { + "type": "object" } } }, - "Quotas": { + "RegionalDeploymentListItem": { "type": "object", "properties": { - "apps": { - "type": "string", - "format": "int64" - }, - "services": { - "type": "string", - "format": "int64" - }, - "domains": { - "type": "string", - "format": "int64", - "title": "Deprecated, use custom_domains instead" + "id": { + "type": "string" }, - "services_by_app": { + "created_at": { "type": "string", - "format": "int64" + "format": "date-time" }, - "service_provisioning_concurrency": { + "updated_at": { "type": "string", - "format": "int64" + "format": "date-time" }, - "memory_mb": { - "type": "string", - "format": "int64" + "region": { + "type": "string" }, - "instance_types": { - "type": "array", - "items": { - "type": "string" - } + "status": { + "$ref": "#/definitions/RegionalDeployment.Status" }, - "regions": { + "messages": { "type": "array", "items": { "type": "string" } }, - "max_organization_members": { + "definition": { + "$ref": "#/definitions/RegionalDeploymentDefinition" + } + } + }, + "RegionalDeploymentMesh": { + "type": "string", + "enum": [ + "REGIONAL_DEPLOYMENT_MESH_AUTO", + "REGIONAL_DEPLOYMENT_MESH_ENABLED", + "REGIONAL_DEPLOYMENT_MESH_DISABLED" + ], + "default": "REGIONAL_DEPLOYMENT_MESH_AUTO" + }, + "RegionalDeploymentMetadata": { + "type": "object" + }, + "RegionalDeploymentVolume": { + "type": "object", + "properties": { + "id": { "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" - } + "title": "the id of the volume" }, - "custom_domains": { + "path": { "type": "string", - "format": "int64" - }, - "domains_load_balancer": { - "$ref": "#/definitions/DomainLoadBalancerQuotas" - }, - "metrics_retention": { - "type": "integer", - "format": "int32", - "title": "Time in days" + "title": "the path where the volume is mounted to" }, - "logs_retention": { + "replica_index": { "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": { + "format": "int64", + "title": "the replica index to mount the volume to" + } + } + }, + "Route": { + "type": "object", + "properties": { + "port": { "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" + "path": { + "type": "string" }, - "max_projects": { - "type": "string", - "format": "int64" + "security_policies": { + "$ref": "#/definitions/SecurityPolicies" } } }, - "ScaleToZeroQuotas": { + "Scaling": { "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": { + "min": { "type": "integer", "format": "int64" }, - "is_light_sleep_enabled": { - "type": "boolean", - "title": "light sleep limits" - }, - "light_sleep_idle_delay_min": { + "max": { "type": "integer", "format": "int64" }, - "light_sleep_idle_delay_max": { + "targets": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentScalingTarget" + } + } + } + }, + "TCPHealthCheck": { + "type": "object", + "properties": { + "port": { "type": "integer", - "format": "int64" + "format": "int64", + "title": "The port to use to perform the health check, must be declared in the ports section" } } }, - "CreateOrganizationInvitationReply": { + "CreatePersistentVolumeReply": { "type": "object", "properties": { - "invitation": { - "$ref": "#/definitions/OrganizationInvitation", - "title": "The organization invitation sent" + "volume": { + "$ref": "#/definitions/PersistentVolume" } } }, - "CreateOrganizationInvitationRequest": { + "CreatePersistentVolumeRequest": { "type": "object", "properties": { - "email": { + "volume_type": { + "$ref": "#/definitions/PersistentVolumeBackingStore", + "title": "the volume backing store type" + }, + "name": { "type": "string", - "title": "The email of the person to invite" + "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" + }, + "project_id": { + "type": "string", + "title": "(Optional) The project ID to associate with the volume" } } }, - "DeleteOrganizationInvitationReply": { - "type": "object" + "DeletePersistentVolumeReply": { + "type": "object", + "properties": { + "volume": { + "$ref": "#/definitions/PersistentVolume" + } + } }, - "GetOrganizationInvitationReply": { + "GetPersistentVolumeReply": { "type": "object", "properties": { - "invitation": { - "$ref": "#/definitions/OrganizationInvitation" + "volume": { + "$ref": "#/definitions/PersistentVolume" } } }, - "ListOrganizationInvitationsReply": { + "ListPersistentVolumeEventsReply": { "type": "object", "properties": { - "invitations": { + "events": { "type": "array", "items": { - "$ref": "#/definitions/OrganizationInvitation" + "$ref": "#/definitions/PersistentVolumeEvent" }, - "title": "The collection of organization invitations" + "title": "The collection of events" }, "limit": { "type": "integer", @@ -15492,1019 +15345,1323 @@ "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" + "order": { + "type": "string", + "title": "The order in the request" + }, + "has_next": { + "type": "boolean", + "title": "If there is more items after in the collection" } } }, - "GetSubscriptionReply": { + "ListPersistentVolumesReply": { "type": "object", "properties": { - "subscription": { - "$ref": "#/definitions/Subscription" + "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" } } }, - "Subscription": { + "PersistentVolume": { "type": "object", "properties": { "id": { - "type": "string" + "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" + "format": "date-time", + "title": "creation timestamp" }, "updated_at": { "type": "string", - "format": "date-time" + "format": "date-time", + "title": "last change timestamp" }, - "version": { + "deleted_at": { "type": "string", - "format": "uint64" + "format": "date-time", + "title": "deletion timestamp" }, "organization_id": { - "type": "string" - }, - "stripe_subscription_id": { - "type": "string" - }, - "status": { - "$ref": "#/definitions/Subscription.Status" + "type": "string", + "title": "the organization to which the volume belongs to" }, - "messages": { - "type": "array", - "items": { - "type": "string" - } + "service_id": { + "type": "string", + "title": "the service_id to which the volume is eventually bound to" }, - "has_pending_update": { - "type": "boolean" + "region": { + "type": "string", + "title": "the region where the volume exists" }, - "stripe_pending_invoice_id": { - "type": "string" + "read_only": { + "type": "boolean", + "title": "whether to mount the volume in read-only mode" }, - "terminate_at": { - "type": "string", - "format": "date-time" + "max_size": { + "type": "integer", + "format": "int64", + "title": "the maximum size of the volume (in Gigabyte / GB)" }, - "canceled_at": { - "type": "string", - "format": "date-time" + "cur_size": { + "type": "integer", + "format": "int64", + "title": "the used amount of space as measured the last time (in Gigabyte / GB)" }, - "terminated_at": { - "type": "string", - "format": "date-time" + "status": { + "$ref": "#/definitions/PersistentVolumeStatus", + "title": "the status of the volume" }, - "current_period_start": { - "type": "string", - "format": "date-time" + "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" }, - "current_period_end": { + "when": { "type": "string", "format": "date-time" }, - "currency": { + "organization_id": { "type": "string" }, - "amount_payable": { - "type": "string", - "format": "int64" + "persistent_volume_id": { + "type": "string" }, - "amount_paid": { - "type": "string", - "format": "int64" + "type": { + "type": "string" }, - "amount_remaining": { - "type": "string", - "format": "int64" + "message": { + "type": "string" }, - "payment_failure": { - "$ref": "#/definitions/Subscription.PaymentFailure" + "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" + } + } + }, + "ReviewOrganizationCapacityReply": { + "type": "object", + "properties": { + "has_capacity": { + "type": "boolean" + } + } + }, + "ReviewOrganizationCapacityRequest": { + "type": "object", + "properties": { + "plan": { + "type": "string" }, "trialing": { "type": "boolean" + } + } + }, + "CreateDomain": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "trial_ends_at": { - "type": "string", - "format": "date-time" + "type": { + "$ref": "#/definitions/Domain.Type" }, - "trial_max_spend": { + "app_id": { "type": "string", - "format": "int64" + "title": "to auto-attach to an app. Optional" }, - "current_spend": { + "cloudflare": { + "$ref": "#/definitions/Domain.LoadBalancerCloudflare" + }, + "koyeb": { + "$ref": "#/definitions/Domain.LoadBalancerKoyeb", + "description": "Only applicable to auto-assigned domains, for organizations on the Scale plan." + }, + "project_id": { "type": "string", - "format": "int64" + "title": "(Optional) The project ID to associate with the domain" } } }, - "Subscription.PaymentFailure": { + "CreateDomainReply": { "type": "object", "properties": { - "failed_at": { + "domain": { + "$ref": "#/definitions/Domain" + } + } + }, + "DeleteDomainReply": { + "type": "object" + }, + "Domain": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "organization_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "created_at": { "type": "string", "format": "date-time" }, - "next_attempt": { + "updated_at": { "type": "string", "format": "date-time" }, - "attempt_count": { - "type": "string", - "format": "int64" + "status": { + "$ref": "#/definitions/Domain.Status" }, - "error_code": { - "type": "string" + "type": { + "$ref": "#/definitions/Domain.Type" }, - "error_reason": { + "app_id": { "type": "string" }, - "error_type": { + "deployment_group": { "type": "string" }, - "error_message": { + "verified_at": { + "type": "string", + "format": "date-time" + }, + "intended_cname": { "type": "string" }, - "payment_method_required": { - "type": "boolean" + "messages": { + "type": "array", + "items": { + "type": "string" + } }, - "redirect_url": { - "type": "string" + "version": { + "type": "string", + "format": "uint64" }, - "stripe_sdk": { - "$ref": "#/definitions/Subscription.PaymentFailure.StripeSDK" + "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." } } }, - "Subscription.PaymentFailure.StripeSDK": { + "Domain.LoadBalancerCloudflare": { + "type": "object" + }, + "Domain.LoadBalancerKoyeb": { "type": "object", "properties": { - "client_secret_key": { - "type": "string" - }, - "raw_json": { - "type": "string" + "request_timeout_seconds": { + "type": "integer", + "format": "int64", + "title": "Between 100 and 900" } } }, - "Subscription.Status": { + "Domain.Status": { "type": "string", "enum": [ - "INVALID", - "CREATED", + "PENDING", "ACTIVE", - "WARNING", - "URGENT", - "CANCELING", - "CANCELED", - "TERMINATING", - "TERMINATED" + "ERROR", + "DELETING", + "DELETED" ], - "default": "INVALID" + "default": "PENDING" }, - "LogEntry": { + "Domain.Type": { + "type": "string", + "enum": [ + "AUTOASSIGNED", + "CUSTOM" + ], + "default": "AUTOASSIGNED", + "title": "- AUTOASSIGNED: Domain like -.koyeb.app" + }, + "GetDomainReply": { "type": "object", "properties": { - "msg": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "labels": { - "type": "object" + "domain": { + "$ref": "#/definitions/Domain" } } }, - "QueryLogsReply": { + "ListDomainsReply": { "type": "object", "properties": { - "data": { + "domains": { "type": "array", "items": { - "$ref": "#/definitions/LogEntry" + "$ref": "#/definitions/Domain" } }, - "pagination": { - "$ref": "#/definitions/QueryLogsReplyPagination" + "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" } } }, - "QueryLogsReplyPagination": { + "RefreshDomainStatusReply": { + "type": "object" + }, + "UpdateDomain": { "type": "object", "properties": { - "has_more": { - "type": "boolean" - }, - "next_start": { + "app_id": { "type": "string", - "format": "date-time" + "description": "To attach or detach from an app for custom domain." }, - "next_end": { + "subdomain": { "type": "string", - "format": "date-time" + "description": "To change subdomain for auto-assigned domain." } } }, - "GetMetricsReply": { + "UpdateDomainReply": { "type": "object", "properties": { - "metrics": { - "type": "array", - "items": { - "$ref": "#/definitions/GetMetricsReply.Metric" - } + "domain": { + "$ref": "#/definitions/Domain" } } }, - "GetMetricsReply.Metric": { + "App": { "type": "object", "properties": { - "labels": { - "type": "object", - "additionalProperties": { + "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" } }, - "samples": { + "version": { + "type": "string", + "format": "uint64" + }, + "domains": { "type": "array", "items": { - "$ref": "#/definitions/Sample" + "$ref": "#/definitions/Domain" } + }, + "life_cycle": { + "$ref": "#/definitions/AppLifeCycle" } } }, - "MetricName": { + "App.Status": { "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" + "STARTING", + "HEALTHY", + "DEGRADED", + "UNHEALTHY", + "DELETING", + "DELETED", + "PAUSING", + "PAUSED", + "RESUMING" ], - "default": "UNKNOWN" + "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" + } + } }, - "Sample": { + "AppLifeCycle": { "type": "object", "properties": { - "timestamp": { - "type": "string" - }, - "value": { - "type": "number", - "format": "double" + "delete_when_empty": { + "type": "boolean" } } }, - "ExecCommandIO": { + "AppListItem": { "type": "object", "properties": { - "data": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "organization_id": { + "type": "string" + }, + "updated_at": { "type": "string", - "format": "byte", - "description": "Data is base64 encoded" + "format": "date-time" }, - "close": { - "type": "boolean", - "description": "Indicate last data frame" + "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" + } } } }, - "ExecCommandReply": { + "CreateApp": { "type": "object", "properties": { - "stdout": { - "$ref": "#/definitions/ExecCommandIO" - }, - "stderr": { - "$ref": "#/definitions/ExecCommandIO" + "name": { + "type": "string" }, - "exited": { - "type": "boolean" + "life_cycle": { + "$ref": "#/definitions/AppLifeCycle" }, - "exit_code": { - "type": "integer", - "format": "int32" + "project_id": { + "type": "string", + "title": "(Optional) The project ID to associate with the app" } } }, - "ExecCommandRequest.Body": { + "CreateAppReply": { "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" + "app": { + "$ref": "#/definitions/App", + "title": "The entity created" } } }, - "ExecCommandRequest.IdType": { - "type": "string", - "enum": [ - "INVALID", - "INSTANCE_ID", - "SERVICE_ID" - ], - "default": "INVALID" + "DeleteAppReply": { + "type": "object" }, - "ExecCommandRequest.TerminalSize": { + "GetAppReply": { "type": "object", "properties": { - "height": { - "type": "integer", - "format": "int32" - }, - "width": { - "type": "integer", - "format": "int32" + "app": { + "$ref": "#/definitions/App", + "title": "The App retrieved" } } }, - "Notification": { + "ListAppEventsReply": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "activity": { - "$ref": "#/definitions/Activity" + "events": { + "type": "array", + "items": { + "$ref": "#/definitions/AppEvent" + }, + "title": "The collection of events" }, - "is_read": { - "type": "boolean" + "limit": { + "type": "integer", + "format": "int64", + "title": "The limit in the request" }, - "is_seen": { - "type": "boolean" + "offset": { + "type": "integer", + "format": "int64", + "title": "The offset in the request" }, - "created_at": { + "order": { "type": "string", - "format": "date-time" + "title": "The order in the request" + }, + "has_next": { + "type": "boolean", + "title": "If there is more items after in the collection" } } }, - "NotificationList": { + "ListAppsReply": { "type": "object", "properties": { - "notifications": { + "apps": { "type": "array", "items": { - "$ref": "#/definitions/Notification" + "$ref": "#/definitions/AppListItem" } }, "limit": { "type": "integer", - "format": "int64" + "format": "int64", + "title": "The limit in the request" }, "offset": { "type": "integer", - "format": "int64" + "format": "int64", + "title": "The offset in the request" }, "count": { "type": "integer", - "format": "int64" - }, - "is_read": { - "type": "boolean" - }, - "is_seen": { - "type": "boolean" - }, - "unread": { - "type": "integer", - "format": "int64" + "format": "int64", + "title": "The total number of items" }, - "unseen": { - "type": "integer", - "format": "int64" + "has_next": { + "type": "boolean", + "title": "If there is more items after in the collection" } } }, - "BasicAuthPolicy": { + "PauseAppReply": { + "type": "object" + }, + "ResumeAppReply": { + "type": "object" + }, + "UpdateApp": { "type": "object", "properties": { - "username": { + "name": { "type": "string" }, - "password": { - "type": "string" + "life_cycle": { + "$ref": "#/definitions/AppLifeCycle" } } }, - "SecurityPolicies": { + "UpdateAppReply": { "type": "object", "properties": { - "basic_auths": { - "type": "array", - "items": { - "$ref": "#/definitions/BasicAuthPolicy" - } - }, - "api_keys": { - "type": "array", - "items": { - "type": "string" - } + "app": { + "$ref": "#/definitions/App", + "title": "The entity updated" } } }, - "ArchiveSource": { + "CreateSnapshotReply": { "type": "object", "properties": { - "id": { + "snapshot": { + "$ref": "#/definitions/Snapshot" + } + } + }, + "CreateSnapshotRequest": { + "type": "object", + "properties": { + "parent_volume_id": { "type": "string", - "title": "The ID of the archive to deploy" + "title": "The id of the volume to snapshot" }, - "buildpack": { - "$ref": "#/definitions/BuildpackBuilder" + "name": { + "type": "string", + "title": "The name of the snapshot" }, - "docker": { - "$ref": "#/definitions/DockerBuilder" + "project_id": { + "type": "string", + "title": "(Optional) The project ID to associate with the snapshot" } } }, - "BuildpackBuilder": { + "DeleteSnapshotReply": { "type": "object", "properties": { - "build_command": { - "type": "string", - "title": "A command used to override the build command, run after all build steps" + "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" }, - "run_command": { - "type": "string", - "title": "A command used to override the default run command" + "offset": { + "type": "integer", + "format": "int64", + "title": "The offset in the request" }, - "privileged": { + "has_next": { "type": "boolean", - "title": "A flag to run the container in privileged mode" + "title": "If there is more items after in the collection" } } }, - "ConfigFile": { + "Snapshot": { "type": "object", "properties": { - "path": { + "id": { "type": "string", - "title": "the path where the file is copied" + "title": "the identifier of the snapshot object" }, - "permissions": { + "name": { "type": "string", - "title": "the permissions of the file in format 0644" + "title": "the snapshot name" }, - "content": { - "type": "string", - "title": "the content of the file" - } - } - }, - "DeploymentHealthCheck": { - "type": "object", - "properties": { - "grace_period": { + "size": { "type": "integer", "format": "int64", - "title": "An optional initial period in seconds to wait for the instance to become healthy, default is 5s" + "title": "the original volume size" }, - "interval": { - "type": "integer", - "format": "int64", - "title": "An optional period in seconds between two health checks, default is 60s" + "created_at": { + "type": "string", + "format": "date-time", + "title": "creation timestamp" }, - "restart_limit": { - "type": "integer", - "format": "int64", - "title": "An optional number of consecutive failures before attempting to restart the service, default is 3" + "updated_at": { + "type": "string", + "format": "date-time", + "title": "last change timestamp" }, - "timeout": { - "type": "integer", - "format": "int64", - "title": "An optional maximum time to wait in seconds before considering the check as a failure, default is 5s" + "deleted_at": { + "type": "string", + "format": "date-time", + "title": "deletion timestamp" }, - "tcp": { - "$ref": "#/definitions/TCPHealthCheck" + "organization_id": { + "type": "string", + "title": "the organization to which the snapshot belongs to" }, - "http": { - "$ref": "#/definitions/HTTPHealthCheck" - } - } - }, - "DeploymentProvisioningInfo": { - "type": "object", - "properties": { - "sha": { + "parent_volume_id": { "type": "string", - "description": "The git sha for this build (we resolve the reference at the start of the build)." + "title": "the volume from which the snapshot has been created" }, - "image": { + "region": { "type": "string", - "description": "The docker image built as a result of this build." + "title": "the region where the snapshot resides, if any" }, - "stages": { - "type": "array", - "items": { - "$ref": "#/definitions/DeploymentProvisioningInfo.Stage" - }, - "description": "Some info about the build." + "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" } } }, - "DeploymentProvisioningInfo.Stage": { + "AzureContainerRegistryConfiguration": { "type": "object", "properties": { - "name": { + "registry_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" + "username": { + "type": "string" }, - "build_attempts": { - "type": "array", - "items": { - "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt" - } + "password": { + "type": "string" } } }, - "DeploymentProvisioningInfo.Stage.BuildAttempt": { + "CreateSecret": { "type": "object", "properties": { - "id": { - "type": "integer", - "format": "int64" + "name": { + "type": "string" }, - "status": { - "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.Status" + "type": { + "$ref": "#/definitions/SecretType" }, - "messages": { - "type": "array", - "items": { - "type": "string" - } + "value": { + "type": "string" }, - "started_at": { - "type": "string", - "format": "date-time" + "docker_hub_registry": { + "$ref": "#/definitions/DockerHubRegistryConfiguration" }, - "finished_at": { - "type": "string", - "format": "date-time" + "private_registry": { + "$ref": "#/definitions/PrivateRegistryConfiguration" }, - "steps": { - "type": "array", - "items": { - "$ref": "#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep" - } + "digital_ocean_registry": { + "$ref": "#/definitions/DigitalOceanRegistryConfiguration" }, - "image_pushed": { - "type": "boolean" + "github_registry": { + "$ref": "#/definitions/GitHubRegistryConfiguration" }, - "internal_failure": { - "type": "boolean" + "gitlab_registry": { + "$ref": "#/definitions/GitLabRegistryConfiguration" }, - "retryable_failure": { - "type": "boolean" + "gcp_container_registry": { + "$ref": "#/definitions/GCPContainerRegistryConfiguration" }, - "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." + "azure_container_registry": { + "$ref": "#/definitions/AzureContainerRegistryConfiguration" + }, + "project_id": { + "type": "string", + "title": "(Optional) The project ID to associate with the secret" } } }, - "DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep": { + "CreateSecretReply": { "type": "object", "properties": { - "name": { + "secret": { + "$ref": "#/definitions/Secret" + } + } + }, + "DatabaseRolePassword": { + "type": "object", + "properties": { + "username": { "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" + "password": { + "type": "string" } } }, - "DeploymentProvisioningInfo.Stage.Status": { - "type": "string", - "enum": [ - "UNKNOWN", - "PENDING", - "RUNNING", - "FAILED", - "COMPLETED", - "ABORTED" - ], - "default": "UNKNOWN" + "DeleteSecretReply": { + "type": "object" }, - "DeploymentScalingTarget": { + "DigitalOceanRegistryConfiguration": { "type": "object", "properties": { - "average_cpu": { - "$ref": "#/definitions/DeploymentScalingTargetAverageCPU" - }, - "average_mem": { - "$ref": "#/definitions/DeploymentScalingTargetAverageMem" - }, - "requests_per_second": { - "$ref": "#/definitions/DeploymentScalingTargetRequestsPerSecond" - }, - "concurrent_requests": { - "$ref": "#/definitions/DeploymentScalingTargetConcurrentRequests" + "username": { + "type": "string" }, - "requests_response_time": { - "$ref": "#/definitions/DeploymentScalingTargetRequestsResponseTime" + "password": { + "type": "string" + } + } + }, + "DockerHubRegistryConfiguration": { + "type": "object", + "properties": { + "username": { + "type": "string" }, - "sleep_idle_delay": { - "$ref": "#/definitions/DeploymentScalingTargetSleepIdleDelay" + "password": { + "type": "string" } } }, - "DeploymentScalingTargetAverageCPU": { + "GCPContainerRegistryConfiguration": { "type": "object", "properties": { - "value": { - "type": "integer", - "format": "int64" + "keyfile_content": { + "type": "string" + }, + "url": { + "type": "string" } } }, - "DeploymentScalingTargetAverageMem": { + "GetSecretReply": { "type": "object", "properties": { - "value": { - "type": "integer", - "format": "int64" + "secret": { + "$ref": "#/definitions/Secret" } } }, - "DeploymentScalingTargetConcurrentRequests": { + "GitHubRegistryConfiguration": { "type": "object", "properties": { - "value": { - "type": "integer", - "format": "int64" + "username": { + "type": "string" + }, + "password": { + "type": "string" } } }, - "DeploymentScalingTargetRequestsPerSecond": { + "GitLabRegistryConfiguration": { "type": "object", "properties": { - "value": { - "type": "integer", - "format": "int64" + "username": { + "type": "string" + }, + "password": { + "type": "string" } } }, - "DeploymentScalingTargetRequestsResponseTime": { + "ListSecretsReply": { "type": "object", "properties": { - "value": { + "secrets": { + "type": "array", + "items": { + "$ref": "#/definitions/Secret" + } + }, + "limit": { "type": "integer", "format": "int64" }, - "quantile": { + "offset": { "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." + "format": "int64" + }, + "count": { + "type": "integer", + "format": "int64" } } }, - "DeploymentScalingTargetSleepIdleDelay": { + "PrivateRegistryConfiguration": { "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." + "username": { + "type": "string" }, - "deep_sleep_value": { - "type": "integer", - "format": "int64", - "description": "Delay in seconds after which a service which received 0 request is put to deep sleep." + "password": { + "type": "string" }, - "light_sleep_value": { - "type": "integer", - "format": "int64", - "description": "Delay in seconds after which a service which received 0 request is put to light sleep." + "url": { + "type": "string" } } }, - "DeploymentStrategy": { + "RevealSecretReply": { + "type": "object", + "properties": { + "value": {} + } + }, + "Secret": { "type": "object", "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "organization_id": { + "type": "string" + }, "type": { - "$ref": "#/definitions/DeploymentStrategyType", - "title": "Strategy 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" } } }, - "DeploymentStrategyType": { + "SecretType": { "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" + "SIMPLE", + "REGISTRY", + "MANAGED" ], - "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." + "default": "SIMPLE" }, - "DockerBuilder": { + "UpdateSecretReply": { "type": "object", "properties": { - "dockerfile": { - "type": "string", - "title": "A path to the Dockerfile" + "secret": { + "$ref": "#/definitions/Secret" + } + } + }, + "AppUsage": { + "type": "object", + "properties": { + "app_id": { + "type": "string" }, - "entrypoint": { + "app_name": { + "type": "string" + }, + "services": { "type": "array", "items": { - "type": "string" - }, - "title": "The docker ENTRYPOINT" - }, - "command": { - "type": "string", - "title": "The docker CMD" + "$ref": "#/definitions/ServiceUsage" + } }, - "args": { + "databases": { "type": "array", "items": { - "type": "string" - }, - "title": "The docker CMD args" + "$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" }, - "target": { + "data_storage_megabytes_hour": { + "type": "integer", + "format": "int64" + }, + "started_at": { "type": "string", - "title": "The target for multi-stage builds" + "format": "date-time" }, - "privileged": { - "type": "boolean", - "title": "A flag to run the container in privileged mode" + "terminated_at": { + "type": "string", + "format": "date-time" } } }, - "DockerSource": { + "GetOrganizationUsageDetailsReply": { "type": "object", "properties": { - "image": { - "type": "string" - }, - "command": { - "type": "string" - }, - "args": { + "usage_details": { "type": "array", "items": { - "type": "string" - } - }, - "image_registry_secret": { - "type": "string" + "$ref": "#/definitions/UsageDetails" + }, + "title": "The collection of usage instances" }, - "entrypoint": { + "database_details": { "type": "array", "items": { - "type": "string" - } + "$ref": "#/definitions/DatabaseUsageDetails" + }, + "title": "The collection of database deployments used during the month" }, - "privileged": { - "type": "boolean", - "title": "A flag to run the container in privileged mode" + "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" } } }, - "Env": { + "GetOrganizationUsageReply": { "type": "object", "properties": { - "key": { - "type": "string" - }, - "value": { - "type": "string" - }, - "secret": { - "type": "string" + "usage": { + "$ref": "#/definitions/Usage", + "title": "The computed usage of instances per month" } } }, - "GetRegionalDeploymentReply": { + "InstanceUsage": { "type": "object", "properties": { - "regional_deployment": { - "$ref": "#/definitions/RegionalDeployment" + "duration_seconds": { + "type": "integer", + "format": "int64" } } }, - "GitSource": { + "PeriodUsage": { "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": { + "starting_time": { "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" + "format": "date-time" }, - "workdir": { + "ending_time": { "type": "string", - "title": "A subdirectory to use as the build directory" - }, - "buildpack": { - "$ref": "#/definitions/BuildpackBuilder" + "format": "date-time" }, - "docker": { - "$ref": "#/definitions/DockerBuilder" + "apps": { + "type": "array", + "items": { + "$ref": "#/definitions/AppUsage" + } } } }, - "HTTPHeader": { + "RegionUsage": { "type": "object", "properties": { - "key": { - "type": "string" - }, - "value": { - "type": "string" + "instances": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/InstanceUsage" + } } } }, - "HTTPHealthCheck": { + "ServiceUsage": { "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" + "service_id": { + "type": "string" }, - "method": { - "type": "string", - "title": "An optional HTTP method to use to perform the health check, default is GET" + "service_name": { + "type": "string" }, - "headers": { - "type": "array", - "items": { - "$ref": "#/definitions/HTTPHeader" - }, - "title": "An optional list of HTTP headers to provide when performing the request, default is empty" + "regions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/RegionUsage" + } } } }, - "ListRegionalDeploymentEventsReply": { + "Usage": { "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" + "organization_id": { + "type": "string" }, - "has_next": { - "type": "boolean", - "title": "If there is more items after in the collection" + "periods": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/PeriodUsage" + } } } }, - "ListRegionalDeploymentsReply": { + "UsageDetails": { "type": "object", "properties": { - "regional_deployments": { - "type": "array", - "items": { - "$ref": "#/definitions/RegionalDeploymentListItem" - }, - "title": "The collection of regional deployments" + "organization_id": { + "type": "string" }, - "limit": { - "type": "integer", - "format": "int64", - "title": "The limit in the request" + "instance_id": { + "type": "string" }, - "offset": { - "type": "integer", - "format": "int64", - "title": "The offset in the request" + "app_id": { + "type": "string" }, - "count": { + "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", - "title": "The total number of items" + "format": "int64" }, - "has_next": { - "type": "boolean", - "title": "If there is more items after in the collection" + "started_at": { + "type": "string", + "format": "date-time" + }, + "terminated_at": { + "type": "string", + "format": "date-time" } } }, - "Port": { + "ArchiveDeploymentMetadata": { "type": "object", "properties": { - "port": { - "type": "integer", - "format": "int64" - }, - "protocol": { + "last_provisioned_deployment_id": { "type": "string" } } }, - "RegionalDeployment": { + "CancelDeploymentReply": { + "type": "object" + }, + "DatabaseDeploymentMetadata": { + "type": "object", + "properties": { + "neon_postgres": { + "$ref": "#/definitions/NeonPostgresDatabaseDeploymentMetadata" + } + } + }, + "DatabaseSource": { + "type": "object", + "properties": { + "neon_postgres": { + "$ref": "#/definitions/NeonPostgresDatabase" + } + } + }, + "Deployment": { "type": "object", "properties": { "id": { @@ -16518,10 +16675,6 @@ "type": "string", "format": "date-time" }, - "scheduled_at": { - "type": "string", - "format": "date-time" - }, "allocated_at": { "type": "string", "format": "date-time" @@ -16547,9 +16700,6 @@ "service_id": { "type": "string" }, - "region": { - "type": "string" - }, "parent_id": { "type": "string" }, @@ -16557,46 +16707,42 @@ "type": "string" }, "status": { - "$ref": "#/definitions/RegionalDeployment.Status" + "$ref": "#/definitions/Deployment.Status" }, - "messages": { - "type": "array", - "items": { - "type": "string" - } + "metadata": { + "$ref": "#/definitions/DeploymentMetadata" }, "definition": { - "$ref": "#/definitions/RegionalDeploymentDefinition" + "$ref": "#/definitions/DeploymentDefinition" }, - "datacenters": { + "messages": { "type": "array", "items": { "type": "string" } }, - "metadata": { - "$ref": "#/definitions/RegionalDeploymentMetadata" - }, "provisioning_info": { "$ref": "#/definitions/DeploymentProvisioningInfo" }, + "database_info": { + "$ref": "#/definitions/DeploymentDatabaseInfo" + }, + "skip_build": { + "type": "boolean" + }, "role": { - "$ref": "#/definitions/RegionalDeployment.Role" + "$ref": "#/definitions/Deployment.Role" }, "version": { "type": "string", "format": "uint64" }, "deployment_group": { - "type": "string", - "title": "Legacy stuff" - }, - "deployment_id": { "type": "string" } } }, - "RegionalDeployment.Role": { + "Deployment.Role": { "type": "string", "enum": [ "INVALID", @@ -16606,7 +16752,7 @@ ], "default": "INVALID" }, - "RegionalDeployment.Status": { + "Deployment.Status": { "type": "string", "enum": [ "PENDING", @@ -16623,18 +16769,27 @@ "STOPPED", "ERRORING", "ERROR", + "STASHED", "SLEEPING" ], "default": "PENDING" }, - "RegionalDeploymentDefinition": { + "DeploymentDatabaseInfo": { + "type": "object", + "properties": { + "neon_postgres": { + "$ref": "#/definitions/DeploymentNeonPostgresDatabaseInfo" + } + } + }, + "DeploymentDefinition": { "type": "object", "properties": { "name": { "type": "string" }, "type": { - "$ref": "#/definitions/RegionalDeploymentDefinition.Type" + "$ref": "#/definitions/DeploymentDefinition.Type" }, "strategy": { "$ref": "#/definitions/DeploymentStrategy" @@ -16642,157 +16797,379 @@ "routes": { "type": "array", "items": { - "$ref": "#/definitions/Route" + "$ref": "#/definitions/DeploymentRoute" } }, "ports": { "type": "array", "items": { - "$ref": "#/definitions/Port" + "$ref": "#/definitions/DeploymentPort" + } + }, + "proxy_ports": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentProxyPort" } }, "env": { "type": "array", "items": { - "$ref": "#/definitions/Env" + "$ref": "#/definitions/DeploymentEnv" } }, - "region": { + "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" + }, + "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" }, - "scaling": { - "$ref": "#/definitions/Scaling" + "value": { + "type": "string" + }, + "secret": { + "type": "string" + } + } + }, + "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" + } + } + }, + "DeploymentInstanceType": { + "type": "object", + "properties": { + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + } + } + }, + "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" + }, + "app_id": { + "type": "string" + }, + "service_id": { + "type": "string" }, - "instance_type": { + "parent_id": { "type": "string" }, - "deployment_group": { + "child_id": { "type": "string" }, - "health_checks": { - "type": "array", - "items": { - "$ref": "#/definitions/DeploymentHealthCheck" - } + "status": { + "$ref": "#/definitions/Deployment.Status" }, - "volumes": { - "type": "array", - "items": { - "$ref": "#/definitions/RegionalDeploymentVolume" - } + "metadata": { + "$ref": "#/definitions/DeploymentMetadata" }, - "config_files": { + "definition": { + "$ref": "#/definitions/DeploymentDefinition" + }, + "messages": { "type": "array", "items": { - "$ref": "#/definitions/ConfigFile" + "type": "string" } }, - "skip_cache": { - "type": "boolean" + "provisioning_info": { + "$ref": "#/definitions/DeploymentProvisioningInfo" }, - "docker": { - "$ref": "#/definitions/DockerSource" + "database_info": { + "$ref": "#/definitions/DeploymentDatabaseInfo" }, - "git": { - "$ref": "#/definitions/GitSource" + "version": { + "type": "string", + "format": "uint64" }, - "archive": { - "$ref": "#/definitions/ArchiveSource" + "deployment_group": { + "type": "string" } } }, - "RegionalDeploymentDefinition.Type": { + "DeploymentMesh": { "type": "string", "enum": [ - "INVALID", - "WEB", - "WORKER", - "_", - "SANDBOX" + "DEPLOYMENT_MESH_AUTO", + "DEPLOYMENT_MESH_ENABLED", + "DEPLOYMENT_MESH_DISABLED" ], - "default": "INVALID", - "title": "- _: We match with DeploymentDefinition.Type, so we skip 3 which is DATABASE" + "default": "DEPLOYMENT_MESH_AUTO" }, - "RegionalDeploymentEvent": { + "DeploymentMetadata": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "when": { - "type": "string", - "format": "date-time" + "trigger": { + "$ref": "#/definitions/TriggerDeploymentMetadata" }, - "organization_id": { - "type": "string" + "database": { + "$ref": "#/definitions/DatabaseDeploymentMetadata" }, - "regional_deployment_id": { - "type": "string" + "git": { + "$ref": "#/definitions/GitDeploymentMetadata" }, - "type": { - "type": "string" + "archive": { + "$ref": "#/definitions/ArchiveDeploymentMetadata" }, - "message": { - "type": "string" + "proxy_ports": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentProxyPortMetadata" + } }, - "metadata": { - "type": "object" + "sandbox": { + "$ref": "#/definitions/SandboxMetadata" } } }, - "RegionalDeploymentListItem": { + "DeploymentNeonPostgresDatabaseInfo": { "type": "object", "properties": { - "id": { - "type": "string" + "active_time_seconds": { + "type": "string", + "format": "int64" }, - "created_at": { + "compute_time_seconds": { "type": "string", - "format": "date-time" + "format": "int64" }, - "updated_at": { + "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" }, - "region": { + "default_branch_id": { "type": "string" }, - "status": { - "$ref": "#/definitions/RegionalDeployment.Status" + "default_branch_name": { + "type": "string" }, - "messages": { + "default_branch_state": { + "type": "string" + }, + "default_branch_logical_size": { + "type": "string", + "format": "int64" + }, + "roles": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/DeploymentNeonPostgresDatabaseInfoRole" } - }, - "definition": { - "$ref": "#/definitions/RegionalDeploymentDefinition" } } }, - "RegionalDeploymentMetadata": { - "type": "object" + "DeploymentNeonPostgresDatabaseInfoRole": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "secret_id": { + "type": "string" + } + } }, - "RegionalDeploymentVolume": { + "DeploymentPort": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "the id of the volume" + "port": { + "type": "integer", + "format": "int64" }, - "path": { + "protocol": { "type": "string", - "title": "the path where the volume is mounted to" + "title": "One of http, http2, tcp" + } + } + }, + "DeploymentProxyPort": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "format": "int64" }, - "replica_index": { + "protocol": { + "$ref": "#/definitions/ProxyPortProtocol" + } + } + }, + "DeploymentProxyPortMetadata": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "public_port": { "type": "integer", - "format": "int64", - "title": "the replica index to mount the volume to" + "format": "int64" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "protocol": { + "$ref": "#/definitions/ProxyPortProtocol" } } }, - "Route": { + "DeploymentRoute": { "type": "object", "properties": { "port": { @@ -16807,9 +17184,15 @@ } } }, - "Scaling": { + "DeploymentScaling": { "type": "object", "properties": { + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, "min": { "type": "integer", "format": "int64" @@ -16826,66 +17209,105 @@ } } }, - "TCPHealthCheck": { + "DeploymentVolume": { "type": "object", "properties": { - "port": { + "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 port to use to perform the health check, must be declared in the ports section" + "title": "optionally, explicitly choose the replica index to mount the volume to" + }, + "scopes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "scope of the associated" } } }, - "CreateSnapshotReply": { + "GetDeploymentReply": { "type": "object", "properties": { - "snapshot": { - "$ref": "#/definitions/Snapshot" + "deployment": { + "$ref": "#/definitions/Deployment" } } }, - "CreateSnapshotRequest": { + "GetDeploymentScalingReply": { "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" - }, - "project_id": { + "replicas": { + "type": "array", + "items": { + "$ref": "#/definitions/GetDeploymentScalingReplyItem" + }, + "title": "The replicas" + } + } + }, + "GetDeploymentScalingReplyItem": { + "type": "object", + "properties": { + "region": { "type": "string", - "title": "(Optional) The project ID to associate with the snapshot" + "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;" } } }, - "DeleteSnapshotReply": { + "GitDeploymentMetadata": { "type": "object", "properties": { - "snapshot": { - "$ref": "#/definitions/Snapshot" + "last_provisioned_deployment_id": { + "type": "string" + }, + "git_env": { + "$ref": "#/definitions/GitEnvDeploymentMetadata" } } }, - "GetSnapshotReply": { + "GitEnvDeploymentMetadata": { "type": "object", "properties": { - "snapshot": { - "$ref": "#/definitions/Snapshot" + "sha": { + "type": "string" + }, + "commit_author": { + "type": "string" + }, + "commit_message": { + "type": "string" } } }, - "ListSnapshotsReply": { + "ListDeploymentEventsReply": { "type": "object", "properties": { - "snapshots": { + "events": { "type": "array", "items": { - "$ref": "#/definitions/Snapshot" + "$ref": "#/definitions/DeploymentEvent" }, - "title": "The collection of snapshots" + "title": "The collection of events" }, "limit": { "type": "integer", @@ -16897,705 +17319,475 @@ "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" } } }, - "Snapshot": { + "ListDeploymentsReply": { "type": "object", "properties": { - "id": { - "type": "string", - "title": "the identifier of the snapshot object" - }, - "name": { - "type": "string", - "title": "the snapshot name" + "deployments": { + "type": "array", + "items": { + "$ref": "#/definitions/DeploymentListItem" + }, + "title": "The collection of deployments" }, - "size": { + "limit": { "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" + "title": "The limit in the request" }, - "region": { - "type": "string", - "title": "the region where the snapshot resides, if any" + "offset": { + "type": "integer", + "format": "int64", + "title": "The offset in the request" }, - "status": { - "$ref": "#/definitions/SnapshotStatus", - "title": "the status of the snapshot" + "count": { + "type": "integer", + "format": "int64", + "title": "The total number of items" }, - "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" - } - } - }, - "ArchiveDeploymentMetadata": { - "type": "object", - "properties": { - "last_provisioned_deployment_id": { - "type": "string" - } - } - }, - "AutoRelease": { - "type": "object", - "properties": { - "groups": { - "type": "array", - "items": { - "$ref": "#/definitions/AutoRelease.Group" - } + "has_next": { + "type": "boolean", + "title": "If there is more items after in the collection" } } }, - "AutoRelease.Group": { + "NeonPostgresDatabase": { "type": "object", "properties": { - "name": { - "type": "string" + "pg_version": { + "type": "integer", + "format": "int64" }, - "repository": { + "region": { "type": "string" }, - "git_ref": { - "type": "string", - "title": "A git ref to track (.e.g: refs/tags/ or refs/heads/" - }, - "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" - }, - "AutocompleteReply": { - "type": "object", - "properties": { - "secrets": { - "type": "array", - "items": { - "type": "string" - }, - "title": "List of available secrets" + "instance_type": { + "type": "string" }, - "user_env": { + "roles": { "type": "array", "items": { - "type": "string" - }, - "title": "List of available user's environment variables" + "$ref": "#/definitions/NeonPostgresDatabase.NeonRole" + } }, - "system_env": { + "databases": { "type": "array", "items": { - "type": "string" - }, - "title": "List of available system's environment variables" + "$ref": "#/definitions/NeonPostgresDatabase.NeonDatabase" + } } } }, - "AutocompleteRequest": { + "NeonPostgresDatabase.NeonDatabase": { "type": "object", "properties": { - "definition": { - "$ref": "#/definitions/DeploymentDefinition", - "title": "Deployment definition" + "name": { + "type": "string" + }, + "owner": { + "type": "string" } } }, - "CreateService": { + "NeonPostgresDatabase.NeonRole": { "type": "object", "properties": { - "app_id": { + "name": { "type": "string" }, - "definition": { - "$ref": "#/definitions/DeploymentDefinition" - }, - "life_cycle": { - "$ref": "#/definitions/ServiceLifeCycle" - }, - "project_id": { - "type": "string", - "title": "(Optional) The project ID to associate with the service" + "secret": { + "type": "string" } } }, - "CreateServiceReply": { + "NeonPostgresDatabaseDeploymentMetadata": { "type": "object", "properties": { - "service": { - "$ref": "#/definitions/Service", - "title": "The entity created" + "reset_role_passwords": { + "type": "array", + "items": { + "type": "string" + } } } }, - "DatabaseDeploymentMetadata": { + "ProxyPortProtocol": { + "type": "string", + "enum": [ + "tcp" + ], + "default": "tcp" + }, + "SandboxMetadata": { "type": "object", "properties": { - "neon_postgres": { - "$ref": "#/definitions/NeonPostgresDatabaseDeploymentMetadata" + "public_url": { + "type": "string" + }, + "routing_key": { + "type": "string" } } }, - "DatabaseSource": { + "TriggerDeploymentMetadata": { "type": "object", "properties": { - "neon_postgres": { - "$ref": "#/definitions/NeonPostgresDatabase" + "type": { + "$ref": "#/definitions/TriggerDeploymentMetadata.TriggerType" + }, + "actor": { + "$ref": "#/definitions/TriggerDeploymentMetadata.ActorType" + }, + "git": { + "$ref": "#/definitions/TriggerGitDeploymentMetadata" } } }, - "DeleteServiceReply": { - "type": "object" + "TriggerDeploymentMetadata.ActorType": { + "type": "string", + "enum": [ + "UNKNOWN_ACTOR", + "USER", + "SYSTEM" + ], + "default": "UNKNOWN_ACTOR" }, - "DeleteServiceScalingReply": { - "type": "object", - "title": "Empty reply - success is indicated by no error" + "TriggerDeploymentMetadata.TriggerType": { + "type": "string", + "enum": [ + "UNKNOWN_TYPE", + "GIT", + "RESUME", + "DATABASE_SYNC" + ], + "default": "UNKNOWN_TYPE" }, - "Deployment": { + "TriggerGitDeploymentMetadata": { "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" + "provider": { + "$ref": "#/definitions/TriggerGitDeploymentMetadata.Provider" }, - "organization_id": { + "repository": { "type": "string" }, - "app_id": { + "branch": { "type": "string" }, - "service_id": { + "sha": { "type": "string" }, - "parent_id": { + "message": { "type": "string" }, - "child_id": { + "sender_username": { "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" + "sender_avatar_url": { + "type": "string" }, - "deployment_group": { + "sender_profile_url": { "type": "string" } } }, - "Deployment.Role": { - "type": "string", - "enum": [ - "INVALID", - "ACTIVE", - "UPCOMING", - "CURRENT" - ], - "default": "INVALID" - }, - "Deployment.Status": { + "TriggerGitDeploymentMetadata.Provider": { "type": "string", "enum": [ - "PENDING", - "PROVISIONING", - "SCHEDULED", - "CANCELING", - "CANCELED", - "ALLOCATING", - "STARTING", - "HEALTHY", - "DEGRADED", - "UNHEALTHY", - "STOPPING", - "STOPPED", - "ERRORING", - "ERROR", - "STASHED", - "SLEEPING" + "UNKNOWN", + "GITHUB" ], - "default": "PENDING" + "default": "UNKNOWN" }, - "DeploymentDatabaseInfo": { + "AutoRelease": { "type": "object", "properties": { - "neon_postgres": { - "$ref": "#/definitions/DeploymentNeonPostgresDatabaseInfo" + "groups": { + "type": "array", + "items": { + "$ref": "#/definitions/AutoRelease.Group" + } } } }, - "DeploymentDefinition": { + "AutoRelease.Group": { "type": "object", "properties": { "name": { "type": "string" }, - "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" - }, - "docker": { - "$ref": "#/definitions/DockerSource" - }, - "git": { - "$ref": "#/definitions/GitSource" + "repository": { + "type": "string" }, - "database": { - "$ref": "#/definitions/DatabaseSource" + "git_ref": { + "type": "string", + "title": "A git ref to track (.e.g: refs/tags/ or refs/heads/" }, - "archive": { - "$ref": "#/definitions/ArchiveSource" + "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" }, - "DeploymentDefinition.Type": { - "type": "string", - "enum": [ - "INVALID", - "WEB", - "WORKER", - "DATABASE", - "SANDBOX" - ], - "default": "INVALID" + "ComposeReply": { + "type": "object", + "properties": { + "app": { + "$ref": "#/definitions/App" + }, + "services": { + "type": "array", + "items": { + "$ref": "#/definitions/Service" + } + } + } }, - "DeploymentEnv": { + "CreateCompose": { "type": "object", "properties": { - "scopes": { + "app": { + "$ref": "#/definitions/CreateApp" + }, + "services": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/CreateService" } - }, - "key": { + } + } + }, + "CreateService": { + "type": "object", + "properties": { + "app_id": { "type": "string" }, - "value": { - "type": "string" + "definition": { + "$ref": "#/definitions/DeploymentDefinition" }, - "secret": { - "type": "string" + "life_cycle": { + "$ref": "#/definitions/ServiceLifeCycle" + }, + "project_id": { + "type": "string", + "title": "(Optional) The project ID to associate with the service" } } }, - "DeploymentInstanceType": { + "DesiredDeployment": { "type": "object", "properties": { - "scopes": { + "groups": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/DesiredDeployment.Group" } - }, - "type": { - "type": "string" } } }, - "DeploymentMetadata": { + "DesiredDeployment.Group": { "type": "object", "properties": { - "trigger": { - "$ref": "#/definitions/TriggerDeploymentMetadata" - }, - "database": { - "$ref": "#/definitions/DatabaseDeploymentMetadata" - }, - "git": { - "$ref": "#/definitions/GitDeploymentMetadata" - }, - "archive": { - "$ref": "#/definitions/ArchiveDeploymentMetadata" + "name": { + "type": "string" }, - "proxy_ports": { + "deployment_ids": { "type": "array", "items": { - "$ref": "#/definitions/DeploymentProxyPortMetadata" + "type": "string" } - }, - "sandbox": { - "$ref": "#/definitions/SandboxMetadata" } } }, - "DeploymentNeonPostgresDatabaseInfo": { + "Service": { "type": "object", "properties": { - "active_time_seconds": { - "type": "string", - "format": "int64" + "id": { + "type": "string" }, - "compute_time_seconds": { + "created_at": { "type": "string", - "format": "int64" + "format": "date-time" }, - "written_data_bytes": { + "updated_at": { "type": "string", - "format": "int64" + "format": "date-time" }, - "data_transfer_bytes": { + "started_at": { "type": "string", - "format": "int64" + "format": "date-time" }, - "data_storage_bytes_hour": { + "succeeded_at": { "type": "string", - "format": "int64" - }, - "server_host": { - "type": "string" + "format": "date-time" }, - "server_port": { - "type": "integer", - "format": "int64" + "paused_at": { + "type": "string", + "format": "date-time" }, - "endpoint_state": { - "type": "string" + "resumed_at": { + "type": "string", + "format": "date-time" }, - "endpoint_last_active": { + "terminated_at": { "type": "string", "format": "date-time" }, - "default_branch_id": { + "name": { "type": "string" }, - "default_branch_name": { + "type": { + "$ref": "#/definitions/Service.Type" + }, + "organization_id": { "type": "string" }, - "default_branch_state": { + "app_id": { "type": "string" }, - "default_branch_logical_size": { - "type": "string", - "format": "int64" + "status": { + "$ref": "#/definitions/Service.Status" }, - "roles": { + "messages": { "type": "array", "items": { - "$ref": "#/definitions/DeploymentNeonPostgresDatabaseInfoRole" + "type": "string" } - } - } - }, - "DeploymentNeonPostgresDatabaseInfoRole": { - "type": "object", - "properties": { - "name": { + }, + "version": { + "type": "string", + "format": "uint64" + }, + "active_deployment_id": { "type": "string" }, - "secret_id": { + "latest_deployment_id": { "type": "string" - } - } - }, - "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" + "last_provisioned_deployment_id": { + "type": "string" }, - "protocol": { - "$ref": "#/definitions/ProxyPortProtocol" + "state": { + "$ref": "#/definitions/ServiceState", + "title": "Legacy stuff" + }, + "life_cycle": { + "$ref": "#/definitions/ServiceLifeCycle" } } }, - "DeploymentProxyPortMetadata": { + "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": { - "host": { - "type": "string" - }, - "public_port": { + "delete_after_sleep": { "type": "integer", "format": "int64" }, - "port": { + "delete_after_create": { "type": "integer", "format": "int64" - }, - "protocol": { - "$ref": "#/definitions/ProxyPortProtocol" } } }, - "DeploymentRoute": { + "ServiceState": { "type": "object", "properties": { - "port": { - "type": "integer", - "format": "int64" - }, - "path": { - "type": "string" + "desired_deployment": { + "$ref": "#/definitions/DesiredDeployment" }, - "security_policies": { - "$ref": "#/definitions/SecurityPolicies" + "auto_release": { + "$ref": "#/definitions/AutoRelease" } } }, - "DeploymentScaling": { + "AutocompleteReply": { "type": "object", "properties": { - "scopes": { + "secrets": { "type": "array", "items": { "type": "string" - } - }, - "min": { - "type": "integer", - "format": "int64" - }, - "max": { - "type": "integer", - "format": "int64" - }, - "targets": { - "type": "array", - "items": { - "$ref": "#/definitions/DeploymentScalingTarget" - } - } - } - }, - "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" + }, + "title": "List of available secrets" }, - "replica_index": { - "type": "integer", - "format": "int64", - "title": "optionally, explicitly choose the replica index to mount the volume to" + "user_env": { + "type": "array", + "items": { + "type": "string" + }, + "title": "List of available user's environment variables" }, - "scopes": { + "system_env": { "type": "array", "items": { "type": "string" }, - "title": "scope of the associated" + "title": "List of available system's environment variables" } } }, - "DesiredDeployment": { + "AutocompleteRequest": { "type": "object", "properties": { - "groups": { - "type": "array", - "items": { - "$ref": "#/definitions/DesiredDeployment.Group" - } + "definition": { + "$ref": "#/definitions/DeploymentDefinition", + "title": "Deployment definition" } } }, - "DesiredDeployment.Group": { + "CreateServiceReply": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "deployment_ids": { - "type": "array", - "items": { - "type": "string" - } + "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": { @@ -17617,31 +17809,6 @@ } } }, - "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" - } - } - }, "ListServiceEventsReply": { "type": "object", "properties": { @@ -17717,118 +17884,235 @@ } } }, - "NeonPostgresDatabase": { + "PauseServiceReply": { + "type": "object" + }, + "RedeployReply": { "type": "object", "properties": { - "pg_version": { - "type": "integer", - "format": "int64" - }, - "region": { + "deployment": { + "$ref": "#/definitions/Deployment", + "title": "The entity updated" + } + } + }, + "RedeployRequest.Info": { + "type": "object", + "properties": { + "deployment_group": { "type": "string" }, - "instance_type": { + "sha": { "type": "string" }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/NeonPostgresDatabase.NeonRole" - } + "use_cache": { + "type": "boolean" }, - "databases": { - "type": "array", - "items": { - "$ref": "#/definitions/NeonPostgresDatabase.NeonDatabase" - } + "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." } } }, - "NeonPostgresDatabase.NeonDatabase": { + "ResumeServiceReply": { + "type": "object" + }, + "ServiceEvent": { "type": "object", "properties": { - "name": { + "id": { "type": "string" }, - "owner": { + "when": { + "type": "string", + "format": "date-time" + }, + "organization_id": { + "type": "string" + }, + "service_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "message": { "type": "string" + }, + "metadata": { + "type": "object" } } }, - "NeonPostgresDatabase.NeonRole": { + "ServiceListItem": { "type": "object", "properties": { + "id": { + "type": "string" + }, "name": { "type": "string" }, - "secret": { + "type": { + "$ref": "#/definitions/Service.Type" + }, + "organization_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" } } }, - "NeonPostgresDatabaseDeploymentMetadata": { + "UpdateService": { "type": "object", "properties": { - "reset_role_passwords": { - "type": "array", - "items": { - "type": "string" - } + "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" + } + } + }, + "UpdateServiceReply": { + "type": "object", + "properties": { + "service": { + "$ref": "#/definitions/Service", + "title": "The entity updated" + } + } + }, + "UpdateServiceScalingReply": { + "type": "object", + "title": "Empty reply - success is indicated by no error" + }, + "CreateStageAttemptReply": { + "type": "object" + }, + "DeclareStageProgressReply": { + "type": "object" + }, + "DeclareStepProgressReply": { + "type": "object" + }, + "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." } } }, - "PauseServiceReply": { - "type": "object" - }, - "ProxyPortProtocol": { - "type": "string", - "enum": [ - "tcp" - ], - "default": "tcp" + "CreateArchive": { + "type": "object", + "properties": { + "size": { + "type": "string", + "format": "uint64", + "description": "How much space to provision for the archive, in bytes." + }, + "project_id": { + "type": "string", + "title": "(Optional) The project ID to associate with the archive" + } + } }, - "RedeployReply": { + "CreateArchiveReply": { "type": "object", "properties": { - "deployment": { - "$ref": "#/definitions/Deployment", - "title": "The entity updated" + "archive": { + "$ref": "#/definitions/Archive" } } }, - "RedeployRequest.Info": { + "GetIntercomProfileReply": { "type": "object", "properties": { - "deployment_group": { - "type": "string" - }, - "sha": { + "hash": { "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" - }, - "SandboxMetadata": { + "GetSubscriptionReply": { "type": "object", "properties": { - "public_url": { - "type": "string" - }, - "routing_key": { - "type": "string" + "subscription": { + "$ref": "#/definitions/Subscription" } } }, - "Service": { + "Subscription": { "type": "object", "properties": { "id": { @@ -17842,789 +18126,964 @@ "type": "string", "format": "date-time" }, - "started_at": { + "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" }, - "succeeded_at": { + "canceled_at": { "type": "string", "format": "date-time" }, - "paused_at": { + "terminated_at": { "type": "string", "format": "date-time" }, - "resumed_at": { + "current_period_start": { "type": "string", "format": "date-time" }, - "terminated_at": { + "current_period_end": { "type": "string", "format": "date-time" }, - "name": { + "currency": { "type": "string" }, - "type": { - "$ref": "#/definitions/Service.Type" + "amount_payable": { + "type": "string", + "format": "int64" }, - "organization_id": { + "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" }, - "app_id": { + "error_reason": { "type": "string" }, - "status": { - "$ref": "#/definitions/Service.Status" + "error_type": { + "type": "string" }, - "messages": { + "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" + }, + "ListOrganizationMembersReply": { + "type": "object", + "properties": { + "members": { "type": "array", "items": { - "type": "string" - } + "$ref": "#/definitions/OrganizationMember" + }, + "title": "The collection of organization members" }, - "version": { - "type": "string", - "format": "uint64" + "limit": { + "type": "integer", + "format": "int64", + "title": "The limit in the request" }, - "active_deployment_id": { + "offset": { + "type": "integer", + "format": "int64", + "title": "The offset in the request" + }, + "count": { + "type": "integer", + "format": "int64", + "title": "The total number of items" + } + } + }, + "Organization.Status": { + "type": "string", + "enum": [ + "WARNING", + "LOCKED", + "ACTIVE", + "DEACTIVATING", + "DEACTIVATED", + "DELETING", + "DELETED" + ], + "default": "WARNING" + }, + "OrganizationMember": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "latest_deployment_id": { + "organization_id": { "type": "string" }, - "last_provisioned_deployment_id": { + "user_id": { "type": "string" }, - "state": { - "$ref": "#/definitions/ServiceState", - "title": "Legacy stuff" + "external_id": { + "type": "string" + }, + "joined_at": { + "type": "string", + "format": "date-time" + }, + "role": { + "$ref": "#/definitions/UserRole.Role" + }, + "status": { + "$ref": "#/definitions/OrganizationMember.Status" }, - "life_cycle": { - "$ref": "#/definitions/ServiceLifeCycle" + "user": { + "$ref": "#/definitions/PublicUser" + }, + "organization": { + "$ref": "#/definitions/PublicOrganization" } } }, - "Service.Status": { + "OrganizationMember.Status": { "type": "string", "enum": [ - "STARTING", - "HEALTHY", - "DEGRADED", - "UNHEALTHY", - "DELETING", - "DELETED", - "PAUSING", - "PAUSED", - "RESUMING" + "INVALID", + "ACTIVE", + "DELETED" ], - "default": "STARTING" + "default": "INVALID" }, - "Service.Type": { + "Plan": { "type": "string", "enum": [ - "INVALID_TYPE", - "WEB", - "WORKER", - "DATABASE", - "SANDBOX" + "hobby", + "starter", + "startup", + "business", + "enterprise", + "internal", + "hobby23", + "no_plan", + "pro", + "scale", + "partner_csp", + "partner_csp_unit" ], - "default": "INVALID_TYPE" + "default": "hobby" }, - "ServiceEvent": { + "PublicOrganization": { "type": "object", "properties": { "id": { "type": "string" }, - "when": { - "type": "string", - "format": "date-time" + "name": { + "type": "string" }, - "organization_id": { + "plan": { + "$ref": "#/definitions/Plan" + }, + "status": { + "$ref": "#/definitions/Organization.Status" + }, + "external_id": { + "type": "string" + } + } + }, + "PublicUser": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "service_id": { + "email": { "type": "string" }, - "type": { + "name": { "type": "string" }, - "message": { + "avatar_url": { "type": "string" }, - "metadata": { - "type": "object" + "github_id": { + "type": "string" + }, + "github_user": { + "type": "string" } } }, - "ServiceLifeCycle": { + "RemoveOrganizationMemberReply": { "type": "object", "properties": { - "delete_after_sleep": { - "type": "integer", - "format": "int64" - }, - "delete_after_create": { - "type": "integer", - "format": "int64" + "member": { + "$ref": "#/definitions/OrganizationMember" } } }, - "ServiceListItem": { + "UserRole.Role": { + "type": "string", + "enum": [ + "INVALID", + "OWNER" + ], + "default": "INVALID" + }, + "CheckCouponReply": { "type": "object", "properties": { - "id": { - "type": "string" - }, "name": { "type": "string" }, - "type": { - "$ref": "#/definitions/Service.Type" - }, - "organization_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" - } + "percent_off": { + "type": "number", + "format": "float" }, - "version": { + "amount_off": { "type": "string", - "format": "uint64", - "title": "A version updated whenever this state changes (useful for caching)" - }, - "state": { - "$ref": "#/definitions/ServiceState" + "format": "int64" }, - "active_deployment_id": { + "currency": { "type": "string" - }, - "latest_deployment_id": { + } + } + }, + "RedeemCouponReply": { + "type": "object" + }, + "RedeemCouponRequest": { + "type": "object", + "properties": { + "code": { "type": "string" - }, - "life_cycle": { - "$ref": "#/definitions/ServiceLifeCycle" } } }, - "ServiceState": { + "CreateOrganizationInvitationReply": { "type": "object", "properties": { - "desired_deployment": { - "$ref": "#/definitions/DesiredDeployment" - }, - "auto_release": { - "$ref": "#/definitions/AutoRelease" + "invitation": { + "$ref": "#/definitions/OrganizationInvitation", + "title": "The organization invitation sent" } } }, - "TriggerDeploymentMetadata": { + "CreateOrganizationInvitationRequest": { "type": "object", "properties": { - "type": { - "$ref": "#/definitions/TriggerDeploymentMetadata.TriggerType" - }, - "actor": { - "$ref": "#/definitions/TriggerDeploymentMetadata.ActorType" - }, - "git": { - "$ref": "#/definitions/TriggerGitDeploymentMetadata" + "email": { + "type": "string", + "title": "The email of the person to invite" } } }, - "TriggerDeploymentMetadata.ActorType": { - "type": "string", - "enum": [ - "UNKNOWN_ACTOR", - "USER", - "SYSTEM" - ], - "default": "UNKNOWN_ACTOR" + "DeleteOrganizationInvitationReply": { + "type": "object" }, - "TriggerDeploymentMetadata.TriggerType": { - "type": "string", - "enum": [ - "UNKNOWN_TYPE", - "GIT", - "RESUME", - "DATABASE_SYNC" - ], - "default": "UNKNOWN_TYPE" + "GetOrganizationInvitationReply": { + "type": "object", + "properties": { + "invitation": { + "$ref": "#/definitions/OrganizationInvitation" + } + } }, - "TriggerGitDeploymentMetadata": { + "ListOrganizationInvitationsReply": { "type": "object", "properties": { - "provider": { - "$ref": "#/definitions/TriggerGitDeploymentMetadata.Provider" + "invitations": { + "type": "array", + "items": { + "$ref": "#/definitions/OrganizationInvitation" + }, + "title": "The collection of organization invitations" }, - "repository": { - "type": "string" + "limit": { + "type": "integer", + "format": "int64", + "title": "The limit in the request" }, - "branch": { + "offset": { + "type": "integer", + "format": "int64", + "title": "The offset in the request" + }, + "count": { + "type": "integer", + "format": "int64", + "title": "The total number of items" + } + } + }, + "OrganizationInvitation": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "sha": { + "email": { "type": "string" }, - "message": { + "role": { + "$ref": "#/definitions/UserRole.Role" + }, + "status": { + "$ref": "#/definitions/OrganizationInvitation.Status" + }, + "expires_at": { + "type": "string", + "format": "date-time" + }, + "organization_id": { "type": "string" }, - "sender_username": { + "organization": { + "$ref": "#/definitions/PublicOrganization" + }, + "invitee_id": { "type": "string" }, - "sender_avatar_url": { - "type": "string" + "invitee": { + "$ref": "#/definitions/PublicUser" }, - "sender_profile_url": { + "inviter_id": { "type": "string" + }, + "inviter": { + "$ref": "#/definitions/PublicUser" } } }, - "TriggerGitDeploymentMetadata.Provider": { + "OrganizationInvitation.Status": { "type": "string", "enum": [ - "UNKNOWN", - "GITHUB" + "INVALID", + "PENDING", + "ACCEPTED", + "REFUSED", + "EXPIRED" ], - "default": "UNKNOWN" + "default": "INVALID" }, - "UpdateService": { + "ResendOrganizationInvitationReply": { "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" + "invitation": { + "$ref": "#/definitions/OrganizationInvitation", + "title": "The organization invitation resent" } } }, - "UpdateServiceReply": { + "DomainLoadBalancerQuotas": { "type": "object", "properties": { - "service": { - "$ref": "#/definitions/Service", - "title": "The entity updated" + "max_koyeb": { + "type": "integer", + "format": "int64" } } }, - "UpdateServiceScalingReply": { + "GetQuotasReply": { "type": "object", - "title": "Empty reply - success is indicated by no error" - }, - "CancelDeploymentReply": { - "type": "object" + "properties": { + "quotas": { + "$ref": "#/definitions/Quotas" + } + } }, - "DeploymentEvent": { + "LifecycleQuotas": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "when": { - "type": "string", - "format": "date-time" + "delete_after_sleep_min": { + "type": "integer", + "format": "int64", + "title": "delete after sleep limits" }, - "organization_id": { - "type": "string" + "delete_after_sleep_max": { + "type": "integer", + "format": "int64" }, - "deployment_id": { - "type": "string" + "delete_after_create_min": { + "type": "integer", + "format": "int64", + "title": "delete after create limits" }, - "type": { - "type": "string" + "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)." }, - "message": { - "type": "string" + "max_volume_size": { + "type": "integer", + "format": "int64", + "description": "MaxVolumeSize for one volume (in Gigabyte / GB)." }, - "metadata": { - "type": "object" + "max_per_instance_size": { + "type": "integer", + "format": "int64", + "description": "MaxPerInstanceSize for all volumes on an instance (in Gigabyte / GB)." } } }, - "DeploymentListItem": { + "Quotas": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "created_at": { + "apps": { "type": "string", - "format": "date-time" + "format": "int64" }, - "updated_at": { + "services": { "type": "string", - "format": "date-time" + "format": "int64" }, - "allocated_at": { + "domains": { "type": "string", - "format": "date-time" + "format": "int64", + "title": "Deprecated, use custom_domains instead" }, - "started_at": { + "services_by_app": { "type": "string", - "format": "date-time" + "format": "int64" }, - "succeeded_at": { + "service_provisioning_concurrency": { "type": "string", - "format": "date-time" + "format": "int64" }, - "terminated_at": { + "memory_mb": { "type": "string", - "format": "date-time" + "format": "int64" }, - "organization_id": { - "type": "string" + "instance_types": { + "type": "array", + "items": { + "type": "string" + } }, - "app_id": { - "type": "string" + "regions": { + "type": "array", + "items": { + "type": "string" + } }, - "service_id": { - "type": "string" + "max_organization_members": { + "type": "string", + "format": "int64" }, - "parent_id": { - "type": "string" + "max_instances_by_type": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "int64" + } }, - "child_id": { - "type": "string" + "persistent_volumes_by_region": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/PersistentVolumeQuotas" + } }, - "status": { - "$ref": "#/definitions/Deployment.Status" + "custom_domains": { + "type": "string", + "format": "int64" }, - "metadata": { - "$ref": "#/definitions/DeploymentMetadata" + "domains_load_balancer": { + "$ref": "#/definitions/DomainLoadBalancerQuotas" }, - "definition": { - "$ref": "#/definitions/DeploymentDefinition" + "metrics_retention": { + "type": "integer", + "format": "int32", + "title": "Time in days" }, - "messages": { + "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" }, - "provisioning_info": { - "$ref": "#/definitions/DeploymentProvisioningInfo" + "proxy_ports": { + "type": "integer", + "format": "int64" }, - "database_info": { - "$ref": "#/definitions/DeploymentDatabaseInfo" + "scale_to_zero": { + "$ref": "#/definitions/ScaleToZeroQuotas" }, - "version": { + "archives": { "type": "string", - "format": "uint64" + "format": "int64" }, - "deployment_group": { - "type": "string" - } - } - }, - "GetDeploymentReply": { - "type": "object", - "properties": { - "deployment": { - "$ref": "#/definitions/Deployment" + "archive_max_size_mb": { + "type": "string", + "format": "int64" + }, + "lifecycle": { + "$ref": "#/definitions/LifecycleQuotas" + }, + "max_projects": { + "type": "string", + "format": "int64" } } }, - "GetDeploymentScalingReply": { + "ScaleToZeroQuotas": { "type": "object", "properties": { - "replicas": { - "type": "array", - "items": { - "$ref": "#/definitions/GetDeploymentScalingReplyItem" - }, - "title": "The replicas" + "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" } } }, - "GetDeploymentScalingReplyItem": { + "DeleteUserReply": { "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;" + "user": { + "$ref": "#/definitions/User" } } }, - "Instance": { + "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" }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "organization_id": { + "email": { "type": "string" }, - "app_id": { + "avatar_url": { "type": "string" }, - "service_id": { - "type": "string" + "two_factor_authentication": { + "type": "boolean" }, - "regional_deployment_id": { - "type": "string" + "last_login": { + "type": "string", + "format": "date-time" }, - "allocation_id": { + "last_login_ip": { "type": "string" }, - "type": { - "type": "string" + "updated_at": { + "type": "string", + "format": "date-time" }, - "replica_index": { - "type": "integer", - "format": "int64" + "created_at": { + "type": "string", + "format": "date-time" }, - "region": { - "type": "string" + "newsletter_subscribed": { + "type": "boolean" }, - "datacenter": { + "github_id": { "type": "string" }, - "hypervisor": { + "github_user": { "type": "string" }, - "status": { - "$ref": "#/definitions/Instance.Status" - }, - "messages": { + "flags": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/UserFlags" } }, - "started_at": { - "type": "string", - "format": "date-time" - }, - "succeeded_at": { - "type": "string", - "format": "date-time" + "name": { + "type": "string" }, - "terminated_at": { - "type": "string", - "format": "date-time" + "email_validated": { + "type": "boolean" }, - "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." + "trialed": { + "type": "boolean" } - } + }, + "title": "Represent a User" }, - "Instance.Status": { + "UserFlags": { "type": "string", "enum": [ - "ALLOCATING", - "STARTING", - "HEALTHY", - "UNHEALTHY", - "STOPPING", - "STOPPED", - "ERROR", - "SLEEPING" + "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": "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" - } - } + "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" }, - "ListDeploymentsReply": { + "LoginReply": { "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" + "token": { + "$ref": "#/definitions/Token" } } }, - "CreateStageAttemptReply": { - "type": "object" - }, - "DeclareStageProgressReply": { - "type": "object" - }, - "DeclareStepProgressReply": { - "type": "object" - }, - "VerifyDockerImageReply": { + "LoginRequest": { "type": "object", + "example": { + "email": "john@snow.com", + "password": "..." + }, "properties": { - "success": { - "type": "boolean", - "title": "Whether the image is accessible or not" + "email": { + "type": "string", + "title": "User email" }, - "reason": { + "password": { "type": "string", - "title": "(Optional) If the image is not accessible, the reason" + "title": "User password" }, - "code": { - "$ref": "#/definitions/VerifyDockerImageReply.ErrCode", - "title": "(Optional) If the image is not accessible, return an error code" + "organization_id": { + "type": "string", + "title": "(Optional) Login into this organization" } } }, - "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" + "LogoutReply": { + "type": "object" }, - "AzureContainerRegistryConfiguration": { + "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": { - "registry_name": { + "id": { "type": "string" }, - "username": { + "user_id": { "type": "string" }, - "password": { + "organization_id": { "type": "string" + }, + "expires_at": { + "type": "string", + "format": "date-time" } } }, - "CreateSecret": { + "ConfirmOrganizationActionReply": { + "type": "object" + }, + "CreateCredential": { "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" + "type": "string", + "title": "Credential name" }, - "gcp_container_registry": { - "$ref": "#/definitions/GCPContainerRegistryConfiguration" + "description": { + "type": "string", + "title": "Credential description" }, - "azure_container_registry": { - "$ref": "#/definitions/AzureContainerRegistryConfiguration" + "type": { + "$ref": "#/definitions/Credential.Type", + "title": "Credential type" }, - "project_id": { + "organization_id": { "type": "string", - "title": "(Optional) The project ID to associate with the secret" + "title": "Organization id for user credential" } } }, - "CreateSecretReply": { + "CreateCredentialReply": { "type": "object", "properties": { - "secret": { - "$ref": "#/definitions/Secret" + "credential": { + "$ref": "#/definitions/Credential" } } }, - "DatabaseRolePassword": { + "Credential": { "type": "object", "properties": { - "username": { + "id": { "type": "string" }, - "password": { + "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" } } }, - "DeleteSecretReply": { + "Credential.Type": { + "type": "string", + "enum": [ + "INVALID", + "USER", + "ORGANIZATION" + ], + "default": "INVALID" + }, + "DeleteCredentialReply": { "type": "object" }, - "DigitalOceanRegistryConfiguration": { + "GetCredentialReply": { "type": "object", "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" + "credential": { + "$ref": "#/definitions/Credential" } } }, - "DockerHubRegistryConfiguration": { + "ListCredentialsReply": { "type": "object", "properties": { - "username": { - "type": "string" + "credentials": { + "type": "array", + "items": { + "$ref": "#/definitions/Credential" + } }, - "password": { - "type": "string" + "limit": { + "type": "integer", + "format": "int64" + }, + "offset": { + "type": "integer", + "format": "int64" + }, + "count": { + "type": "integer", + "format": "int64" } } }, - "GCPContainerRegistryConfiguration": { + "UpdateCredentialReply": { "type": "object", "properties": { - "keyfile_content": { - "type": "string" - }, - "url": { - "type": "string" + "credential": { + "$ref": "#/definitions/Credential" } } }, - "GetSecretReply": { + "CreateProject": { "type": "object", "properties": { - "secret": { - "$ref": "#/definitions/Secret" + "name": { + "type": "string", + "title": "Project name" + }, + "description": { + "type": "string", + "title": "Project description" } } }, - "GitHubRegistryConfiguration": { + "CreateProjectReply": { "type": "object", "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" + "project": { + "$ref": "#/definitions/Project" } } }, - "GitLabRegistryConfiguration": { + "DeleteProjectReply": { + "type": "object" + }, + "GetProjectReply": { "type": "object", "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" + "project": { + "$ref": "#/definitions/Project" } } }, - "ListSecretsReply": { + "ListProjectsReply": { "type": "object", "properties": { - "secrets": { + "projects": { "type": "array", "items": { - "$ref": "#/definitions/Secret" + "$ref": "#/definitions/Project" } }, "limit": { @@ -18634,253 +19093,254 @@ "offset": { "type": "integer", "format": "int64" - }, - "count": { - "type": "integer", - "format": "int64" } } }, - "PrivateRegistryConfiguration": { + "Project": { "type": "object", "properties": { - "username": { + "id": { "type": "string" }, - "password": { + "name": { "type": "string" }, - "url": { + "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" + } + } + }, + "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" } } }, - "RevealSecretReply": { + "GetOrganizationSummaryReply": { "type": "object", "properties": { - "value": {} + "summary": { + "$ref": "#/definitions/OrganizationSummary", + "title": "Organization usage summary" + } } }, - "Secret": { + "InstancesSummary": { "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": { + "total": { "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" + "format": "int64", + "title": "Total number of instances" }, - "database_role_password": { - "$ref": "#/definitions/DatabaseRolePassword" - } - } - }, - "SecretType": { - "type": "string", - "enum": [ - "SIMPLE", - "REGISTRY", - "MANAGED" - ], - "default": "SIMPLE" - }, - "UpdateSecretReply": { - "type": "object", - "properties": { - "secret": { - "$ref": "#/definitions/Secret" + "by_type": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "int64" + }, + "title": "Number of instances grouped by type" } } }, - "CreateDomain": { + "MembersSummary": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/Domain.Type" - }, - "app_id": { + "total": { "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." + "format": "int64", + "title": "Number of members" }, - "project_id": { - "type": "string", - "title": "(Optional) The project ID to associate with the domain" + "invitations_by_status": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "int64" + }, + "title": "Number of invitations grouped by status" } } }, - "CreateDomainReply": { + "NeonPostgresSummary": { "type": "object", "properties": { - "domain": { - "$ref": "#/definitions/Domain" + "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" } } }, - "DeleteDomainReply": { - "type": "object" - }, - "Domain": { + "OrganizationSummary": { "type": "object", "properties": { - "id": { - "type": "string" - }, "organization_id": { "type": "string" }, - "name": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" + "instances": { + "$ref": "#/definitions/InstancesSummary" }, - "updated_at": { - "type": "string", - "format": "date-time" + "apps": { + "$ref": "#/definitions/AppsSummary" }, - "status": { - "$ref": "#/definitions/Domain.Status" + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ServiceSummary" + }, + "title": "Number of services grouped by type" }, - "type": { - "$ref": "#/definitions/Domain.Type" + "domains": { + "$ref": "#/definitions/DomainsSummary" }, - "app_id": { - "type": "string" + "secrets": { + "$ref": "#/definitions/SecretsSummary" }, - "deployment_group": { - "type": "string" + "neon_postgres": { + "$ref": "#/definitions/NeonPostgresSummary" }, - "verified_at": { + "members": { + "$ref": "#/definitions/MembersSummary" + } + } + }, + "SecretsSummary": { + "type": "object", + "properties": { + "total": { "type": "string", - "format": "date-time" - }, - "intended_cname": { - "type": "string" - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } + "format": "int64", + "title": "Total number of secrets" }, - "version": { + "by_type": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "int64" + }, + "title": "Number of secrets grouped by type" + } + } + }, + "ServiceSummary": { + "type": "object", + "properties": { + "total": { "type": "string", - "format": "uint64" - }, - "cloudflare": { - "$ref": "#/definitions/Domain.LoadBalancerCloudflare" - }, - "koyeb": { - "$ref": "#/definitions/Domain.LoadBalancerKoyeb" + "format": "int64", + "title": "Total number of services" }, - "project_id": { - "type": "string", - "description": "The project ID this domain belongs to. Empty if the domain is organization-level." + "by_status": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "int64" + }, + "title": "Number of services grouped by status" } } }, - "Domain.LoadBalancerCloudflare": { - "type": "object" - }, - "Domain.LoadBalancerKoyeb": { + "ConfirmPaymentAuthorizationReply": { "type": "object", "properties": { - "request_timeout_seconds": { - "type": "integer", - "format": "int64", - "title": "Between 100 and 900" + "payment_method": { + "$ref": "#/definitions/PaymentMethod" } } }, - "Domain.Status": { - "type": "string", - "enum": [ - "PENDING", - "ACTIVE", - "ERROR", - "DELETING", - "DELETED" - ], - "default": "PENDING" + "CreatePaymentAuthorizationReply": { + "type": "object", + "properties": { + "payment_method": { + "$ref": "#/definitions/PaymentMethod" + } + } }, - "Domain.Type": { - "type": "string", - "enum": [ - "AUTOASSIGNED", - "CUSTOM" - ], - "default": "AUTOASSIGNED", - "title": "- AUTOASSIGNED: Domain like -.koyeb.app" + "CreatePaymentAuthorizationRequest": { + "type": "object" }, - "GetDomainReply": { + "DeletePaymentMethodReply": { + "type": "object" + }, + "GetPaymentMethodReply": { "type": "object", "properties": { - "domain": { - "$ref": "#/definitions/Domain" + "payment_method": { + "$ref": "#/definitions/PaymentMethod" } } }, - "ListDomainsReply": { + "ListPaymentMethodsReply": { "type": "object", "properties": { - "domains": { + "payment_methods": { "type": "array", "items": { - "$ref": "#/definitions/Domain" - } + "$ref": "#/definitions/PaymentMethod" + }, + "title": "The collection of payment methods" }, "limit": { "type": "integer", @@ -18899,42 +19359,12 @@ } } }, - "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" - } - } - }, - "App": { + "PaymentMethod": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { - "type": "string" - }, - "organization_id": { - "type": "string" - }, "created_at": { "type": "string", "format": "date-time" @@ -18943,28 +19373,21 @@ "type": "string", "format": "date-time" }, - "started_at": { - "type": "string", - "format": "date-time" - }, - "succeeded_at": { + "version": { "type": "string", - "format": "date-time" + "format": "uint64" }, - "paused_at": { - "type": "string", - "format": "date-time" + "organization_id": { + "type": "string" }, - "resumed_at": { - "type": "string", - "format": "date-time" + "type": { + "type": "string" }, - "terminated_at": { - "type": "string", - "format": "date-time" + "provider": { + "type": "string" }, "status": { - "$ref": "#/definitions/App.Status" + "$ref": "#/definitions/PaymentMethod.Status" }, "messages": { "type": "array", @@ -18972,623 +19395,382 @@ "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": { + "stripe_payment_method_id": { "type": "string" }, - "when": { + "authorization_verified_at": { "type": "string", "format": "date-time" }, - "organization_id": { - "type": "string" + "authorization_canceled_at": { + "type": "string", + "format": "date-time" }, - "app_id": { + "authorization_stripe_payment_intent_id": { "type": "string" }, - "type": { + "authorization_stripe_payment_intent_client_secret": { "type": "string" }, - "message": { + "card_brand": { "type": "string" }, - "metadata": { - "type": "object" - } - } - }, - "AppLifeCycle": { - "type": "object", - "properties": { - "delete_when_empty": { - "type": "boolean" - } - } - }, - "AppListItem": { - "type": "object", - "properties": { - "id": { + "card_country": { "type": "string" }, - "name": { + "card_funding": { "type": "string" }, - "organization_id": { + "card_fingerprint": { "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": { + "card_last_digits": { "type": "string" }, - "life_cycle": { - "$ref": "#/definitions/AppLifeCycle" + "card_expiration_month": { + "type": "integer", + "format": "int64" }, - "project_id": { - "type": "string", - "title": "(Optional) The project ID to associate with the app" - } - } - }, - "CreateAppReply": { - "type": "object", - "properties": { - "app": { - "$ref": "#/definitions/App", - "title": "The entity created" + "card_expiration_year": { + "type": "integer", + "format": "int64" } } }, - "DeleteAppReply": { - "type": "object" - }, - "GetAppReply": { - "type": "object", - "properties": { - "app": { - "$ref": "#/definitions/App", - "title": "The App retrieved" - } - } + "PaymentMethod.Status": { + "type": "string", + "enum": [ + "INVALID", + "CREATED", + "AUTHORIZED", + "DECLINED", + "CANCELED", + "EXPIRED", + "UNCHECKED" + ], + "default": "INVALID" }, - "ListAppEventsReply": { + "AcceptOrganizationInvitationReply": { "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" + "properties": { + "invitation": { + "$ref": "#/definitions/OrganizationInvitation", + "title": "The organization invitation accepted" } } }, - "ListAppsReply": { + "Action": { + "type": "string", + "enum": [ + "signin", + "signup", + "register" + ], + "default": "signin" + }, + "Budget": { "type": "object", "properties": { - "apps": { + "amount": { + "type": "string", + "format": "int64" + }, + "thresholds": { "type": "array", "items": { - "$ref": "#/definitions/AppListItem" + "type": "string", + "format": "int64" } - }, - "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": { + "CannyAuthReply": { "type": "object", "properties": { - "name": { + "token": { "type": "string" - }, - "life_cycle": { - "$ref": "#/definitions/AppLifeCycle" } } }, - "UpdateAppReply": { + "CannyAuthRequest": { + "type": "object" + }, + "ClearIdenfyVerificationResultReply": { + "type": "object" + }, + "ClearIdenfyVerificationResultRequest": { "type": "object", "properties": { - "app": { - "$ref": "#/definitions/App", - "title": "The entity updated" + "user_id": { + "type": "string" + }, + "organization_id": { + "type": "string" } } }, - "CreatePersistentVolumeReply": { + "CreateAccessTokenReply": { "type": "object", "properties": { - "volume": { - "$ref": "#/definitions/PersistentVolume" + "token": { + "type": "string" } } }, - "CreatePersistentVolumeRequest": { + "CreateAccountRequest": { "type": "object", + "example": { + "email": "john@snow.com", + "password": "..." + }, "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" + "email": { + "type": "string" }, - "max_size": { - "type": "integer", - "format": "int64", - "title": "the size of the volume (in Gigabyte / GB)" + "password": { + "type": "string" }, - "snapshot_id": { - "type": "string", - "title": "(optional) the id of the snapshot whence the volume comes from" + "name": { + "type": "string" }, - "project_id": { - "type": "string", - "title": "(Optional) The project ID to associate with the volume" + "captcha": { + "type": "string" } - } + }, + "description": "Create new account", + "title": "Create new account", + "required": [ + "email", + "password" + ] }, - "DeletePersistentVolumeReply": { + "CreateBudgetReply": { "type": "object", "properties": { - "volume": { - "$ref": "#/definitions/PersistentVolume" + "budget": { + "$ref": "#/definitions/Budget" } } }, - "GetPersistentVolumeReply": { + "CreateOrganizationReply": { "type": "object", "properties": { - "volume": { - "$ref": "#/definitions/PersistentVolume" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "ListPersistentVolumeEventsReply": { + "CreateOrganizationRequest": { "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" + "name": { + "type": "string" } } }, - "ListPersistentVolumesReply": { + "DeactivateOrganizationReply": { "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" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "PersistentVolume": { + "DeclineOrganizationInvitationReply": { "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" + "invitation": { + "$ref": "#/definitions/OrganizationInvitation", + "title": "The organization invitation declined" } - }, - "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" + "DeleteBudgetReply": { + "type": "object" }, - "PersistentVolumeEvent": { + "DeleteOrganizationReply": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "when": { - "type": "string", - "format": "date-time" - }, - "organization_id": { + "organization": { + "$ref": "#/definitions/Organization" + } + } + }, + "DiscourseAuthReply": { + "type": "object", + "properties": { + "sso": { "type": "string" }, - "persistent_volume_id": { + "sig": { "type": "string" - }, - "type": { + } + } + }, + "DiscourseAuthRequest": { + "type": "object", + "properties": { + "payload": { "type": "string" }, - "message": { + "sig": { "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": { + "GetBudgetReply": { "type": "object", "properties": { - "volume": { - "$ref": "#/definitions/PersistentVolume" + "budget": { + "$ref": "#/definitions/Budget" } } }, - "Archive": { + "GetGithubInstallationReply": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "The archive id, that can be referenced when creating or updating a service." + "installation_id": { + "type": "string" }, - "organization_id": { - "type": "string", - "description": "Organization owning the archive." + "installation_url": { + "type": "string" }, - "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`." + "name": { + "type": "string" }, - "size": { - "type": "string", - "format": "uint64", - "description": "The provisioned space for the archive." + "avatar_url": { + "type": "string" }, - "created_at": { + "status": { + "$ref": "#/definitions/kgitproxy.GithubInstallation.Status" + }, + "installed_at": { "type": "string", - "format": "date-time", - "description": "Date of creation of the archive." + "format": "date-time" }, - "deleted_at": { + "suspended_at": { "type": "string", - "format": "date-time", - "description": "This field is automatically set by Koyeb when the\narchive is garbage collected." + "format": "date-time" + }, + "indexing_status": { + "$ref": "#/definitions/kgitproxy.IndexingStatus" + }, + "indexed_repositories": { + "type": "integer", + "format": "int64" + }, + "total_repositories": { + "type": "integer", + "format": "int64" } } }, - "CreateArchive": { + "GetIdenfyTokenReply": { "type": "object", "properties": { - "size": { - "type": "string", - "format": "uint64", - "description": "How much space to provision for the archive, in bytes." - }, - "project_id": { - "type": "string", - "title": "(Optional) The project ID to associate with the archive" + "auth_token": { + "type": "string" } } }, - "CreateArchiveReply": { + "GetOAuthOptionsReply": { "type": "object", "properties": { - "archive": { - "$ref": "#/definitions/Archive" + "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" } } }, - "GetInstanceReply": { + "GetUserOrganizationInvitationReply": { "type": "object", "properties": { - "instance": { - "$ref": "#/definitions/Instance" + "invitation": { + "$ref": "#/definitions/OrganizationInvitation" } } }, - "InstanceEvent": { + "GetUserSettingsReply": { "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" + "settings": { + "$ref": "#/definitions/UserSettings" } } }, - "InstanceListItem": { + "GithubInstallationReply": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { + "app_name": { "type": "string", - "format": "date-time" - }, - "organization_id": { - "type": "string" + "title": "The github app name" }, "app_id": { - "type": "string" - }, - "service_id": { - "type": "string" - }, - "regional_deployment_id": { - "type": "string" + "type": "string", + "format": "int64", + "title": "The github app id" }, - "allocation_id": { - "type": "string" + "url": { + "type": "string", + "title": "The url to start the installation flow" }, - "type": { + "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" }, - "replica_index": { - "type": "integer", - "format": "int64" - }, - "region": { + "name": { "type": "string" }, - "datacenter": { + "message": { "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": { + "ListUserOrganizationInvitationsReply": { "type": "object", "properties": { - "events": { + "invitations": { "type": "array", "items": { - "$ref": "#/definitions/InstanceEvent" + "$ref": "#/definitions/OrganizationInvitation" }, - "title": "The collection of events" + "title": "The collection of organization invitations" }, "limit": { "type": "integer", @@ -19600,25 +19782,22 @@ "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" + "count": { + "type": "integer", + "format": "int64", + "title": "The total number of items" } } }, - "ListInstancesReply": { + "ListUserOrganizationsReply": { "type": "object", "properties": { - "instances": { + "organizations": { "type": "array", "items": { - "$ref": "#/definitions/InstanceListItem" + "$ref": "#/definitions/Organization" }, - "title": "The collection of instances" + "title": "The collection of organizations" }, "limit": { "type": "integer", @@ -19630,778 +19809,486 @@ "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" + "has_next": { + "type": "boolean", + "title": "If there is more items after in the collection" } } }, - "ReviewOrganizationCapacityReply": { + "LoginMethodReply": { "type": "object", "properties": { - "has_capacity": { - "type": "boolean" + "method": { + "$ref": "#/definitions/LoginMethodReply.Method" } } }, - "ReviewOrganizationCapacityRequest": { + "LoginMethodReply.Method": { + "type": "string", + "enum": [ + "KOYEB", + "WORKOS" + ], + "default": "KOYEB" + }, + "ManageReply": { "type": "object", "properties": { - "plan": { + "url": { "type": "string" - }, - "trialing": { - "type": "boolean" } } }, - "ComposeReply": { + "NextInvoiceReply": { "type": "object", "properties": { - "app": { - "$ref": "#/definitions/App" + "stripe_invoice": { + "type": "object" }, - "services": { + "lines": { "type": "array", "items": { - "$ref": "#/definitions/Service" + "$ref": "#/definitions/NextInvoiceReply.Line" } - } - } - }, - "CreateCompose": { - "type": "object", - "properties": { - "app": { - "$ref": "#/definitions/CreateApp" }, - "services": { + "discounts": { "type": "array", "items": { - "$ref": "#/definitions/CreateService" + "$ref": "#/definitions/NextInvoiceReply.Discount" } } } }, - "AppUsage": { + "NextInvoiceReply.Discount": { "type": "object", "properties": { - "app_id": { - "type": "string" + "type": { + "$ref": "#/definitions/NextInvoiceReply.Discount.Type" }, - "app_name": { + "name": { "type": "string" }, - "services": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceUsage" - } - }, - "databases": { - "type": "array", - "items": { - "$ref": "#/definitions/DatabaseUsage" - } + "amount": { + "type": "string", + "format": "int64" } } }, - "DatabaseUsage": { + "NextInvoiceReply.Discount.Type": { + "type": "string", + "enum": [ + "PERCENT_OFF", + "AMOUNT_OFF" + ], + "default": "PERCENT_OFF" + }, + "NextInvoiceReply.Line": { "type": "object", "properties": { - "service_id": { - "type": "string" + "amount_excluding_tax": { + "type": "integer", + "format": "int32" }, - "service_name": { + "period": { + "$ref": "#/definitions/NextInvoiceReply.Line.Period" + }, + "plan_nickname": { "type": "string" }, - "compute_time_seconds": { - "type": "integer", - "format": "int64" + "price": { + "$ref": "#/definitions/NextInvoiceReply.Line.Price" }, - "data_storage_megabytes_hours": { + "quantity": { "type": "integer", - "format": "int64" + "format": "int32" } } }, - "DatabaseUsageDetails": { + "NextInvoiceReply.Line.Period": { "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": { + "start": { "type": "string", "format": "date-time" }, - "terminated_at": { + "end": { "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": { + "NextInvoiceReply.Line.Price": { "type": "object", "properties": { - "usage": { - "$ref": "#/definitions/Usage", - "title": "The computed usage of instances per month" + "unit_amount_decimal": { + "type": "number", + "format": "double" } } }, - "InstanceUsage": { + "OAuthCallbackReply": { "type": "object", "properties": { - "duration_seconds": { - "type": "integer", - "format": "int64" + "token": { + "$ref": "#/definitions/Token", + "title": "A jwt token to be used for session" } } }, - "PeriodUsage": { + "OAuthCallbackRequest": { "type": "object", "properties": { - "starting_time": { + "state": { "type": "string", - "format": "date-time" + "title": "The state created at the origin of the OAuth flow" }, - "ending_time": { + "code": { "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" + "title": "The code returned by the OAuth provider" }, - "regions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/RegionUsage" - } + "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." } } }, - "Usage": { + "OAuthProvider": { "type": "object", "properties": { - "organization_id": { - "type": "string" + "id": { + "type": "string", + "title": "The name of the provider (.e.g github, google)" }, - "periods": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/PeriodUsage" - } + "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" } } }, - "UsageDetails": { + "Organization": { "type": "object", "properties": { - "organization_id": { + "id": { "type": "string" }, - "instance_id": { + "external_id": { "type": "string" }, - "app_id": { + "provisioning": { + "type": "boolean" + }, + "address1": { "type": "string" }, - "app_name": { + "address2": { "type": "string" }, - "service_id": { + "city": { "type": "string" }, - "service_name": { + "postal_code": { "type": "string" }, - "regional_deployment_id": { + "state": { "type": "string" }, - "region": { + "country": { "type": "string" }, - "deployment_id": { + "company": { + "type": "boolean" + }, + "vat_number": { "type": "string" }, - "instance_type": { + "billing_name": { "type": "string" }, - "duration_seconds": { - "type": "integer", - "format": "int64" + "billing_email": { + "type": "string" }, - "started_at": { - "type": "string", - "format": "date-time" + "name": { + "type": "string" }, - "terminated_at": { + "plan": { + "$ref": "#/definitions/Plan" + }, + "plan_updated_at": { "type": "string", "format": "date-time" - } - } - }, - "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" + "has_payment_method": { + "type": "boolean" }, - "offset": { - "type": "integer", - "format": "int64", - "title": "The offset in the request" + "subscription_id": { + "type": "string" }, - "count": { - "type": "integer", - "format": "int64", - "title": "The total number of items" - } - } - }, - "Region": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "The id of the region" + "current_subscription_id": { + "type": "string" }, - "name": { - "type": "string", - "title": "The name of the region" + "latest_subscription_id": { + "type": "string" }, - "coordinates": { - "type": "array", - "items": { - "type": "string" - }, - "title": "The coordinates of the region (lat/long)" + "signup_qualification": { + "type": "object" }, "status": { - "type": "string", - "title": "The status of the region" + "$ref": "#/definitions/Organization.Status" }, - "instances": { - "type": "array", - "items": { - "type": "string" - }, - "title": "A list of instances available in this region" + "status_message": { + "$ref": "#/definitions/OrganizationDetailedStatus" }, - "datacenters": { - "type": "array", - "items": { - "type": "string" - }, - "title": "A list of datacenters available in this region" + "deactivation_reason": { + "$ref": "#/definitions/Organization.DeactivationReason" }, - "volumes_enabled": { - "type": "boolean", - "title": "Are the volumes enabled for this instance type" + "verified": { + "type": "boolean" }, - "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" + "qualifies_for_hobby23": { + "type": "boolean" }, - "name": { + "reprocess_after": { "type": "string", - "title": "The name of the region" + "format": "date-time" }, - "coordinates": { - "type": "array", - "items": { - "type": "string" - }, - "title": "The coordinates of the region (lat/long)" + "trialing": { + "type": "boolean" }, - "status": { + "trial_starts_at": { "type": "string", - "title": "The status of the region" + "format": "date-time" }, - "instances": { - "type": "array", - "items": { - "type": "string" - }, - "title": "A list of instances available in this region" + "trial_ends_at": { + "type": "string", + "format": "date-time" }, - "datacenters": { + "email_domain_allowlist": { "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." + "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" + }, + "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" + }, + "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" } } }, - "AvailabilityLevel": { - "type": "string", - "enum": [ - "UNKNOWN", - "LOW", - "MEDIUM", - "HIGH" - ], - "default": "UNKNOWN" + "UnscopeOrganizationTokenRequest": { + "type": "object" }, - "CatalogUsage": { + "UpdateBudgetReply": { "type": "object", "properties": { - "instances": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/InstanceAvailability" - } + "budget": { + "$ref": "#/definitions/Budget" } } }, - "InstanceAvailability": { + "UpdateOrganizationDefaultProjectReply": { "type": "object", "properties": { - "regions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/RegionAvailability" - } - }, - "availability": { - "$ref": "#/definitions/AvailabilityLevel" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "ListUsageReply": { + "UpdateOrganizationNameReply": { "type": "object", "properties": { - "usage": { - "$ref": "#/definitions/CatalogUsage", - "title": "The Usage retrieved" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "RegionAvailability": { + "UpdateOrganizationPlanReply": { "type": "object", "properties": { - "availability": { - "$ref": "#/definitions/AvailabilityLevel" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "CatalogGPUDetails": { + "UpdateOrganizationReply": { "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" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "CatalogInstance": { + "UpdatePasswordRequest": { "type": "object", + "example": { + "id": "...", + "password": "..." + }, "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" + "type": "string" }, - "light_sleep_enabled": { - "type": "boolean", - "title": "Is light sleep enabled for this instance type" + "password": { + "type": "string" } } }, - "CatalogInstanceListItem": { + "UpdateUserRequest.UserUpdateBody": { "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": "string" }, - "type": { - "type": "string", - "title": "The type of the instance (e.g. \"gpu\")" + "email": { + "type": "string" }, - "gpu": { - "$ref": "#/definitions/CatalogGPUDetails", - "title": "GPU details" + "current_password": { + "type": "string" }, - "service_types": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Allowed service types for this instance (e.g. [\"web\", \"worker\"])" + "password": { + "type": "string" }, - "volumes_enabled": { - "type": "boolean", - "title": "Are the volumes enabled for this instance type" + "newsletter_subscribed": { + "type": "boolean" }, - "light_sleep_enabled": { - "type": "boolean", - "title": "Is light sleep enabled for this instance type" + "name": { + "type": "string" } } }, - "GetCatalogInstanceReply": { + "UpdateUserSettingsReply": { "type": "object", "properties": { - "instance": { - "$ref": "#/definitions/CatalogInstance", - "title": "The instance retrieved" + "settings": { + "$ref": "#/definitions/UserSettings" } } }, - "ListCatalogInstancesReply": { + "UpdateUserSettingsRequest": { "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" + "failed_deployment_email_notification": { + "type": "boolean", + "description": "(Optional) Toggle failed deployment email notification." } } }, - "DatacenterListItem": { + "UpsertSignupQualificationReply": { "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\"" + "organization": { + "$ref": "#/definitions/Organization" } } }, - "ListDatacentersReply": { + "UserReply": { "type": "object", "properties": { - "datacenters": { - "type": "array", - "items": { - "$ref": "#/definitions/DatacenterListItem" - } + "user": { + "$ref": "#/definitions/User" + } + } + }, + "UserSettings": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "failed_deployment_email_notification": { + "type": "boolean" } } }, + "Empty": { + "type": "object" + }, + "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" + }, "ksearch.App": { "type": "object", "properties": { @@ -20564,6 +20451,144 @@ "type": "string" } } + }, + "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" } }, "securityDefinitions": {